Messages in this thread | | | Date | Fri, 13 Nov 2020 12:54:19 -0500 | From | Steven Rostedt <> | Subject | Re: [GIT PULL] bootconfig: Extend the magic check range to the preceding 3 bytes |
| |
On Fri, 13 Nov 2020 09:43:31 -0800 Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Fri, Nov 13, 2020 at 5:29 AM Steven Rostedt <rostedt@goodmis.org> 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
| |