Re: [PATCH][PPPOL2TP]: Fix SMP oops in pppol2tp driver

David Miller
2008-02-12T05:30:17Z

From: James Chapman <jchapman@katalix.com>
Date: Mon, 11 Feb 2008 23:41:18 +0000

> Jarek Poplawski wrote:
> > On Mon, Feb 11, 2008 at 10:19:35PM +0000, James Chapman wrote:
> > ...
> >> Below is example output from lockdep. The oops is reproducible when
> >> creating/deleting lots of sessions while passing data. The lock is being
> >> acquired for read and write in softirq contexts.
> >>
> >> Is there a better way to fix this?
> >>
> >> =================================
> >> [ INFO: inconsistent lock state ]
> >> 2.6.24-core2 #1
> >> ---------------------------------
> >> inconsistent {in-softirq-R} -> {softirq-on-W} usage.
> >> openl2tpd/3215 [HC0[0]:SC0[0]:HE1:SE1] takes:
> >> (&tunnel->hlist_lock){---?}, at: [<f8eea157>]
> >> pppol2tp_connect+0x517/0x6d0 [pppol2tp]
> >> {in-softirq-R} state was registered at:
> >
> > IMHO, according to this, disabling bh should be enough. And if it's
> > like in this report: only read_lock is taken from softirqs, then this
> > should be necessary to change only all write_locks to write_lock_bh
> > (of course unless somewhere bhs are disabled already). Unless I miss
> > something?!
>
> I thought so too. I tried _bh locks first and the problem still
> occurred. Maybe I'll try it again in case I messed something up.

I agree with Jarek here, I look at all the code paths that take
->hlist_lock and all of them are in user context or software
interrupts.

Please get a lockdep trace with the change to _bh intead of
hw interrupt protection so we can find out what that doesn't
work.

Thanks!