Messages in this thread Patch in this message | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCH] (2.4.25 material?) Fix unbalanced helper_lock in kernel/kmod.c | Date | Thu, 17 Jan 2008 19:02:43 +0100 |
| |
On Thursday, 17 of January 2008, Nigel Cunningham wrote: > Hi all.
Hi,
> First up, sorry for not inlining the patch - trouble with line wrapping.
No big deal.
> In 2.6.24-rc8, call_usermodehelper_exec has an exit path that can leave > the helper_lock() call at the top of the routine unbalanced. The > attached patch fixes this issue.
Thanks a lot for the patch (reproduced below), I think it's 2.6.24 material. Andrew?
> Signed-off-by: Nigel Cunningham <nigel@tuxonice.net>
--- From: Nigel Cunningham <nigel@tuxonice.net>
In 2.6.24-rc8, call_usermodehelper_exec has an exit path that can leave the helper_lock() call at the top of the routine unbalanced. Fix it.
Signed-off-by: Nigel Cunningham <nigel@tuxonice.net> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- diff --git a/kernel/kmod.c b/kernel/kmod.c index c6a4f8a..de27e15 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -468,8 +468,10 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info, sub_info->wait = wait; queue_work(khelper_wq, &sub_info->work); - if (wait == UMH_NO_WAIT) /* task has freed sub_info */ + if (wait == UMH_NO_WAIT) { /* task has freed sub_info */ + helper_unlock(); return 0; + } wait_for_completion(&done); retval = sub_info->retval;
| |