Messages in this thread | | | Date | Tue, 12 Mar 2013 11:42:13 -0700 | Subject | Re: Regression with orderly_poweroff() | From | Linus Torvalds <> |
| |
On Tue, Mar 12, 2013 at 11:22 AM, Oleg Nesterov <oleg@redhat.com> wrote: > > And how this can help? The real problem is not GFP_KERNEL. > call_usermodehelper_exec(UMH_WAIT_EXEC) will block.
Well, it's probably a starting point.
You need to do the argument handling atomically, because you cannot delay that in a workqueue (the arguments will be long gone by the time the workqueue starts up). So I think the fix is a combination of your and Lucas' code, where you first do the setup atomically (copying the arguments and allocating that space with GFP_ATOMIC) and then you do a workqueue to actually do the real work of the usermode helper thing.
Linus
| |