]> Pileus Git - ~andy/linux/blobdiff - security/keys/process_keys.c
userns: Stop oopsing in key_change_session_keyring
[~andy/linux] / security / keys / process_keys.c
index 20e4bf57aec8b6418bf4d4df86c616903121c28c..a571fad91010156aa7c532836b2a612e8e82e6fd 100644 (file)
@@ -367,6 +367,8 @@ key_ref_t search_my_process_keyrings(struct key_type *type,
 
                switch (PTR_ERR(key_ref)) {
                case -EAGAIN: /* no key */
+                       if (ret)
+                               break;
                case -ENOKEY: /* negative key */
                        ret = key_ref;
                        break;
@@ -837,7 +839,7 @@ void key_change_session_keyring(struct callback_head *twork)
        new-> sgid      = old-> sgid;
        new->fsgid      = old->fsgid;
        new->user       = get_uid(old->user);
-       new->user_ns    = get_user_ns(new->user_ns);
+       new->user_ns    = get_user_ns(old->user_ns);
        new->group_info = get_group_info(old->group_info);
 
        new->securebits = old->securebits;