]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - kernel/kmod.c
[PATCH] lockdep: annotate enable_in_hardirq()
[karo-tx-linux.git] / kernel / kmod.c
index 44166e3bb8afab469a61575946b46da45e215cc7..1b7157af051c44f01f4d928728e819c80c12edc3 100644 (file)
@@ -20,7 +20,6 @@
 */
 #define __KERNEL_SYSCALLS__
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/sched.h>
 #include <linux/syscalls.h>
@@ -131,14 +130,14 @@ struct subprocess_info {
 static int ____call_usermodehelper(void *data)
 {
        struct subprocess_info *sub_info = data;
-       struct key *old_session;
+       struct key *new_session, *old_session;
        int retval;
 
        /* Unblock all signals and set the session keyring. */
-       key_get(sub_info->ring);
+       new_session = key_get(sub_info->ring);
        flush_signals(current);
        spin_lock_irq(&current->sighand->siglock);
-       old_session = __install_session_keyring(current, sub_info->ring);
+       old_session = __install_session_keyring(current, new_session);
        flush_signal_handlers(current, 1);
        sigemptyset(&current->blocked);
        recalc_sigpending();
@@ -170,7 +169,7 @@ static int wait_for_helper(void *data)
        sa.sa.sa_handler = SIG_IGN;
        sa.sa.sa_flags = 0;
        siginitset(&sa.sa.sa_mask, sigmask(SIGCHLD));
-       do_sigaction(SIGCHLD, &sa, (struct k_sigaction *)0);
+       do_sigaction(SIGCHLD, &sa, NULL);
        allow_signal(SIGCHLD);
 
        pid = kernel_thread(____call_usermodehelper, sub_info, SIGCHLD);