Messages in this thread | | | Date | Wed, 28 Feb 2007 23:30:28 +0300 | From | Oleg Nesterov <> | Subject | Re: [RFC][PATCH 1/3] Freezer: Fix vfork problem |
| |
On 02/28, Rafael J. Wysocki wrote: > > Okay, I have added a comment to freezer.h. Please have a look. > > > -extern void thaw_some_processes(int all); > +/* > + * The PF_FREEZER_SKIP flag should be set by a vfork parent right before it > + * calls wait_for_completion(&vfork) and reset right after it returns from this > + * function. Next, the parent should call try_to_freeze() to freeze itself > + * appropriately in case the child has exited before the freezing of tasks is > + * complete. However, we don't want kernel threads to be frozen in unexpected > + * places, so we allow them to block freeze_processes() instead or to set > + * PF_NOFREEZE if needed and PF_FREEZER_SKIP is only set for userland vfork > + * parents. Fortunately, in the ____call_usermodehelper() case the parent won't > + * really block freeze_processes(), since ____call_usermodehelper() (the child) > + * does a little before exec/exit and it can't be frozen before waking up the > + * parent. > + */
I think this comment is accurate and understandable, and I am not suggesting to change it.
However, please note that PF_FREEZER_SKIP can be used not only for vfork(). For example, it seems to me we can also use freezer_...count() to solve the problem with coredump. We can use the same "wait_for_completion_freezable" pattern in exit_mm() and in coredump_wait(). (i do not claim this is a best fix though).
Oleg.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |