Re: [PATCH 12/16] freezer: clean up freeze_processes() failure path

From: Tejun Heo
Date: Mon Aug 29 2011 - 03:28:18 EST


Hello,

On Sun, Aug 28, 2011 at 08:09:01PM +0200, Oleg Nesterov wrote:
> This was copied from cancel_, yes. but what this
> recalc_sigpending_and_wake() can or should do?
>
> It looks simply pointless. It can't clear TIF_SIGPENDING,
> it can only do the unneeded/spurious wake_up(INTERRUPTIBLE).

Yeah, I just copied it over. It seems it got confused between
recalc_sigpending() and recalc_sigpending_and_wake() where the latter
can't clear TIF_SIGPENDING. The signallable freezable kthread seems
quite fragile. Once TIF_SIGPENDING is set, the only way for it to be
cleared for a kthread is going through refrigerator and if freezing
gets canceled before that happens, the kthread will have stuck
TIF_SIGPENDING failing interruptible sleeps. We'll probably should
move recalc_sigpending() to the top of refrigerator.

But that said, I don't see any in-kernel user of
set_freezable_with_signal(). Rafael, is there scheduled to be some
new user of this API? It would be awesome if we can drop it.

Thanks.

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