FAILED: patch "[PATCH] Fix kexec forbidding kernels signed with keys in the" failed to apply to 4.9-stable tree
Subsystems (5)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
ea93102f32244e3f45c8b26260be77ed0cc1d16cMon Sep 17 00:00:00 2001
From: Yannik Sembritzki <[email protected]>
Date: Thu, 16 Aug 2018 14:05:23 +0100
Subject: [PATCH] Fix kexec forbidding kernels signed with keys in the
secondary keyring to boot
The split of .system_keyring into .builtin_trusted_keys and .secondary_trusted_keys broke kexec, thereby preventing kernels signed by keys which are now in the secondary keyring from being kexec'd.
Fix this by passing VERIFY_USE_SECONDARY_KEYRING to verify_pefile_signature().
arch/x86/kernel/kexec-bzimage64.c +1 -1
@@ -532,7 +532,7 @@ static int bzImage64_cleanup(void *loader_data)static int bzImage64_verify_sig (const char *kernel,unsigned long kernel_len) {return verify_pefile_signature (kernel, kernel_len, -NULL , +VERIFY_USE_SECONDARY_KEYRING ,VERIFYING_KEXEC_PE_SIGNATURE ); }#endif
This patch applies cleanly for me on the linux-4.9.y branch. Could you tell me what the problem is here?
Yannik
Quoted 47 lines · On 07.09.2018 11:14, [email protected] wrote:
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
ea93102f32244e3f45c8b26260be77ed0cc1d16cMon Sep 17 00:00:00 2001
From: Yannik Sembritzki <[email protected]>
Date: Thu, 16 Aug 2018 14:05:23 +0100
Subject: [PATCH] Fix kexec forbidding kernels signed with keys in the
secondary keyring to bootThe split of .system_keyring into .builtin_trusted_keys and .secondary_trusted_keys broke kexec, thereby preventing kernels signed by keys which are now in the secondary keyring from being kexec'd.
Fix this by passing
VERIFY_USE_SECONDARY_KEYRINGtoverify_pefile_signature().Fixes d3bfe84129f6 ("certs: Add a secondary system keyring that can be added to dynamically")Signed-off-by Yannik Sembritzki <[email protected]>Signed-off-by David Howells <[email protected]>Signed-off-by Linus Torvalds <[email protected]>arch/x86/kernel/kexec-bzimage64.c +1
-1@@ -532,7 +532,7 @@ static int bzImage64_cleanup(void *loader_data)static int bzImage64_verify_sig (const char *kernel,unsigned long kernel_len) {return verify_pefile_signature (kernel, kernel_len, -NULL , +VERIFY_USE_SECONDARY_KEYRING ,VERIFYING_KEXEC_PE_SIGNATURE ); }#endif
Greg KH
maintainerQuoted 2 lines · Yannik Sembritzki
This patch applies cleanly for me on the linux-4.9.y branch. Could you tell me what the problem is here?
The dependant patch fails to apply, so this one fails to build, sorry for not being more obviuos about this.
So a backport of both is needed here.
thanks,
greg k-h
Thanks, Greg.
I've backported the other (dependant) patch to 4.9; do I need to do anything more to also get this one applied to 4.9?
Yannik
Quoted 11 lines · Greg KH
Quoted 2 lines · Yannik Sembritzki
This patch applies cleanly for me on the linux-4.9.y branch. Could you tell me what the problem is here?
The dependant patch fails to apply, so this one fails to build, sorry for not being more obviuos about this.
So a backport of both is needed here.
thanks,
greg k-h
Greg KH
maintainerQuoted 4 lines · Yannik Sembritzki
Thanks, Greg.
I've backported the other (dependant) patch to 4.9; do I need to do anything more to also get this one applied to 4.9?
Yes, that one did not work :(
Can you resend the patch series, backported to 4.9, with the git ids of the original patches in them somewhere so I know what to do?
thanks,
greg k-h
PATCH 1/2 Replace the use of a magic number that indicates that verify_*_signature() should use the secondary keyring with a symbol.
Backport of 817aef260037f33ee0f44c17fe341323d3aebd6d
--- certs/system_keyring.c | 3 ++- crypto/asymmetric_keys/pkcs7_key_type.c | 2 +- include/linux/verification.h | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-)
certs/system_keyring.c +2 -1
@@ -14,6 +14,7 @@#include <linux/sched.h> #include <linux/cred.h> #include <linux/err.h> +#include <linux/verification.h> #include <keys/asymmetric-type.h> #include <keys/system_keyring.h> #include <crypto/pkcs7.h>
@@ -207,7 +208,7 @@ int verify_pkcs7_signature(const void *data, size_t len,if (!trusted_keys) { trusted_keys = builtin_trusted_keys; - }else if (trusted_keys == (void *)1UL ) { + }else if (trusted_keys ==VERIFY_USE_SECONDARY_KEYRING ) {#ifdef CONFIG_SECONDARY_TRUSTED_KEYRING trusted_keys = secondary_trusted_keys;#else
crypto/asymmetric_keys/pkcs7_key_type.c +1 -1
@@ -62,7 +62,7 @@ static int pkcs7_preparse(struct key_preparsed_payload *prep)return verify_pkcs7_signature (NULL ,0 , prep->data, prep->datalen, - (void *)1UL , usage, +VERIFY_USE_SECONDARY_KEYRING , usage, pkcs7_view_content, prep); }
include/linux/verification.h +6 -0
@@ -12,6 +12,12 @@#ifndef _LINUX_VERIFICATION_H#define _LINUX_VERIFICATION_H +/* +* Indicate that both builtin trusted keys and secondary trusted keys +* should be used. +*/ +#define VERIFY_USE_SECONDARY_KEYRING ((struct key *)1UL) +/* * The use to which an asymmetric key is being put. */
Signature · 1 line
2.17.1
PATCH 2/2 The split of .system_keyring into .builtin_trusted_keys and .secondary_trusted_keys broke kexec, thereby preventing kernels signed by keys which are now in the secondary keyring from being kexec'd.
Fix this by passing VERIFY_USE_SECONDARY_KEYRING to verify_pefile_signature().
Backport of ea93102f32244e3f45c8b26260be77ed0cc1d16c
--- arch/x86/kernel/kexec-bzimage64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kernel/kexec-bzimage64.c +1 -1
@@ -529,7 +529,7 @@ static int bzImage64_cleanup(void *loader_data)static int bzImage64_verify_sig (const char *kernel,unsigned long kernel_len) {return verify_pefile_signature (kernel, kernel_len, -NULL , +VERIFY_USE_SECONDARY_KEYRING ,VERIFYING_KEXEC_PE_SIGNATURE ); }#endif
Signature · 1 line
2.17.1