On Mon, 25 Aug 2025 09:18:53 +0800 Coiby Xu <c...@redhat.com> wrote: > >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 <lei...@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 <lei...@debian.org> Cc: Baoquan He <b...@redhat.com> Cc: Coiby Xu <c...@redhat.com> Cc: "Daniel P. Berrange" <berra...@redhat.com> Cc: Dave Hansen <dave.han...@intel.com> Cc: Dave Young <dyo...@redhat.com> Cc: Kairui Song <ryn...@gmail.com> Cc: Liu Pingfan <kernelf...@gmail.com> Cc: Milan Broz <gmazyl...@gmail.com> Cc: Ondrej Kozina <okoz...@redhat.com> Cc: Vitaly Kuznetsov <vkuzn...@redhat.com> Cc: <sta...@vger.kernel.org> Signed-off-by: Andrew Morton <a...@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; _