linux/drivers/acpi
Erik Schmauss 7773a70897 ACPICA: Namespace: remove address node from global list after method termination
commit c5781ffbbd upstream.

ACPICA commit b233720031a480abd438f2e9c643080929d144c3

ASL operation_regions declare a range of addresses that it uses. In a
perfect world, the range of addresses should be used exclusively by
the AML interpreter. The OS can use this information to decide which
drivers to load so that the AML interpreter and device drivers use
different regions of memory.

During table load, the address information is added to a global
address range list. Each node in this list contains an address range
as well as a namespace node of the operation_region. This list is
deleted at ACPI shutdown.

Unfortunately, ASL operation_regions can be declared inside of control
methods. Although this is not recommended, modern firmware contains
such code. New module level code changes unintentionally removed the
functionality of adding and removing nodes to the global address
range list.

A few months ago, support for adding addresses has been re-
implemented. However, the removal of the address range list was
missed and resulted in some systems to crash due to the address list
containing bogus namespace nodes from operation_regions declared in
control methods. In order to fix the crash, this change removes
dynamic operation_regions after control method termination.

Link: b2337200
Link: https://bugzilla.kernel.org/show_bug.cgi?id=202475
Fixes: 4abb951b73 ("ACPICA: AML interpreter: add region addresses in global list during initialization")
Reported-by: Michael J Gruber <mjg@fedoraproject.org>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-08-13 12:39:04 +01:00
..
acpica ACPICA: Namespace: remove address node from global list after method termination 2019-08-13 12:39:04 +01:00
apei ACPI: APEI / ERST: Fix missing error handling in erst_reader() 2018-03-03 15:52:01 +00:00
ac.c Revert "ACPI / AC: Remove AC's proc directory." 2014-07-07 01:13:46 +02:00
acpi_cmos_rtc.c ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses 2014-10-05 13:40:59 -07:00
acpi_extlog.c ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
acpi_ipmi.c ACPI / IPMI: Cleanup coding styles 2013-09-30 19:46:13 +02:00
acpi_lpss.c ACPI / LPSS: Add missing prv_offset setting for byt/cht PWM devices 2018-11-20 18:05:11 +00:00
acpi_memhotplug.c ACPI / scan: always register memory hotplug scan handler 2014-05-30 16:04:36 +02:00
acpi_pad.c ACPI / PAD: Use time_before() for time comparison 2014-05-27 01:38:23 +02:00
acpi_platform.c ACPI / platform: Add SMB0001 HID to forbidden_id_list 2019-02-11 17:54:08 +00:00
acpi_pnp.c serial: 8250: bind to ALi Fast Infrared Controller (ALI5123) 2015-09-28 10:21:41 +01:00
acpi_processor.c ACPI / processor: Avoid reserving IO regions too early 2016-08-22 22:38:07 +01:00
battery.c Revert "ACPI / battery: fix wrong value of capacity_now reported when fully charged" 2014-10-05 13:40:59 -07:00
battery.h ACPI / battery: move some ACPI_BATTERY_* definitions to header 2014-03-19 01:57:46 +01:00
bgrt.c acpi: bgrt: fix build error due to attribute change 2013-08-22 08:34:39 -07:00
blacklist.c ACPI / blacklist: Add dmi_enable_osi_linux quirk for Asus EEE PC 1015PX 2014-05-08 00:35:50 +02:00
bus.c ACPI / bus: Only call dmi_check_system() on X86 2018-12-16 22:09:09 +00:00
button.c ACPI / button: Add ACPI Button event via netlink routine 2014-03-19 02:06:15 +01:00
cm_sbs.c ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" 2014-05-06 01:52:09 +02:00
container.c ACPI / hotplug: Generate online uevents for ACPI containers 2014-10-05 13:41:02 -07:00
custom_method.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
debugfs.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
device_pm.c ACPI / PM: Add missing pm_generic_complete() invocation 2015-07-15 10:00:25 +01:00
dock.c ACPI / dock: Drop dock_device_ids[] table 2014-04-07 14:11:35 +02:00
ec.c Revert "ACPI / EC: Add support to disallow QR_EC to be issued before completing previous QR_EC" 2017-10-12 15:28:15 +01:00
ec_sys.c ACPI / EC: Mark the function acpi_ec_add_debugfs() as static in ec_sys.c 2014-01-06 00:13:22 +01:00
event.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
fan.c ACPI / fan: do nothing in suspend and poweroff callback 2014-02-20 21:42:09 +01:00
glue.c ACPI / scan: Add bind/unbind callbacks to struct acpi_scan_handler 2014-02-11 00:35:46 +01:00
hed.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
internal.h ACPI / scan: always register ACPI LPSS scan handler 2014-05-30 16:04:36 +02:00
Kconfig ACPI / proc: Do not say when /proc interfaces will be deleted in Kconfig 2014-05-10 13:51:36 +02:00
Makefile ACPI: Fix incompatibility with mcount-based function graph tracing 2017-07-18 18:40:25 +01:00
numa.c ACPI / numa: Use __weak, not the gcc-specific version 2014-02-03 10:39:43 -07:00
nvs.c ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
osl.c ACPI: Use correct IRQ when uninstalling ACPI interrupt handler 2015-12-13 17:48:55 +00:00
pci_irq.c ACPI / PCI: Do not call ISA-specific code if ISA is not supported 2014-02-20 21:37:42 +01:00
pci_link.c ACPI: Remove duplicate definitions of PREFIX 2014-03-19 02:01:57 +01:00
pci_root.c Merge branches 'acpi-cleanup', 'acpi-thermal', 'acpi-pci', 'acpi-lpss' and 'acpi-button' 2014-03-20 13:20:47 +01:00
pci_slot.c ACPI / PCI: Include appropriate header file in pci_slot.c 2014-01-06 00:13:22 +01:00
power.c ACPI: power: Skip duplicate power resource references in _PRx 2019-05-02 21:41:09 +01:00
proc.c ACPI / proc: remove unneeded NULL check 2014-02-05 01:06:21 +01:00
processor_core.c Merge branches 'acpi-processor' and 'pnp' 2014-04-01 22:09:50 +02:00
processor_driver.c ACPI / processor: Fix STARTING/DYING action in acpi_cpu_soft_notify() 2014-05-16 16:36:03 +02:00
processor_idle.c cpuidle: ACPI: do not overwrite name and description of C0 2015-04-27 16:16:35 +01:00
processor_perflib.c ACPI / processor: use acpi_evaluate_ost() to replace open-coded version 2014-02-21 00:27:47 +01:00
processor_thermal.c ACPI: correct minor typos 2013-12-07 01:38:45 +01:00
processor_throttling.c ACPI / processor: Avoid reserving IO regions too early 2016-08-22 22:38:07 +01:00
reboot.c Revert "ACPI: ignore FADT reset-reg-sup flag" 2012-04-20 11:19:35 -07:00
resource.c ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage 2015-07-15 10:01:34 +01:00
sbs.c ACPI / battery: move some ACPI_BATTERY_* definitions to header 2014-03-19 01:57:46 +01:00
sbshc.c ACPI: sbshc: remove raw pointer from printk() message 2018-03-03 15:52:34 +00:00
sbshc.h ACPI: SBS: Ignore alarms coming from unknown devices 2007-12-14 15:14:06 -05:00
scan.c ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline() 2015-05-06 10:36:22 +01:00
sleep.c PM / sleep: trace events for suspend/resume 2014-06-07 00:18:07 +02:00
sleep.h ACPI: Drop power resources driver 2013-01-17 14:11:06 +01:00
sysfs.c ACPI / sysfs: fix error code in get_status() 2016-08-22 22:37:54 +01:00
tables.c ACPI: use kstrto*() instead of simple_strto*() 2014-06-17 14:01:56 +02:00
thermal.c Merge back earlier ACPI thermal material. 2014-05-29 13:28:14 +02:00
utils.c ACPI: add dynamic_debug support 2014-05-26 14:38:57 +02:00
video.c ACPI / video: Load the module even if ACPI is disabled 2015-03-18 15:07:02 +00:00
video_detect.c ACPI / video: Add Dell Inspiron 5737 to the blacklist 2014-07-07 23:38:10 +02:00
wakeup.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00