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: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
150dba38f0
commit
09079250db
@ -81,6 +81,7 @@ acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,
|
|||||||
{
|
{
|
||||||
union acpi_operand_object *obj_desc;
|
union acpi_operand_object *obj_desc;
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
|
acpi_object_type type;
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE(ds_build_internal_object);
|
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);
|
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.
|
* For these types, we need the actual node, not the subobject.
|
||||||
* However, the subobject did not get an extra reference count above.
|
* However, the subobject did not get an extra reference count above.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user