diff options
Diffstat (limited to 'drivers/acpi/parser/psxface.c')
-rw-r--r-- | drivers/acpi/parser/psxface.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/acpi/parser/psxface.c b/drivers/acpi/parser/psxface.c index f6904bdf5739..80c67f2d3dd2 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) | |||
99 | } | 99 | } |
100 | 100 | ||
101 | /* | 101 | /* |
102 | * Get a new owner_id for objects created by this method. Namespace | ||
103 | * objects (such as Operation Regions) can be created during the | ||
104 | * first pass parse. | ||
105 | */ | ||
106 | status = acpi_ut_allocate_owner_id(&info->obj_desc->method.owner_id); | ||
107 | if (ACPI_FAILURE(status)) { | ||
108 | return_ACPI_STATUS(status); | ||
109 | } | ||
110 | |||
111 | /* | ||
102 | * The caller "owns" the parameters, so give each one an extra | 112 | * The caller "owns" the parameters, so give each one an extra |
103 | * reference | 113 | * reference |
104 | */ | 114 | */ |
@@ -129,6 +139,9 @@ acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info) | |||
129 | status = acpi_ps_execute_pass(info); | 139 | status = acpi_ps_execute_pass(info); |
130 | 140 | ||
131 | cleanup: | 141 | cleanup: |
142 | if (info->obj_desc->method.owner_id) { | ||
143 | acpi_ut_release_owner_id(&info->obj_desc->method.owner_id); | ||
144 | } | ||
132 | 145 | ||
133 | /* Take away the extra reference that we gave the parameters above */ | 146 | /* Take away the extra reference that we gave the parameters above */ |
134 | 147 | ||