ACPI / TPM: fix memory leak when walking ACPI namespace
In function ppi_callback(), memory allocated by acpi_get_name() will get leaked when current device isn't the desired TPM device, so fix the memory leak. Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Cc: All applicable <stable@vger.kernel.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
d6e0a2dd12
commit
df45c712d1
|
@ -27,15 +27,18 @@ static char *tpm_device_name = "TPM";
|
|||
static acpi_status ppi_callback(acpi_handle handle, u32 level, void *context,
|
||||
void **return_value)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_status status = AE_OK;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
status = acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
if (strstr(buffer.pointer, context) != NULL) {
|
||||
*return_value = handle;
|
||||
|
||||
if (ACPI_SUCCESS(acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer))) {
|
||||
if (strstr(buffer.pointer, context) != NULL) {
|
||||
*return_value = handle;
|
||||
status = AE_CTRL_TERMINATE;
|
||||
}
|
||||
kfree(buffer.pointer);
|
||||
return AE_CTRL_TERMINATE;
|
||||
}
|
||||
return AE_OK;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static inline void ppi_assign_params(union acpi_object params[4],
|
||||
|
|
Loading…
Reference in New Issue