mirror of
https://src.fedoraproject.org/rpms/grub2.git
synced 2024-11-27 23:34:51 +00:00
x86-efi: Fix an incorrect array size in kernel allocation
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
This commit is contained in:
parent
7d0e15b891
commit
ee3e6f65f0
3 changed files with 41 additions and 1 deletions
|
@ -0,0 +1,36 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 11 Oct 2022 17:00:50 -0400
|
||||
Subject: [PATCH] x86-efi: Fix an incorrect array size in kernel allocation
|
||||
|
||||
In 81a6ebf62bbe166ddc968463df2e8bd481bf697c ("efi: split allocation
|
||||
policy for kernel vs initrd memories."), I introduced a split in the
|
||||
kernel allocator to allow for different dynamic policies for the kernel
|
||||
and the initrd allocations.
|
||||
|
||||
Unfortunately, that change increased the size of the policy data used to
|
||||
make decisions, but did not change the size of the temporary storage we
|
||||
use to back it up and restore. This results in some of .data getting
|
||||
clobbered at runtime, and hilarity ensues.
|
||||
|
||||
This patch makes the size of the backup storage be based on the size of
|
||||
the initial policy data.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/loader/i386/efi/linux.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/efi/linux.c b/grub-core/loader/i386/efi/linux.c
|
||||
index ac5ef50bdb..9854b0defa 100644
|
||||
--- a/grub-core/loader/i386/efi/linux.c
|
||||
+++ b/grub-core/loader/i386/efi/linux.c
|
||||
@@ -92,7 +92,7 @@ static struct allocation_choice max_addresses[] =
|
||||
{ INITRD_MEM, GRUB_EFI_MAX_ALLOCATION_ADDRESS, GRUB_EFI_ALLOCATE_MAX_ADDRESS },
|
||||
{ NO_MEM, 0, 0 }
|
||||
};
|
||||
-static struct allocation_choice saved_addresses[4];
|
||||
+static struct allocation_choice saved_addresses[sizeof(max_addresses) / sizeof(max_addresses[0])];
|
||||
|
||||
#define save_addresses() grub_memcpy(saved_addresses, max_addresses, sizeof(max_addresses))
|
||||
#define restore_addresses() grub_memcpy(max_addresses, saved_addresses, sizeof(max_addresses))
|
|
@ -278,3 +278,4 @@ Patch0277: 0277-squish-give-up-on-rhgb-quiet.patch
|
|||
Patch0278: 0278-squish-BLS-only-write-etc-kernel-cmdline-if-writable.patch
|
||||
Patch0279: 0279-ieee1275-implement-vec5-for-cas-negotiation.patch
|
||||
Patch0280: 0280-blscfg-Don-t-root-device-in-emu-builds.patch
|
||||
Patch0281: 0281-x86-efi-Fix-an-incorrect-array-size-in-kernel-alloca.patch
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
Name: grub2
|
||||
Epoch: 1
|
||||
Version: 2.06
|
||||
Release: 53%{?dist}
|
||||
Release: 54%{?dist}
|
||||
Summary: Bootloader with support for Linux, Multiboot and more
|
||||
License: GPLv3+
|
||||
URL: http://www.gnu.org/software/grub/
|
||||
|
@ -530,6 +530,9 @@ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Oct 12 2022 Robbie Harwood <rharwood@redhat.com> - 2.06-54
|
||||
- x86-efi: Fix an incorrect array size in kernel allocation
|
||||
|
||||
* Wed Sep 07 2022 Robbie Harwood <rharwood@redhat.com> - 2.06-53
|
||||
- Sync with rawhide at 2.06-56 minus gettext changes
|
||||
|
||||
|
|
Loading…
Reference in a new issue