[PATCH] efi_loader: Fix to set bootdev_root correctly if bootdev found

Fix find_boot_device() to set bootdev_root if it finds the bootdev from BootNext. Currently it sets the bootdev_root only when it finds bootdev from BootOrder.
Fixes: c74cd8bd08d1 ("efi_loader: capsule: add capsule_on_disk support") Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- lib/efi_loader/efi_capsule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 50bed32bfb..b736f4ef9e 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -632,7 +632,7 @@ static efi_status_t find_boot_device(void) ret = get_dp_device(boot_var16, &boot_dev); if (ret == EFI_SUCCESS) { if (device_is_present_and_system_part(boot_dev)) { - goto out; + goto found; } else { efi_free_pool(boot_dev); boot_dev = NULL; @@ -675,6 +675,7 @@ skip: efi_free_pool(boot_dev); boot_dev = NULL; } +found: if (boot_dev) { u16 *path_str;

On 7/12/21 11:05 AM, Masami Hiramatsu wrote:
Fix find_boot_device() to set bootdev_root if it finds the bootdev from BootNext. Currently it sets the bootdev_root only when it finds bootdev from BootOrder.
Fixes: c74cd8bd08d1 ("efi_loader: capsule: add capsule_on_disk support") Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
lib/efi_loader/efi_capsule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 50bed32bfb..b736f4ef9e 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -632,7 +632,7 @@ static efi_status_t find_boot_device(void) ret = get_dp_device(boot_var16, &boot_dev); if (ret == EFI_SUCCESS) { if (device_is_present_and_system_part(boot_dev)) {
goto out;
goto found; } else { efi_free_pool(boot_dev); boot_dev = NULL;
@@ -675,6 +675,7 @@ skip: efi_free_pool(boot_dev); boot_dev = NULL; } +found: if (boot_dev) { u16 *path_str;
The code that follows should be reworked too:
<cite> u16 *path_str;
path_str = efi_dp_str(boot_dev); log_debug("Boot device %ls\n", path_str); efi_free_pool(path_str); </cite>
Use log-debug("Boot device %pD\n", boot_dev); instead.
But that is work for a separate patch.
Reviewed-by: Heinrich Schuchardt xypron.glpk@gmx.de

Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org
On Mon, 12 Jul 2021 at 20:40, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 7/12/21 11:05 AM, Masami Hiramatsu wrote:
Fix find_boot_device() to set bootdev_root if it finds the bootdev from BootNext. Currently it sets the bootdev_root only when it finds bootdev from BootOrder.
Fixes: c74cd8bd08d1 ("efi_loader: capsule: add capsule_on_disk support") Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
lib/efi_loader/efi_capsule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 50bed32bfb..b736f4ef9e 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -632,7 +632,7 @@ static efi_status_t find_boot_device(void) ret = get_dp_device(boot_var16, &boot_dev); if (ret == EFI_SUCCESS) { if (device_is_present_and_system_part(boot_dev)) {
goto out;
goto found; } else { efi_free_pool(boot_dev); boot_dev = NULL;
@@ -675,6 +675,7 @@ skip: efi_free_pool(boot_dev); boot_dev = NULL; } +found: if (boot_dev) { u16 *path_str;
The code that follows should be reworked too:
<cite> u16 *path_str;
path_str = efi_dp_str(boot_dev); log_debug("Boot device %ls\n", path_str); efi_free_pool(path_str);
</cite>
Use log-debug("Boot device %pD\n", boot_dev); instead.
But that is work for a separate patch.
Reviewed-by: Heinrich Schuchardt xypron.glpk@gmx.de

Hi Heinrich,
2021年7月13日(火) 2:40 Heinrich Schuchardt xypron.glpk@gmx.de:
On 7/12/21 11:05 AM, Masami Hiramatsu wrote:
Fix find_boot_device() to set bootdev_root if it finds the bootdev from BootNext. Currently it sets the bootdev_root only when it finds bootdev from BootOrder.
Fixes: c74cd8bd08d1 ("efi_loader: capsule: add capsule_on_disk support") Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
lib/efi_loader/efi_capsule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 50bed32bfb..b736f4ef9e 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -632,7 +632,7 @@ static efi_status_t find_boot_device(void) ret = get_dp_device(boot_var16, &boot_dev); if (ret == EFI_SUCCESS) { if (device_is_present_and_system_part(boot_dev)) {
goto out;
goto found; } else { efi_free_pool(boot_dev); boot_dev = NULL;
@@ -675,6 +675,7 @@ skip: efi_free_pool(boot_dev); boot_dev = NULL; } +found: if (boot_dev) { u16 *path_str;
The code that follows should be reworked too:
<cite> u16 *path_str;
path_str = efi_dp_str(boot_dev); log_debug("Boot device %ls\n", path_str); efi_free_pool(path_str);
</cite>
Use log-debug("Boot device %pD\n", boot_dev); instead.
But that is work for a separate patch.
OK, let me fix that.
Reviewed-by: Heinrich Schuchardt xypron.glpk@gmx.de
Thank you!
participants (3)
-
Heinrich Schuchardt
-
Ilias Apalodimas
-
Masami Hiramatsu