Message ID | 20210419135434.9164-1-jose.marinho@arm.com |
---|---|
State | Accepted, archived |
Commit | 3627cf4bff9b29cf9e41ad88b56f469a3675aba2 |
Delegated to: | Heinrich Schuchardt |
Headers | show |
Series | efi: Fix ESRT refresh after Capsule update | expand |
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: > > 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> 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); > } >
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); }
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(-)