Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09079250 authored by Bob Moore's avatar Bob Moore Committed by Len Brown
Browse files

ACPICA: Fix for Alias references within Package objects

This fixes a problem where a reference to an Alias within the
definition of a Package was not always resolved properly. Aliases
to objects like Processors, ThermalZones, etc. were resolved to the
actual object instead of a reference to the object as it should be.
Package objects are only allowed to contain integer, string,
buffer, package, and reference objects.

https://bugzilla.redhat.com/show_bug.cgi?id=608648



Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 150dba38
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,
{
	union acpi_operand_object *obj_desc;
	acpi_status status;
	acpi_object_type type;

	ACPI_FUNCTION_TRACE(ds_build_internal_object);

@@ -172,7 +173,20 @@ acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,
				return_ACPI_STATUS(status);
			}

			switch (op->common.node->type) {
			/*
			 * Special handling for Alias objects. We need to setup the type
			 * and the Op->Common.Node to point to the Alias target. Note,
			 * Alias has at most one level of indirection internally.
			 */
			type = op->common.node->type;
			if (type == ACPI_TYPE_LOCAL_ALIAS) {
				type = obj_desc->common.type;
				op->common.node =
				    ACPI_CAST_PTR(struct acpi_namespace_node,
						  op->common.node->object);
			}

			switch (type) {
				/*
				 * For these types, we need the actual node, not the subobject.
				 * However, the subobject did not get an extra reference count above.