diff --git a/kernel/kmod.c b/kernel/kmod.c index a715e06ab4a768dd2982e99fbe73c9645647fca4..01c18cacc58b405a6afc6282ada863c14bc3c44c 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -152,6 +152,14 @@ static int ____call_usermodehelper(void *data) struct subprocess_info *sub_info = data; int retval; + /* Unblock all signals. */ + flush_signals(current); + spin_lock_irq(¤t->sighand->siglock); + flush_signal_handlers(current); + sigemptyset(¤t->blocked); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); + retval = -EPERM; if (current->fs->root) retval = execve(sub_info->path, sub_info->argv,sub_info->envp);