From: Rusty Russell <rusty@rustcorp.com.au>

Vatsa and I noticed this.

call_usermode_helper uses keventd, so the process created inherits
its cpus_allowed mask.  Unset it.



---

 kernel/kmod.c |    2 ++
 1 files changed, 2 insertions(+)

diff -puN kernel/kmod.c~call_usermodehelper-affinity-fix kernel/kmod.c
--- 25/kernel/kmod.c~call_usermodehelper-affinity-fix	2004-02-11 21:15:31.000000000 -0800
+++ 25-akpm/kernel/kmod.c	2004-02-11 21:15:31.000000000 -0800
@@ -158,6 +158,8 @@ static int ____call_usermodehelper(void 
 	recalc_sigpending();
 	spin_unlock_irq(&current->sighand->siglock);
 
+	/* We can run anywhere, unlike our parent keventd(). */
+	set_cpus_allowed(current, CPU_MASK_ALL);
 	retval = -EPERM;
 	if (current->fs->root)
 		retval = execve(sub_info->path, sub_info->argv,sub_info->envp);

_