diff --git a/backport-disk-efi-efidisk-Pass-buffers-with-higher-alignment.patch b/backport-disk-efi-efidisk-Pass-buffers-with-higher-alignment.patch new file mode 100644 index 0000000..000ae6d --- /dev/null +++ b/backport-disk-efi-efidisk-Pass-buffers-with-higher-alignment.patch @@ -0,0 +1,71 @@ +From 8dc558b124056da61a30fcad15723cc652d94e0d Mon Sep 17 00:00:00 2001 +From: Stefan Agner +Date: Tue, 31 May 2022 17:53:43 +0200 +Subject: [PATCH] disk/efi/efidisk: Pass buffers with higher alignment + +Some devices report IoAlign values but seem to require buffers with +higher alignment. + +The UEFI specification is saying: "IoAlign values of 0 and 1 mean that +the buffer can be placed anywhere in memory. Otherwise, IoAlign must +be a power of 2, and the requirement is that the start address of +a buffer must be evenly divisible by IoAlign with no remainder." + +Some devices report IoAlign of 2, however seem to require 4 bytes +aligned buffers. It seems that this got misinterpreted by some vendors +assuming IoAlign is 2^IoAlign. There is also such a hint in an example +in earlier versions of the Driver Writer's Guide: + + ScsiPassThruMode.IoAlign = 2; //Data must be aligned on 4-byte boundary + +Some devices report no alignment requirements at all but seem to read +corrupted data or report read errors when passing unaligned buffers. + +Work around by using an alignment of at least BlockSize (typically 512 +bytes) in any case. If IoAlign (interpreted as per UEFI specification) +requests a higher alignment than BlockSize, follow IoAlign still. + +Note: The problem has only noticed with compressed squashfs. It seems +that ext4 (and presumably other file system drivers) pass buffers with +a higher alignment already. + +Reference:https://git.savannah.gnu.org/cgit/grub.git/commit?id=858a0745c89262d1f35b9d3d3a208573732d7e36 +Conflict:NA + +Signed-off-by: Stefan Agner +Acked-by: Heinrich Schuchardt +Reviewed-by: Daniel Kiper + +--- + grub-core/disk/efi/efidisk.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c +index fe8ba6e..cfc0176 100644 +--- a/grub-core/disk/efi/efidisk.c ++++ b/grub-core/disk/efi/efidisk.c +@@ -553,8 +553,19 @@ grub_efidisk_readwrite (struct grub_disk *disk, grub_disk_addr_t sector, + d = disk->data; + bio = d->block_io; + +- /* Set alignment to 1 if 0 specified */ +- io_align = bio->media->io_align ? bio->media->io_align : 1; ++ /* ++ * If IoAlign is > 1, it should represent the required alignment. However, ++ * some UEFI implementations seem to report IoAlign=2 but require 2^IoAlign. ++ * Some implementation seem to require alignment despite not reporting any ++ * specific requirements. ++ * ++ * Make sure to use buffers which are at least aligned to block size. ++ */ ++ if (bio->media->io_align < bio->media->block_size) ++ io_align = bio->media->block_size; ++ else ++ io_align = bio->media->io_align; ++ + num_bytes = size << disk->log_sector_size; + + if ((grub_addr_t) buf & (io_align - 1)) +-- +2.27.0 + diff --git a/backport-tests-Disable-blkid-cache-usage.patch b/backport-tests-Disable-blkid-cache-usage.patch new file mode 100644 index 0000000..6765b3b --- /dev/null +++ b/backport-tests-Disable-blkid-cache-usage.patch @@ -0,0 +1,34 @@ +From 8cdf18bb505a6920b59384e222005b0ec2b4211f Mon Sep 17 00:00:00 2001 +From: Glenn Washburn +Date: Sat, 9 Apr 2022 02:44:46 +0000 +Subject: [PATCH] tests: Disable blkid cache usage + +Using the blkid cache can cause issues when running many file system tests +in parallel. We do not need it, as its only there to improve performance, +and using the cache does not provide significant performance improvements. + +Reference:https://git.savannah.gnu.org/cgit/grub.git/commit?id=e883cc6a282891783902daf2d564a5b5c7a6a5aa +Conflict:NA + +Signed-off-by: Glenn Washburn +Reviewed-by: Daniel Kiper + +--- + tests/util/grub-fs-tester.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/util/grub-fs-tester.in b/tests/util/grub-fs-tester.in +index bfc425e..e6a493c 100644 +--- a/tests/util/grub-fs-tester.in ++++ b/tests/util/grub-fs-tester.in +@@ -1,6 +1,7 @@ + #!@BUILD_SHEBANG@ + + set -e ++export BLKID_FILE=/dev/null + + fs="$1" + +-- +2.27.0 + diff --git a/grub.patches b/grub.patches index 73733f9..5e21764 100644 --- a/grub.patches +++ b/grub.patches @@ -263,3 +263,5 @@ Patch0263: backport-net-http-Error-out-on-headers-with-LF-without-CR.patch Patch0264: backport-misc-Make-grub_min-and-grub_max-more-resilient.patch Patch0265: backport-EFI-allocate-kernel-in-EFI_RUNTIME_SERVICES_CODE-ins.patch Patch0266: fix-compressed-kernel-verification-failed.patch +Patch0267: backport-tests-Disable-blkid-cache-usage.patch +Patch0268: backport-disk-efi-efidisk-Pass-buffers-with-higher-alignment.patch diff --git a/grub2.spec b/grub2.spec index 4ca2eb4..01bb1ad 100644 --- a/grub2.spec +++ b/grub2.spec @@ -14,7 +14,7 @@ Name: grub2 Epoch: 1 Version: 2.06 -Release: 11 +Release: 12 Summary: Bootloader with support for Linux, Multiboot and more License: GPLv3+ URL: http://www.gnu.org/software/grub/ @@ -436,6 +436,13 @@ fi %{_datadir}/man/man* %changelog +* Tue Aug 30 2022 wanglu - 1:2.06-12 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:tests: Disable blkid cache usage + disk/efi/efidisk: Pass buffers with higher alignment + * Sat Jul 23 2022 zhangqiumiao - 1:2.06-11 - Type:bugfix - CVE:NA