[PATCH] KEYS: Revert one application of "Fix unreachable code"patch [ver #2]

From: David Howells
Date: Thu Feb 21 2013 - 07:01:28 EST


A patch to fix some unreachable code in search_my_process_keyrings() got
applied twice by two different routes upstream:

commit e67eab39bee26f509d38d00ca1a8f24b63f46a31
Author: Alan Cox <alan@xxxxxxxxxxxxxxx>
Date: Thu Dec 20 15:05:54 2012 -0800
keys: fix unreachable code

and:

commit b010520ab3d2c05eb444ed5e01fe6c33842f597a
Author: Alan Cox <alan@xxxxxxxxxxxxxxx>
Date: Thu Oct 25 15:23:35 2012 +0100
keys: Fix unreachable code

Unfortunately, the second application removed something it shouldn't have and
this wasn't detected by GIT. This is due to the patch not having sufficient
lines of context to distinguish the two places of application.

The effect of this is relatively minor: inside the kernel, the keyring search
routines may search multiple keyrings and then prioritise the errors if no keys
or negative keys are found in any of them. With the extra deletion, the
presence of a negative key in the thread keyring (causing ENOKEY) is
incorrectly overridden by an error searching the process keyring.

So revert the second application of the patch.

Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
cc: Jiri Kosina <jkosina@xxxxxxx>
cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
cc: stable@xxxxxxxxxxxxxxx
---

security/keys/process_keys.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/security/keys/process_keys.c b/security/keys/process_keys.c
index 20e4bf5..58dfe08 100644
--- a/security/keys/process_keys.c
+++ b/security/keys/process_keys.c
@@ -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;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/