Re: [GIT PULL] bootconfig: Extend the magic check range to the preceding 3 bytes

From: Steven Rostedt
Date: Fri Nov 13 2020 - 12:54:25 EST


On Fri, 13 Nov 2020 09:43:31 -0800
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Fri, Nov 13, 2020 at 5:29 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> >
> > Fix alignment of bootconfig
> >
> > GRUB may align the init ramdisk size to 4 bytes, the magic number at the
> > end of the init ramdisk that denotes bootconfig is attached may not be at
> > the exact end of the ramdisk. The kernel needs to check back at least 4
> > bytes.
>
> I've pulled this, but this really smells to me.
>
> Isn't the thing that actually _writes_ that BOOTCONFIG_MAGIC able to
> fix this properly? I'm looking at the bootconfig tool, and wondering
> why that doesn't know about the alignment thing, for example.
>
> And the fact that this got screwed up means that the BOOTCONFIG
> documentation needs updating too, so that the rules are documented and
> proper.
>

The issue is with grub. It will pad the initrd that it is given to make
sure that it ends on a 4 byte memory boundary. That is the bootconfig
tool adds itself at the end of the ramdisk. But, after grub loads it
into memory, if the ramdisk loaded ends at an off by one from finishing
at a 4 byte boundary, grub will append 3 more bytes. It then passes that
ending to the kernel.

The issue is that grub padded the end of the ramdisk after loading it
into memory. I'm not sure how the bootconfig tool can fix this. Perhaps
make sure the ram disk size is 4 bytes aligned?

Masami, correct me if my above explanation is incorrect. Thanks!

-- Steve