summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory Price <gourry@gourry.net>2024-09-13 19:19:54 -0400
committerArd Biesheuvel <ardb@kernel.org>2024-10-15 20:27:30 +0200
commit63971b0f51faff0ff844a85d297e27861555c328 (patch)
tree58a591702feaa240ca30ba75253c868aa43fe78f
parenta066397e8ed1036e8b959050ab6e830ee90d9f58 (diff)
downloadlinux-63971b0f51faff0ff844a85d297e27861555c328.tar.gz
linux-63971b0f51faff0ff844a85d297e27861555c328.tar.bz2
linux-63971b0f51faff0ff844a85d297e27861555c328.zip
libstub,tpm: do not ignore failure case when reading final event log
Current code fails to check for an error case when reading events from final event log to calculate offsets. Check the error case, and break early because all subsequent calls will also fail. Signed-off-by: Gregory Price <gourry@gourry.net> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
-rw-r--r--drivers/firmware/efi/libstub/tpm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/firmware/efi/libstub/tpm.c b/drivers/firmware/efi/libstub/tpm.c
index d31ea3f351d8..a5c6c4f163fc 100644
--- a/drivers/firmware/efi/libstub/tpm.c
+++ b/drivers/firmware/efi/libstub/tpm.c
@@ -124,6 +124,9 @@ static void efi_retrieve_tcg2_eventlog(int version, efi_physical_addr_t log_loca
event_size = __calc_tpm2_event_size(header,
(void *)(long)log_location,
false);
+ /* If calc fails this is a malformed log */
+ if (!event_size)
+ break;
final_events_size += event_size;
i--;
}