[PATCH] efi: Fix ESRT refresh after Capsule update

Indicated by Coverity Scan CID 331147
The ESRT was being refreshed in situations where the UpdateCapsule procedure failed. In that scenario:
1) the ESRT refresh was superfluous. 2) a failed ESRT refresh return code overwrites the UpdateCapsule error return code.
This commit ensures that the ESRT is only refreshed when the UpdateCapsule performs successfully.
CC: Heinrich Schuchardt xypron.glpk@gmx.de CC: Sughosh Ganu sughosh.ganu@linaro.org CC: AKASHI Takahiro takahiro.akashi@linaro.org CC: Tom Rini trini@konsulko.com CC: Andre Przywara andre.przywara@arm.com CC: nd@arm.com
Signed-off-by: Jose Marinho jose.marinho@arm.com --- lib/efi_loader/efi_capsule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 691eda5e0d..a984c347e1 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -481,7 +481,6 @@ efi_status_t EFIAPI efi_update_capsule( if (ret != EFI_SUCCESS) goto out; } -out:
if (IS_ENABLED(CONFIG_EFI_ESRT)) { /* Rebuild the ESRT to reflect any updated FW images. */ @@ -489,6 +488,7 @@ out: if (ret != EFI_SUCCESS) log_warning("EFI Capsule: failed to update ESRT\n"); } +out:
return EFI_EXIT(ret); }

On 4/19/21 3:54 PM, Jose Marinho wrote:
Indicated by Coverity Scan CID 331147
The ESRT was being refreshed in situations where the UpdateCapsule procedure failed. In that scenario:
- the ESRT refresh was superfluous.
- a failed ESRT refresh return code overwrites the UpdateCapsule error
return code.
This commit ensures that the ESRT is only refreshed when the UpdateCapsule performs successfully.
CC: Heinrich Schuchardt xypron.glpk@gmx.de CC: Sughosh Ganu sughosh.ganu@linaro.org CC: AKASHI Takahiro takahiro.akashi@linaro.org CC: Tom Rini trini@konsulko.com CC: Andre Przywara andre.przywara@arm.com CC: nd@arm.com
Signed-off-by: Jose Marinho jose.marinho@arm.com
Reviewed-by: Heinrich Schuchardt xypron.glpk@gmx.de
lib/efi_loader/efi_capsule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 691eda5e0d..a984c347e1 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -481,7 +481,6 @@ efi_status_t EFIAPI efi_update_capsule( if (ret != EFI_SUCCESS) goto out; } -out:
if (IS_ENABLED(CONFIG_EFI_ESRT)) { /* Rebuild the ESRT to reflect any updated FW images. */ @@ -489,6 +488,7 @@ out: if (ret != EFI_SUCCESS) log_warning("EFI Capsule: failed to update ESRT\n"); } +out:
return EFI_EXIT(ret); }
participants (2)
-
Heinrich Schuchardt
-
Jose Marinho