Message ID | 20240906202745.11159-3-gourry@gourry.net |
---|---|
State | Superseded |
Headers | show |
Series | libstub,tpm: fix small bugs and improve error reporting | expand |
Hi Gregory, On Fri, 6 Sept 2024 at 23:28, 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 | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c > index 9c3613e6af15..6e03eed0dc6f 100644 > --- a/drivers/firmware/efi/tpm.c > +++ b/drivers/firmware/efi/tpm.c > @@ -61,7 +61,11 @@ 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); > + goto out; > + } ret is going to be 0 here. I haven't followed the rest of the code and where this function is used, but you probably need to return -ENOMEM Thanks /Ilias > > if (efi.tpm_final_log == EFI_INVALID_TABLE_ADDR) { > pr_info("TPM Final Events table not present\n"); > -- > 2.43.0 >
On Fri, Sep 13, 2024 at 10:02:32AM +0300, Ilias Apalodimas wrote: > Hi Gregory, > > On Fri, 6 Sept 2024 at 23:28, 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 | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c > > index 9c3613e6af15..6e03eed0dc6f 100644 > > --- a/drivers/firmware/efi/tpm.c > > +++ b/drivers/firmware/efi/tpm.c > > @@ -61,7 +61,11 @@ 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); > > + goto out; > > + } > > ret is going to be 0 here. I haven't followed the rest of the code and > where this function is used, but you probably need to return -ENOMEM > good catch, will send v2 > Thanks > /Ilias > > > > if (efi.tpm_final_log == EFI_INVALID_TABLE_ADDR) { > > pr_info("TPM Final Events table not present\n"); > > -- > > 2.43.0 > >
diff --git a/drivers/firmware/efi/tpm.c b/drivers/firmware/efi/tpm.c index 9c3613e6af15..6e03eed0dc6f 100644 --- a/drivers/firmware/efi/tpm.c +++ b/drivers/firmware/efi/tpm.c @@ -61,7 +61,11 @@ 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); + goto out; + } if (efi.tpm_final_log == EFI_INVALID_TABLE_ADDR) { pr_info("TPM Final Events table not present\n");
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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)