These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / security / keys / process_keys.c
index bd536cb..e6d5017 100644 (file)
@@ -457,7 +457,7 @@ key_ref_t search_process_keyrings(struct keyring_search_context *ctx)
                down_read(&cred->request_key_auth->sem);
 
                if (key_validate(ctx->cred->request_key_auth) == 0) {
-                       rka = ctx->cred->request_key_auth->payload.data;
+                       rka = ctx->cred->request_key_auth->payload.data[0];
 
                        ctx->cred = rka->cred;
                        key_ref = search_process_keyrings(ctx);
@@ -647,7 +647,7 @@ try_again:
                        key_ref = ERR_PTR(-EKEYREVOKED);
                        key = NULL;
                } else {
-                       rka = ctx.cred->request_key_auth->payload.data;
+                       rka = ctx.cred->request_key_auth->payload.data[0];
                        key = rka->dest_keyring;
                        __key_get(key);
                }
@@ -794,6 +794,7 @@ long join_session_keyring(const char *name)
                ret = PTR_ERR(keyring);
                goto error2;
        } else if (keyring == new->session_keyring) {
+               key_put(keyring);
                ret = 0;
                goto error2;
        }
@@ -848,6 +849,7 @@ void key_change_session_keyring(struct callback_head *twork)
        new->cap_inheritable    = old->cap_inheritable;
        new->cap_permitted      = old->cap_permitted;
        new->cap_effective      = old->cap_effective;
+       new->cap_ambient        = old->cap_ambient;
        new->cap_bset           = old->cap_bset;
 
        new->jit_keyring        = old->jit_keyring;