aboutsummaryrefslogtreecommitdiff
path: root/drivers/acpi/parser/psxface.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/parser/psxface.c')
-rw-r--r--drivers/acpi/parser/psxface.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/acpi/parser/psxface.c b/drivers/acpi/parser/psxface.c
index f6904bdf573..80c67f2d3dd 100644
--- a/drivers/acpi/parser/psxface.c
+++ b/drivers/acpi/parser/psxface.c
@@ -99,6 +99,16 @@ acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info)
}
/*
+ * Get a new owner_id for objects created by this method. Namespace
+ * objects (such as Operation Regions) can be created during the
+ * first pass parse.
+ */
+ status = acpi_ut_allocate_owner_id(&info->obj_desc->method.owner_id);
+ if (ACPI_FAILURE(status)) {
+ return_ACPI_STATUS(status);
+ }
+
+ /*
* The caller "owns" the parameters, so give each one an extra
* reference
*/
@@ -129,6 +139,9 @@ acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info)
status = acpi_ps_execute_pass(info);
cleanup:
+ if (info->obj_desc->method.owner_id) {
+ acpi_ut_release_owner_id(&info->obj_desc->method.owner_id);
+ }
/* Take away the extra reference that we gave the parameters above */