integ/grub/grub-efi/debian/patches/0004-correct-grub_errno.patch
Li Zhou 48a2e836ff Debian: grub-efi: porting from LAT
This is done for moving packages that are related to secure boot
out of LAT and into integ.

Use grub version: 2.06-1 .

Port grub-efi from LAT and make its build independent from grub2.
The patches for code and changes for debian build are ported from
layers ( meta-lat and meta-secure-core ) of yocto upstream.
Make grub-efi independent from grub2 because some code changes
for secure boot can make grub-pc's build fail.

This porting of grub-efi customizes grub images and grub.cfg for
efi boot. Install those files customized to grub-efi-amd64 package.

Test Plan:
 The tests are done with all the changes for this porting,
 which involves efitools/shim/grub2/grub-efi/lat-sdk.sh, because
 they are in a chain for secure boot verification.
 - PASS: secure boot OK on qemu.
 - PASS: secure boot OK on PowerEdge R430 lab.
 - PASS: secure boot NG on qemu/hardware when shim/grub-efi images
         are without the right signatures.

Story: 2009221
Task: 46402

Signed-off-by: Li Zhou <li.zhou@windriver.com>
Change-Id: Ia3b482c1959b5e6462fe54f0b0e59a69db1b1ca7
2022-10-08 21:50:14 -04:00

46 lines
1.4 KiB
Diff

From fcab9daa2e62bcf2f6165fca4378d0e8a919a276 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Sat, 19 Mar 2022 20:01:58 +0800
Subject: [PATCH] correct grub_errno
Correct grub_errno if allocate memory at preferred address success.
Usually allocate memory at preferred address will fail and then
allocate to another address. During second time allocate, it reset
grub_errno = GRUB_ERR_NONE.
While grub efi working on a server with huge memory, allocate memory at
preferred address will succeed, no need to allocate again, and no change
to correct grub_errno. It caused load kernel image fail in this
situation.
Set grub_errno = GRUB_ERR_NONE if first allocate success
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
[lz: Adapt the git shortlog.]
Signed-off-by: Li Zhou <li.zhou@windriver.com>
---
grub-core/loader/i386/linux.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 9f74a96..747cfe0 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -179,6 +179,10 @@ allocate_pages (grub_size_t prot_size, grub_size_t *align,
prot_size, 1,
GRUB_RELOCATOR_PREFERENCE_LOW,
1);
+
+ if (!err)
+ grub_errno = GRUB_ERR_NONE;
+
for (; err && *align + 1 > min_align; (*align)--)
{
grub_errno = GRUB_ERR_NONE;
--
2.17.1