ACPI: watchdog: Put the watchdog action table after parsing
authorHanjun Guo <guohanjun@huawei.com>
Thu, 7 May 2020 09:09:14 +0000 (17:09 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 9 May 2020 09:29:17 +0000 (11:29 +0200)
The mapped watchdog action table should be released after the
successfully parsing, and the failure path in the driver
initialization.

Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpi_watchdog.c

index 6e9ec6e..5c1e9ea 100644 (file)
@@ -73,6 +73,7 @@ static const struct acpi_table_wdat *acpi_watchdog_get_wdat(void)
        }
 
        if (acpi_watchdog_uses_rtc(wdat)) {
+               acpi_put_table((struct acpi_table_header *)wdat);
                pr_info("Skipping WDAT on this system because it uses RTC SRAM\n");
                return NULL;
        }
@@ -117,12 +118,12 @@ void __init acpi_watchdog_init(void)
 
        /* Watchdog disabled by BIOS */
        if (!(wdat->flags & ACPI_WDAT_ENABLED))
-               return;
+               goto fail_put_wdat;
 
        /* Skip legacy PCI WDT devices */
        if (wdat->pci_segment != 0xff || wdat->pci_bus != 0xff ||
            wdat->pci_device != 0xff || wdat->pci_function != 0xff)
-               return;
+               goto fail_put_wdat;
 
        INIT_LIST_HEAD(&resource_list);
 
@@ -188,4 +189,6 @@ void __init acpi_watchdog_init(void)
 
 fail_free_resource_list:
        resource_list_free(&resource_list);
+fail_put_wdat:
+       acpi_put_table((struct acpi_table_header *)wdat);
 }