On 12/24/24 17:01, Raymond Mao wrote:
From: Ilias Apalodimas <ilias.apalodi...@linaro.org>

When the TCG2 protocol installation fails, we are trying to remove
all the objects we created in tcg2_uninit().

However, there are cases when this function runs before the config
table was installed. So instead of printing an error unconditionally
check against EFI_NOT_FOUND and don't print anything if the table wasn't
installed to begin with.

Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>
Signed-off-by: Raymond Mao <raymond....@linaro.org>
---
Changes in v2
- None.

  lib/efi_loader/efi_tcg2.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c
index 572c6b5bf6..a15c73162e 100644
--- a/lib/efi_loader/efi_tcg2.c
+++ b/lib/efi_loader/efi_tcg2.c
@@ -791,7 +791,7 @@ static void tcg2_uninit(void)
        efi_status_t ret;

        ret = efi_install_configuration_table(&efi_guid_final_events, NULL);
-       if (ret != EFI_SUCCESS)
+       if (ret != EFI_SUCCESS && ret != EFI_NOT_FOUND)
                log_err("Failed to delete final events config table\n");

tcg2_uninit() is called after another problem has occurred.

The user probably is much more interested why efi_tcg2_register() failed
but and less why this secondary issue occurred.

We can drop this message completely.

@Ilias, Raymond

Beyond this patch the following needs to be fixed:

The TCG2 driver should open the TCG2 protocol with BY_DRIVER to ensure
that it cannot be uninstalled without taking down the driver.

Best regards

Heinrich


        efi_free_pool(event_log.buffer);

Reply via email to