ACPICA: Fix for package reference counts
Prevents infinite loop of 'Large Reference Count' messages in aslts-bdemo-b286 test. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
422f4f90a2
commit
91d02132fe
@ -370,6 +370,8 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
|
||||
union acpi_operand_object *obj_desc = NULL;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_native_uint i;
|
||||
u16 index;
|
||||
u16 reference_count;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ds_build_internal_package_obj);
|
||||
|
||||
@ -447,6 +449,26 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
|
||||
package.
|
||||
elements[i]);
|
||||
}
|
||||
|
||||
if (*obj_desc_ptr) {
|
||||
|
||||
/* Existing package, get existing reference count */
|
||||
|
||||
reference_count =
|
||||
(*obj_desc_ptr)->common.reference_count;
|
||||
if (reference_count > 1) {
|
||||
|
||||
/* Make new element ref count match original ref count */
|
||||
|
||||
for (index = 0; index < (reference_count - 1);
|
||||
index++) {
|
||||
acpi_ut_add_reference((obj_desc->
|
||||
package.
|
||||
elements[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
arg = arg->common.next;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user