ACPICA: Dispatcher: Fix a resource leak issue in acpi_ds_auto_serialize_method().
authorLv Zheng <lv.zheng@intel.com>
Thu, 21 May 2015 02:31:06 +0000 (10:31 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 22 May 2015 01:22:20 +0000 (03:22 +0200)
ACPICA commit 29d03840cbab435e8ea82e9339ff9d84535c647d

This patch fixes a resource leak issue in acpi_ds_auto_serialize_method().
It is reported by the "Coverity" tool as unsecure code. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/29d03840
Link: https://jira01.devtools.intel.com/browse/LCK-2142
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/dsmethod.c

index d72565a..85bb951 100644 (file)
@@ -116,6 +116,7 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
        walk_state =
            acpi_ds_create_walk_state(node->owner_id, NULL, NULL, NULL);
        if (!walk_state) {
+               acpi_ps_free_op(op);
                return_ACPI_STATUS(AE_NO_MEMORY);
        }
 
@@ -125,6 +126,7 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
                                  obj_desc->method.aml_length, NULL, 0);
        if (ACPI_FAILURE(status)) {
                acpi_ds_delete_walk_state(walk_state);
+               acpi_ps_free_op(op);
                return_ACPI_STATUS(status);
        }
 
@@ -133,9 +135,6 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
        /* Parse the method, scan for creation of named objects */
 
        status = acpi_ps_parse_aml(walk_state);
-       if (ACPI_FAILURE(status)) {
-               return_ACPI_STATUS(status);
-       }
 
        acpi_ps_delete_parse_tree(op);
        return_ACPI_STATUS(status);