Re: [PATCH] tpm/eventlog: Limit memory allocations for event logs with excessive size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Dec 11, 2024, at 6:26 AM, Stefan Berger <stefanb@xxxxxxxxxxxxx> wrote:
> 
> The TPM2 ACPI BIOS eventlog of a particular machine indicates that the
> length of the log is 4MB, even though the actual length of its useful data,
> when dumped, are only 69kb. To avoid allocating excessive amounts of memory
> for the event log, limit the size of any eventlog to 128kb. This should be
> sufficient memory and also not unnecessarily truncate event logs on any
> other machine.
> 
> Reported-by: Andy Liang <andy.liang@xxxxxxx>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219495
> Cc: Takashi Iwai <tiwai@xxxxxxx>
> Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxxxxx>
> ---
> drivers/char/tpm/eventlog/acpi.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/char/tpm/eventlog/acpi.c b/drivers/char/tpm/eventlog/acpi.c
> index 69533d0bfb51..701fd7d4cc28 100644
> --- a/drivers/char/tpm/eventlog/acpi.c
> +++ b/drivers/char/tpm/eventlog/acpi.c
> @@ -26,6 +26,8 @@
> #include "../tpm.h"
> #include "common.h"
> 
> +#define MAX_TPM_LOG_LEN (128 * 1024)
> +
> struct acpi_tcpa {
> struct acpi_table_header hdr;
> u16 platform_class;
> @@ -135,6 +137,12 @@ int tpm_read_log_acpi(struct tpm_chip *chip)
> return -EIO;
> }
> 
> + if (len > MAX_TPM_LOG_LEN) {
> + dev_warn(&chip->dev, "Excessive TCPA log len %llu truncated to %u bytes\n",
> + len, MAX_TPM_LOG_LEN);
> + len = MAX_TPM_LOG_LEN;
> + }
> +
> /* malloc EventLog space */
> log->bios_event_log = devm_kmalloc(&chip->dev, len, GFP_KERNEL);
> if (!log->bios_event_log)
> -- 
> 2.43.0
> 

Tested-by: Andy Liang <andy.liang@xxxxxxx>




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux