From a737f0072a02a5975aa1538b9dc69da51f5db06c Mon Sep 17 00:00:00 2001 From: David Howells Date: Thu, 21 Feb 2013 12:00:25 +0000 Subject: [PATCH] KEYS: Revert one application of "Fix unreachable code" patch A patch to fix some unreachable code in search_my_process_keyrings() got applied twice by two different routes upstream as commits 26c4a2feb393 and d9fe9c32782e (both "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 Cc: Jiri Kosina Cc: Andrew Morton Cc: stable@vger.kernel.org Signed-off-by: Linus Torvalds --- 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 20e4bf57aec8b..58dfe08909479 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; -- 2.39.5