From 786d4607590e58b3544ca59f82cb9b83ff07e7bb Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 9 Feb 2011 12:12:47 -0500 Subject: [PATCH] - linux-2.6-acpi-fix-alias.patch: fix ACPI object aliasing (#608648) --- kernel.spec | 6 +++++- linux-2.6-acpi-fix-alias.patch | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 linux-2.6-acpi-fix-alias.patch diff --git a/kernel.spec b/kernel.spec index 6fb1c8b4e..e19739276 100644 --- a/kernel.spec +++ b/kernel.spec @@ -648,6 +648,7 @@ Patch390: linux-2.6-defaults-acpi-video.patch Patch391: linux-2.6-acpi-video-dos.patch Patch392: linux-2.6-acpi-video-export-edid.patch Patch393: acpi-ec-add-delay-before-write.patch +Patch394: linux-2.6-acpi-fix-alias.patch Patch450: linux-2.6-input-kill-stupid-messages.patch Patch452: linux-2.6.30-no-pcspkr-modalias.patch @@ -1366,6 +1367,7 @@ ApplyPatch linux-2.6-defaults-acpi-video.patch ApplyPatch linux-2.6-acpi-video-dos.patch ApplyPatch linux-2.6-acpi-video-export-edid.patch ApplyPatch acpi-ec-add-delay-before-write.patch +ApplyPatch linux-2.6-acpi-fix-alias.patch # Various low-impact patches to aid debugging. ApplyPatch linux-2.6-debug-sizeof-structs.patch @@ -2301,8 +2303,10 @@ fi %kernel_variant_files %{with_pae} PAE %kernel_variant_files %{with_pae_debug} PAEdebug - %changelog +* Wed Feb 09 2011 Matthew Garrett +- linux-2.6-acpi-fix-alias.patch: fix ACPI object aliasing (#608648) + * Sat Feb 05 2011 Chuck Ebbert - Linux 2.6.34.8 - Drop merged patches: diff --git a/linux-2.6-acpi-fix-alias.patch b/linux-2.6-acpi-fix-alias.patch new file mode 100644 index 000000000..bd295685d --- /dev/null +++ b/linux-2.6-acpi-fix-alias.patch @@ -0,0 +1,33 @@ +diff -up linux-2.6.34.x86_64/drivers/acpi/acpica/dsobject.c.mjg59 linux-2.6.34.x86_64/drivers/acpi/acpica/dsobject.c +--- linux-2.6.34.x86_64/drivers/acpi/acpica/dsobject.c.mjg59 2010-05-16 17:17:36.000000000 -0400 ++++ linux-2.6.34.x86_64/drivers/acpi/acpica/dsobject.c 2011-02-09 12:08:58.430275518 -0500 +@@ -81,6 +81,7 @@ acpi_ds_build_internal_object(struct acp + { + 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 acp + 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.