From fd5093653ac0d8d1f3b7c571c63fbe98b7e1e349 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Wed, 26 May 2010 14:43:04 -0700 Subject: [PATCH] --- yaml --- r: 198742 b: refs/heads/master c: d47419cd967a4f032a194148a7b08afad32faded h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/kmod.c | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 4940499e41a6..af5c46bf241b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7d64224217b53b23243fd2aa428001486f2a5da5 +refs/heads/master: d47419cd967a4f032a194148a7b08afad32faded diff --git a/trunk/kernel/kmod.c b/trunk/kernel/kmod.c index 48daed4c51ba..ad9f2edebd67 100644 --- a/trunk/kernel/kmod.c +++ b/trunk/kernel/kmod.c @@ -205,10 +205,7 @@ static int wait_for_helper(void *data) sub_info->retval = ret; } - if (sub_info->wait == UMH_NO_WAIT) - call_usermodehelper_freeinfo(sub_info); - else - complete(sub_info->complete); + complete(sub_info->complete); return 0; } @@ -217,13 +214,13 @@ static void __call_usermodehelper(struct work_struct *work) { struct subprocess_info *sub_info = container_of(work, struct subprocess_info, work); - pid_t pid; enum umh_wait wait = sub_info->wait; + pid_t pid; /* CLONE_VFORK: wait until the usermode helper has execve'd * successfully We need the data structures to stay around * until that is done. */ - if (wait == UMH_WAIT_PROC || wait == UMH_NO_WAIT) + if (wait == UMH_WAIT_PROC) pid = kernel_thread(wait_for_helper, sub_info, CLONE_FS | CLONE_FILES | SIGCHLD); else @@ -232,6 +229,7 @@ static void __call_usermodehelper(struct work_struct *work) switch (wait) { case UMH_NO_WAIT: + call_usermodehelper_freeinfo(sub_info); break; case UMH_WAIT_PROC: