On Wed, Mar 8, 2017, 22:28 Andrei Borzenkov <arvidj...@gmail.com> wrote:

> On Thu, Mar 9, 2017 at 1:17 AM, Ahmed, Safayet (GE Global Research,
> US) <safayet.ah...@ge.com> wrote:
> > Hello,
> >
> > I'm seeing an inconsistency in the multiboot2 specification and the
> implementation of the multiboot2 loader code in GRUB. It may be my
> understanding that's incorrect. A clarification would be appreciated.
> >
> > This concerns the alignment requirements for tags in OS image headers.
> The specification states 4 bytes, but the code uses 8 bytes.
> >
> > The specification states (Section 3.1.3) that "Tags constitutes a buffer
> of structures following each other padded on 'u32' size."
> >
>
> This is ambiguous and needs better wording as well (it is not clear
> whether "padded" here applies to individual tag or all tags block).
>
> > The "for" loop for parsing tags uses the following "increment" statement
> (grub/grub_core/loader/multiboot_mbi2.c: line 148):
> >     tag = (struct multiboot_header_tag *) ((grub_uint32_t *) tag +
> ALIGN_UP (tag->size, MULTIBOOT_TAG_ALIGN) / 4))
> >
> > The macro MULTIBOOT_TAG_ALIGN is defined in (include/multiboot2.h) as 8.
> This alignment value is consistent with the specification for tags in the
> multiboot2 information structure, but not for tags in an OS image header.
> >
>
> Yes, it sure looks wrong. Thanks for making us aware!
>
> @Vladimir, @Daniel - I think this is 2.02 material, we do not want
> release with such inconsistency. The question is what needs fixing
> though - about half of all tags are not multiple of 8 bytes, so I
> expect people to hit it in real life. What is current implementation
> in MB2 compliant kernels?
>
The intention was 8, so that we can have u64 naturally aligned in the
header even on non-x86. I believe all current kernels are compatible with
grub, so I think we should update the docs. Daniel, your opinion?

>
_______________________________________________
Bug-grub mailing list
Bug-grub@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-grub

Reply via email to