Re: [PATCH v3 1/7] kexec_file: allow to place kexec_buf randomly
From: Baoquan He
Date: Mon May 20 2024 - 23:13:58 EST
On 05/21/24 at 09:58am, Coiby Xu wrote:
> On Mon, May 20, 2024 at 02:16:43PM +0800, Baoquan He wrote:
> > On 04/25/24 at 06:04pm, Coiby Xu wrote:
> > > Currently, kexec_buf is placed in order which means for the same
> > > machine, the info in the kexec_buf is always located at the same
> > > position each time the machine is booted. This may cause a risk for
> > > sensitive information like LUKS volume key. Now struct kexec_buf has a
> > > new field random which indicates it's supposed to be placed in a random
> > > position.
> >
> > Do you want to randomize the key's position for both kdump and kexec
> > rebooting? Assume you only want to do that for kdump. If so, we may need
> > to make that more specific in code.
>
> Thanks for the suggestion! Currently, no one has requested this feature
> for kexec reboot so yes, I only have kdump in mind. But kdump depends
> on kexec thus I'm not sure how we can make it kdump specfic. Do you have
> a further suggestion?
I remember you said kexec reboot doesn't need the key passed from 1st
kernel to 2nd kernel because the 2nd kernel will calculate one during
boot.
kbuf has the information, the similar handling has been in
kernel/kexec_file.c:
#ifdef CONFIG_CRASH_DUMP
if (kbuf->image->type == KEXEC_TYPE_CRASH)
....;
#endif
>
>
> > diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> > index 060835bb82d5..fc1e20d565d5 100644
> > --- a/include/linux/kexec.h
> > +++ b/include/linux/kexec.h
> > @@ -171,6 +171,7 @@ int kexec_image_post_load_cleanup_default(struct kimage *image);
> > * @buf_min: The buffer can't be placed below this address.
> > * @buf_max: The buffer can't be placed above this address.
> > * @top_down: Allocate from top of memory.
> > + * @random: Place the buffer at a random position.
>
> How about a comment here saying this is currently only used by kdump.
No, it's not good. Please don't do this, let code tell it.
By the way, can you rebase this series on the latest v6.9 and resend? I
rebase my code and can't apply your patchset.