You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
tpm: acpi: Call acpi_put_table() to fix memory leak
commit 8740a12ca2e2959531ad253bac99ada338b33d80 upstream. The start and length of the event log area are obtained from TPM2 or TCPA table, so we call acpi_get_table() to get the ACPI information, but the acpi_get_table() should be coupled with acpi_put_table() to release the ACPI memory, add the acpi_put_table() properly to fix the memory leak. While we are at it, remove the redundant empty line at the end of the tpm_read_log_acpi(). Fixes:0bfb237460("tpm: Move eventlog files to a subdirectory") Fixes:85467f63a0("tpm: Add support for event log pointer found in TPM2 ACPI table") Cc: stable@vger.kernel.org Signed-off-by: Hanjun Guo <guohanjun@huawei.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b51d5fed9f
commit
8ddc48068a
@@ -90,16 +90,21 @@ int tpm_read_log_acpi(struct tpm_chip *chip)
|
||||
return -ENODEV;
|
||||
|
||||
if (tbl->header.length <
|
||||
sizeof(*tbl) + sizeof(struct acpi_tpm2_phy))
|
||||
sizeof(*tbl) + sizeof(struct acpi_tpm2_phy)) {
|
||||
acpi_put_table((struct acpi_table_header *)tbl);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
tpm2_phy = (void *)tbl + sizeof(*tbl);
|
||||
len = tpm2_phy->log_area_minimum_length;
|
||||
|
||||
start = tpm2_phy->log_area_start_address;
|
||||
if (!start || !len)
|
||||
if (!start || !len) {
|
||||
acpi_put_table((struct acpi_table_header *)tbl);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
acpi_put_table((struct acpi_table_header *)tbl);
|
||||
format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_2;
|
||||
} else {
|
||||
/* Find TCPA entry in RSDT (ACPI_LOGICAL_ADDRESSING) */
|
||||
@@ -120,8 +125,10 @@ int tpm_read_log_acpi(struct tpm_chip *chip)
|
||||
break;
|
||||
}
|
||||
|
||||
acpi_put_table((struct acpi_table_header *)buff);
|
||||
format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
|
||||
}
|
||||
|
||||
if (!len) {
|
||||
dev_warn(&chip->dev, "%s: TCPA log area empty\n", __func__);
|
||||
return -EIO;
|
||||
@@ -156,5 +163,4 @@ err:
|
||||
kfree(log->bios_event_log);
|
||||
log->bios_event_log = NULL;
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user