Re: [PATCH v9 1/8] kexec_file: allow to place kexec_buf randomly
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2025-08-26 01:05:32
Also in:
kexec, lkml
On Mon, 25 Aug 2025 09:18:53 +0800 Coiby Xu [off-list ref] wrote:
quoted
diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_image.c index 532d72ea42ee8..287b25e674d76 100644 --- a/arch/arm64/kernel/kexec_image.c +++ b/arch/arm64/kernel/kexec_image.c@@ -76,6 +76,7 @@ static void *image_load(struct kimage *image,kbuf.buf_min = 0; kbuf.buf_max = ULONG_MAX; kbuf.top_down = false; + kbuf.random = 0; kbuf.buffer = kernel; kbuf.bufsz = kernel_len;And also thanks for posing a fix! The patch LGTM. Can you add a Fixes tag 'Fixes: bf454ec31add ("kexec_file: allow to place kexec_buf randomly")' and then send it to kexec@lists.infradead.org? Thanks!
I turned all this into a regular patch and queued it (see below), thanks. No additional actions are needed. I'm really not liking that code. I laboriously verified that all fields of kexec_buf are now initialized, except for `cma'. Is that a bug? This function has a call frequency of about 3x per week. Can we please just memset the whole thing so people don't have to worry about this any more? From: Breno Leitao <leitao@debian.org> Subject: kexec/arm64: initialize the random field of kbuf to zero in the image loader Date: Thu Aug 21 04:11:21 2025 -0700 Add an explicit initialization for the random member of the kbuf structure within the image_load function in arch/arm64/kernel/kexec_image.c. Setting kbuf.random to zero ensures a deterministic and clean starting state for the buffer used during kernel image loading, avoiding this UBSAN issue later, when kbuf.random is read. [ 32.362488] UBSAN: invalid-load in ./include/linux/kexec.h:210:10 [ 32.362649] load of value 252 is not a valid value for type '_Bool' Link: https://lkml.kernel.org/r/oninomspajhxp4omtdapxnckxydbk2nzmrix7rggmpukpnzadw@c67o7njgdgm3 Fixes: bf454ec31add ("kexec_file: allow to place kexec_buf randomly Signed-off-by: Breno Leitao <leitao@debian.org> Cc: Baoquan He <redacted> Cc: Coiby Xu <redacted> Cc: "Daniel P. Berrange" <redacted> Cc: Dave Hansen <redacted> Cc: Dave Young <redacted> Cc: Kairui Song <redacted> Cc: Liu Pingfan <redacted> Cc: Milan Broz <redacted> Cc: Ondrej Kozina <redacted> Cc: Vitaly Kuznetsov <vkuznets@redhat.com> Cc: <redacted> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- arch/arm64/kernel/kexec_image.c | 1 + 1 file changed, 1 insertion(+)
--- a/arch/arm64/kernel/kexec_image.c~kexec-arm64-initialize-the-random-field-of-kbuf-to-zero-in-the-image-loader
+++ a/arch/arm64/kernel/kexec_image.c@@ -76,6 +76,7 @@ static void *image_load(struct kimage *i kbuf.buf_min = 0; kbuf.buf_max = ULONG_MAX; kbuf.top_down = false; + kbuf.random = 0; kbuf.buffer = kernel; kbuf.bufsz = kernel_len;
_