Re: [PATCH 1/1] freezer: fix wait_event_freezable/__thaw_task races

From: Oleg Nesterov
Date: Sun Sep 11 2011 - 14:44:51 EST


On 09/11, Oleg Nesterov wrote:
>
> On 09/11, Tejun Heo wrote:
> >
> > On Thu, Sep 08, 2011 at 07:59:26PM +0200, Oleg Nesterov wrote:
> >
> > > > Yeap, with freezable_with_signal gone, this looks correct & simpler to
> > > > me
> > >
> > > I don't really understand this... set_freezable_with_signal() has a
> > > lot of problems, yes... But even if it wasn't removed this fix makes
> > > sense anyway, afaics.
> > >
> > > If freezable_with_signal caller does wait_event_freezable_timeout(),
> > > __retval becomes -ERESTARTSYS after freeze_task(). The next iteration
> > > will return 0 with the KERN_ERR message from schedule_timeout().
> >
> > Hmmm... but with the change, if a kthread gets TIF_SIGPENDING from
> > freezer and then thawed, it would not enter try_to_freeze() and thus
> > won't clear TIF_SIGPENDING.
>
> Ah yes, you are right, thanks. But once again, please note that in this
> case wait_event_freezable_timeout() is broken anyway.

OTOH, I forgot about wait_event_freezable(). It was racy, but mostly
worked. So yes, you are right, without "kill freezable_with_signal"
this patch is wrong.

I missed this, thanks.

Oleg.

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