Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
[linux-2.6-microblaze.git] / kernel / kmod.c
index 44166e3..51a8920 100644 (file)
@@ -131,14 +131,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();