ACPI: APEI: Put the error injection table for error path and module exit
authorHanjun Guo <guohanjun@huawei.com>
Thu, 7 May 2020 09:09:16 +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 error injection table will be used after einj_init()
for debugfs, but it should be released for module exit and error
path of einj_init().

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

index 086373f..1331567 100644 (file)
@@ -692,7 +692,7 @@ static int __init einj_init(void)
        rc = einj_check_table(einj_tab);
        if (rc) {
                pr_warn(FW_BUG "Invalid EINJ table.\n");
-               return -EINVAL;
+               goto err_put_table;
        }
 
        rc = -ENOMEM;
@@ -760,6 +760,8 @@ err_release:
 err_fini:
        apei_resources_fini(&einj_resources);
        debugfs_remove_recursive(einj_debug_dir);
+err_put_table:
+       acpi_put_table((struct acpi_table_header *)einj_tab);
 
        return rc;
 }
@@ -780,6 +782,7 @@ static void __exit einj_exit(void)
        apei_resources_release(&einj_resources);
        apei_resources_fini(&einj_resources);
        debugfs_remove_recursive(einj_debug_dir);
+       acpi_put_table((struct acpi_table_header *)einj_tab);
 }
 
 module_init(einj_init);