Re: cmpxchg() in kernel/workqueue.c breaks things

From: Andrew Morton
Date: Thu Dec 07 2006 - 11:38:35 EST


On Thu, 07 Dec 2006 11:46:24 +0000
David Howells <dhowells@xxxxxxxxxx> wrote:

> Andrew Morton <akpm@xxxxxxxx> wrote:
>
> > I don't see why the 2.6.19 logic needed changing.
> >
> > a) Nobody should be freeing the work_struct itself without running
> > flush_scheduled_work() and
> >
> > b) even if the work_struct _did_ get freed, the callback function won't
> > care, because there's nothing in that work_struct which it's interested
> > in.
>
> Erm... Did you mean that in reply to my suggestion that we don't need to use
> cmpxchg()?

I was referring to the core logic change in run-workqueue():

if (!test_bit(WORK_STRUCT_NOAUTOREL, &work->management))
work_release(work);
f(work);


-
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/