The kernel bzImage payload length appears to be incorrectly minus by 4 when trying to grub_file_offset_open for the uncompressed vmlinux image. If gzip used as compressor it will lead to the file->size read from offset of crc32 instead of the uncompressed image size.
[1] http://www.onicos.com/staff/iz/formats/gzip.html --- grub-core/loader/i386/xen_file.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c index 5836218..37f9ad8 100644 --- a/grub-core/loader/i386/xen_file.c +++ b/grub-core/loader/i386/xen_file.c @@ -55,11 +55,11 @@ grub_xen_file (grub_file_t file) grub_dprintf ("xen", "found bzimage payload 0x%llx-0x%llx\n", (unsigned long long) (lh.setup_sects + 1) * 512 + lh.payload_offset, - (unsigned long long) lh.payload_length - 4); + (unsigned long long) lh.payload_length); off_file = grub_file_offset_open (file, (lh.setup_sects + 1) * 512 + lh.payload_offset, - lh.payload_length - 4); + lh.payload_length); if (!off_file) goto fail; -- 1.8.5.6 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel