diff options
author | Mikko Ylinen <mikko.ylinen@linux.intel.com> | 2017-02-28 12:35:12 +0200 |
---|---|---|
committer | Saul Wold <sgw@linux.intel.com> | 2017-03-13 09:17:14 -0700 |
commit | df8aa97ec59a800efa660697b3760fbbf17e4c7a (patch) | |
tree | adb392e0eddb458f79f833436e5458a945e8d4f7 /common/recipes-bsp | |
parent | 54df72f06e4a946f4bc403c67313f4cb385b4301 (diff) | |
download | meta-intel-df8aa97ec59a800efa660697b3760fbbf17e4c7a.tar.gz |
systemd-boot: stub: check LoadOptions contains data
With some UEFI shells LoadOptionsSize is reported being > 0
but the corresponding LoadOptions does not contain any data
(the first element has value 0).
When that happens, the stub feature that allows .cmdline to be
replaced by what's in LoadOptions ends up copying nothing/random
data to the kernel cmdline resulting in different kinds of boot
problems.
To fix this, add a check to see if LoadOptions contains data
before replacing the .cmdline.
Upstream-Status: Accepted [https://github.com/systemd/systemd/pull/5467]
Fixes [YOCTO #11078].
Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'common/recipes-bsp')
-rw-r--r-- | common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch | 42 | ||||
-rw-r--r-- | common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend | 1 |
2 files changed, 43 insertions, 0 deletions
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch new file mode 100644 index 00000000..69acc8f8 --- /dev/null +++ b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 87cd5a5e0f06ceb7f9dbdcc4029e0c279a38e6ad Mon Sep 17 00:00:00 2001 | ||
2 | From: Mikko Ylinen <mikko.ylinen@linux.intel.com> | ||
3 | Date: Mon, 27 Feb 2017 10:04:03 +0200 | ||
4 | Subject: [PATCH] sd-boot: stub: check LoadOptions contains data | ||
5 | |||
6 | With some UEFI shells LoadOptionsSize is reported being > 0 | ||
7 | but the corresponding LoadOptions does not contain any data | ||
8 | (the first element has value 0). | ||
9 | |||
10 | When that happens, the stub feature that allows .cmdline to be | ||
11 | replaced by what's in LoadOptions ends up copying nothing/random | ||
12 | data to the kernel cmdline resulting in different kinds of boot | ||
13 | problems. | ||
14 | |||
15 | To fix this, add a check to see if LoadOptions contains data | ||
16 | before replacing the .cmdline. | ||
17 | |||
18 | Upstream-Status: Accepted [https://github.com/systemd/systemd/pull/5467] | ||
19 | |||
20 | Fixes [YOCTO #11078]. | ||
21 | |||
22 | Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com> | ||
23 | --- | ||
24 | src/boot/efi/stub.c | 2 +- | ||
25 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c | ||
28 | index 7c1ffb1bc..b7d5d3cda 100644 | ||
29 | --- a/src/boot/efi/stub.c | ||
30 | +++ b/src/boot/efi/stub.c | ||
31 | @@ -87,7 +87,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { | ||
32 | cmdline_len = szs[0]; | ||
33 | |||
34 | /* if we are not in secure boot mode, accept a custom command line and replace the built-in one */ | ||
35 | - if (!secure && loaded_image->LoadOptionsSize > 0) { | ||
36 | + if (!secure && loaded_image->LoadOptionsSize > 0 && *(CHAR16 *)loaded_image->LoadOptions != 0) { | ||
37 | CHAR16 *options; | ||
38 | CHAR8 *line; | ||
39 | UINTN i; | ||
40 | -- | ||
41 | 2.11.0 | ||
42 | |||
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend b/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend index 0db67b13..98eaf45e 100644 --- a/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend +++ b/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend | |||
@@ -20,6 +20,7 @@ SRC_URI_append_intel-x86-common = " \ | |||
20 | file://0003-sd-boot-Support-global-kernel-command-line-fragment.patch \ | 20 | file://0003-sd-boot-Support-global-kernel-command-line-fragment.patch \ |
21 | file://0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch \ | 21 | file://0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch \ |
22 | file://0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch \ | 22 | file://0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch \ |
23 | file://0001-sd-boot-stub-check-LoadOptions-contains-data.patch \ | ||
23 | " | 24 | " |
24 | 25 | ||
25 | PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}" | 26 | PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}" |