summaryrefslogtreecommitdiffstats
path: root/KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch')
-rw-r--r--KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch51
1 files changed, 0 insertions, 51 deletions
diff --git a/KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch b/KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch
deleted file mode 100644
index 729222997..000000000
--- a/KEYS-only-apply-KEY_FLAG_KEEP-to-a-key-if-a-parent.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 7707055082a7005ad94ba81e5240644db8c0324a
-From: David Howells <dhowells@redhat.com>
-Date: Tue Jan 26 16:28:17 2016 +0000
-Subject: [PATCH] KEYS: Only apply KEY_FLAG_KEEP to a key if a parent keyring has it set
-
- KEY_FLAG_KEEP should only be applied to a key if the keyring it is being
- linked into has KEY_FLAG_KEEP set.
-
- To this end, partially revert the following patch:
-
- commit 1d6d167c2efcfe9539d9cffb1a1be9c92e39c2c0
- Author: Mimi Zohar <zohar@linux.vnet.ibm.com>
- Date: Thu Jan 7 07:46:36 2016 -0500
- KEYS: refcount bug fix
-
- to undo the change that made it unconditional (Mimi got it right the first
- time).
-
- Without undoing this change, it becomes impossible to delete, revoke or
- invalidate keys added to keyrings through __key_instantiate_and_link()
- where the keyring has itself been linked to. To test this, run the
- following command sequence:
-
- keyctl newring foo @s
- keyctl add user a a %:foo
- keyctl unlink %user:a %:foo
- keyctl clear %:foo
-
- With the commit mentioned above the third and fourth commands fail with
- EPERM when they should succeed.
-
- Reported-by: Stephen Gallager <sgallagh@redhat.com>
- Signed-off-by: David Howells <dhowells@redhat.com>
- cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
- cc: keyrings@vger.kernel.org
- cc: stable@vger.kernel.org
-
-diff --git a/security/keys/key.c b/security/keys/key.c
-index 07a87311055c..09ef276c4bdc 100644
---- a/security/keys/key.c
-+++ b/security/keys/key.c
-@@ -430,7 +430,8 @@ static int __key_instantiate_and_link(struct key *key,
-
- /* and link it into the destination keyring */
- if (keyring) {
-- set_bit(KEY_FLAG_KEEP, &key->flags);
-+ if (test_bit(KEY_FLAG_KEEP, &keyring->flags))
-+ set_bit(KEY_FLAG_KEEP, &key->flags);
-
- __key_link(key, _edit);
- }