summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex James <theracermaster@gmail.com>2017-07-10 09:24:02 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-07-20 16:38:26 +0200
commit4e6cbe5689a5af8435bebc57b77d7dd4420b4134 (patch)
tree8a34c0eba53caedc961f1c13ae51c8c7ce9a6291 /drivers
parentACPICA: Tables: Add deferred table verification support (diff)
downloadlinux-4e6cbe5689a5af8435bebc57b77d7dd4420b4134.tar.xz
linux-4e6cbe5689a5af8435bebc57b77d7dd4420b4134.zip
ACPICA: iASL: Ensure that the target node is valid in acpi_ex_create_alias
ACPICA commit 8b14afac65d983610cc5387ede6d85ea5ee075be The following ACPI table contains an invalid target node within the Alias operator: definition_block ("", "SSDT", 1, "Bug", "BugTable", 0x00001000) { Scope (_SB) { Device (DEV0) { Name (_ADR, 1) Device (DEV1) { Alias (_ADR, _ADR) } } } } If an ACPI table contains such an invalid target node in an Alias operator, a segmentation fault will occur when the target node is dereferenced within acpi_ex_create_alias. Add a check for such an invalid target node in acpi_ex_create_alias and return AE_NULL_OBJECT as suggested by @acpibob. Link: https://github.com/acpica/acpica/commit/8b14afac Signed-off-by: Alex James <theracermaster@gmail.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/acpica/excreate.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/excreate.c b/drivers/acpi/acpica/excreate.c
index d43d7da4c734..68675868e20f 100644
--- a/drivers/acpi/acpica/excreate.c
+++ b/drivers/acpi/acpica/excreate.c
@@ -87,6 +87,11 @@ acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state)
target_node->object);
}
+ /* Ensure that the target node is valid */
+ if (!target_node) {
+ return_ACPI_STATUS(AE_NULL_OBJECT);
+ }
+
/*
* For objects that can never change (i.e., the NS node will
* permanently point to the same object), we can simply attach