Re: [PATCH -mm] swsusp: freeze user space processes first

From: Ingo Molnar
Date: Sun Feb 05 2006 - 05:56:50 EST



* Rafael J. Wysocki <rjw@xxxxxxx> wrote:

> > The logic in that loop makes my brain burst.
> >
> > What happens if a process does vfork();sleep(100000000)?
>
> The freezing of processes will fail due to the timeout.
>
> Without the if (!p->vfork_done) it would fail too, because the child
> would be frozen and the parent would wait for the vfork completion in
> the TASK_UNINTERRUPTIBLE state (ie. unfreezeable). But in that case
> we have a race between the "freezer" and the child process (ie. if the
> child gets frozen before it completes the vfork completion, the paret
> will be unfreezeable) which sometimes leads to a failure when it
> should not. [We have a test case showing this.]

then i'd suggest to change the vfork implementation to make this code
freezable. Nothing that userspace does should cause freezing to fail.
If it does, we've designed things incorrectly on the kernel side.

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