diff mbox series

[v2,2/4] tpm: do not ignore memblock_reserve return value

Message ID 20240913231954.20081-3-gourry@gourry.net
State Accepted
Commit c33c28f9f6e017702374e1ab907dfa5a63db5301
Headers show
Series libstub,tpm: fix small bugs and improve error reporting | expand

Commit Message

Gregory Price Sept. 13, 2024, 11:19 p.m. UTC
tpm code currently ignores a relevant failure case silently.
Add an error to make this failure non-silent.

Signed-off-by: Gregory Price <gourry@gourry.net>
---
 drivers/firmware/efi/tpm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Ard Biesheuvel Sept. 16, 2024, 8:29 a.m. UTC | #1
(cc Dave)

On Sat, 14 Sept 2024 at 15:26, Gregory Price <gourry@gourry.net> wrote:
>
> tpm code currently ignores a relevant failure case silently.
> Add an error to make this failure non-silent.
>
> Signed-off-by: Gregory Price <gourry@gourry.net>
> ---
>  drivers/firmware/efi/tpm.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c
> index 9c3613e6af15..b0cc2cc11d7e 100644
> --- a/drivers/firmware/efi/tpm.c
> +++ b/drivers/firmware/efi/tpm.c
> @@ -61,7 +61,12 @@ int __init efi_tpm_eventlog_init(void)
>         }
>
>         tbl_size = sizeof(*log_tbl) + log_tbl->size;
> -       memblock_reserve(efi.tpm_log, tbl_size);
> +       if (memblock_reserve(efi.tpm_log, tbl_size)) {
> +               pr_err("TPM Event Log memblock reserve fails (0x%lx, 0x%x)\n",
> +                      efi.tpm_log, tbl_size);
> +               ret = -ENOMEM;
> +               goto out;
> +       }
>

Given the discussion in the other thread, I wonder if this should be
efi_mem_reserve() instead - might as well fix that too.

Dave?
Usama Arif Sept. 16, 2024, 10:47 a.m. UTC | #2
On 16/09/2024 09:29, Ard Biesheuvel wrote:
> (cc Dave)
> 
> On Sat, 14 Sept 2024 at 15:26, Gregory Price <gourry@gourry.net> wrote:
>>
>> tpm code currently ignores a relevant failure case silently.
>> Add an error to make this failure non-silent.
>>
>> Signed-off-by: Gregory Price <gourry@gourry.net>
>> ---
>>  drivers/firmware/efi/tpm.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c
>> index 9c3613e6af15..b0cc2cc11d7e 100644
>> --- a/drivers/firmware/efi/tpm.c
>> +++ b/drivers/firmware/efi/tpm.c
>> @@ -61,7 +61,12 @@ int __init efi_tpm_eventlog_init(void)
>>         }
>>
>>         tbl_size = sizeof(*log_tbl) + log_tbl->size;
>> -       memblock_reserve(efi.tpm_log, tbl_size);
>> +       if (memblock_reserve(efi.tpm_log, tbl_size)) {
>> +               pr_err("TPM Event Log memblock reserve fails (0x%lx, 0x%x)\n",
>> +                      efi.tpm_log, tbl_size);
>> +               ret = -ENOMEM;
>> +               goto out;
>> +       }
>>
> 
> Given the discussion in the other thread, I wonder if this should be
> efi_mem_reserve() instead - might as well fix that too.
> 
> Dave?

I dont believe efi_mem_reserve is needed after your patch in
https://lore.kernel.org/all/20240912155159.1951792-2-ardb+git@google.com/

which will cover both kexec_load and kexec_file_load cases.

Thanks,
Usama
diff mbox series

Patch

diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c
index 9c3613e6af15..b0cc2cc11d7e 100644
--- a/drivers/firmware/efi/tpm.c
+++ b/drivers/firmware/efi/tpm.c
@@ -61,7 +61,12 @@  int __init efi_tpm_eventlog_init(void)
 	}
 
 	tbl_size = sizeof(*log_tbl) + log_tbl->size;
-	memblock_reserve(efi.tpm_log, tbl_size);
+	if (memblock_reserve(efi.tpm_log, tbl_size)) {
+		pr_err("TPM Event Log memblock reserve fails (0x%lx, 0x%x)\n",
+		       efi.tpm_log, tbl_size);
+		ret = -ENOMEM;
+		goto out;
+	}
 
 	if (efi.tpm_final_log == EFI_INVALID_TABLE_ADDR) {
 		pr_info("TPM Final Events table not present\n");