Re: linux-next oops in __lock_acquire for process_one_work

From: Hugh Dickins
Date: Tue May 08 2012 - 14:12:01 EST


On Tue, 8 May 2012, Tejun Heo wrote:
> On Tue, May 08, 2012 at 03:03:22PM +0200, Peter Zijlstra wrote:
> > I think there's a problem if indeed we do silly things like small copies
> > like Hugh saw (why would gcc ever generate small copies for objects that
> > are naturally aligned and naturally sized?).
> >
> > Something like the below should fix that problem, but it doesn't explain
> > the observed issue..
>
> Hmmm.... Hugh, can you please verify whether this patch makes the
> problem go away somehow?

Sure, but I won't start the run until tonight, and it'll then take
a couple of days for us to be sure (sometimes it hit within the
hour, sometimes it would take half a day).

Certainly the principle, cleaning out the cache, looked sound.

>
> > @@ -1810,7 +1810,7 @@ __acquires(&gcwq->lock)
> > * lock freed" warnings as well as problems when looking into
> > * work->lockdep_map, make a copy and use that here.
> > */
> > - struct lockdep_map lockdep_map = work->lockdep_map;
> > + struct lockdep_map lockdep_map = lockdep_copy_map(&work->lockdep_map);
>
> If this is the correct fix for whatever reason, maybe we want the copy
> interface to be a bit more conventional? lockdep_copy_map(to, from)?

Please send me the version of patch you'd like to put in
(lest I make it up myself and you don't like the result).

Hugh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/