wmi: fix memory leak in parse_wdg
PATCH 1/1 wmi: fix memory leak in parse_wdg
This patch properly kfree out.pointer and gblock in error path.
Signed-off-by Axel Lin <[email protected]>
--- drivers/platform/x86/wmi.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-)
drivers/platform/x86/wmi.c +11 -5
@@ -827,8 +827,10 @@ static __init acpi_status parse_wdg(acpi_handle handle) total = obj->buffer.length /sizeof (struct guid_block ); gblock =kmemdup (obj->buffer.pointer, obj->buffer.length,GFP_KERNEL ); -if (!gblock) -return AE_NO_MEMORY ; +if (!gblock) { + status =AE_NO_MEMORY ; + goto out_free_pointer; + }for (i =0 ; i < total; i++) {/*
@@ -848,8 +850,10 @@ static __init acpi_status parse_wdg(acpi_handle handle)wmi_dump_wdg (&gblock[i]); wblock =kzalloc (sizeof (struct wmi_block ),GFP_KERNEL ); -if (!wblock) -return AE_NO_MEMORY ; +if (!wblock) { + status =AE_NO_MEMORY ; + goto out_free_gblock; + } wblock->gblock = gblock[i]; wblock->handle = handle;
@@ -860,8 +864,10 @@ static __init acpi_status parse_wdg(acpi_handle handle)list_add_tail (&wblock->list, &wmi_blocks.list); } -kfree (out.pointer); +out_free_gblock:kfree (gblock); +out_free_pointer: +kfree (out.pointer);return status; }
Signature · 1 line
1.5.4.3