linux/drivers/acpi
Ard Biesheuvel 17189d9138 ACPI: ioremap: avoid redundant rounding to OS page size
The arm64 implementation of acpi_os_ioremap() was recently updated to
tighten the checks around which parts of memory are permitted to be
mapped by ACPI code, which generally only needs access to memory regions
that are statically described by firmware, and any attempts to access
memory that is in active use by the OS is generally a bug or a hacking
attempt. This tightening is based on the EFI memory map, which describes
all memory in the system.

The AArch64 architecture permits page sizes of 16k and 64k in addition
to the EFI default, which is 4k, which means that the EFI memory map may
describe regions that cannot be mapped seamlessly if the OS page size is
greater than 4k. This is usually not a problem, given that the EFI spec
does not permit memory regions requiring different memory attributes to
share a 64k page frame, and so the usual rounding to page size performed
by ioremap() is sufficient to deal with this. However, this rounding does
complicate our EFI memory map permission check, due to the loss of
information that occurs when several small regions share a single 64k
page frame (where rounding each of them will result in the same 64k
single page region).

However, due to the fact that the region check occurs *before* the call
to ioremap() where the necessary rounding is performed, we can deal
with this issue simply by removing the redundant rounding performed by
acpi_os_map_iomem(), as it appears to be the only place where the
arguments to a call to acpi_os_ioremap() are rounded up. So omit the
rounding in the call, and instead, apply the necessary masking when
assigning the map->virt member.

Fixes: 1583052d11 ("arm64/acpi: disallow AML memory opregions to access kernel memory")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2020-08-21 20:22:48 +02:00
..
acpica Merge branches 'acpi-mm', 'acpi-tables', 'acpi-apei' and 'acpi-misc' 2020-08-03 13:14:42 +02:00
apei ACPI: APEI: remove redundant assignment to variable rc 2020-07-27 15:22:58 +02:00
arm64 ACPI/IORT: Add an input ID to acpi_dma_configure() 2020-07-28 15:51:31 +01:00
dptf ACPI: DPTF: Add battery participant for TigerLake 2020-06-29 14:00:57 +02:00
nfit libnvdimm for 5.9 2020-08-11 10:59:19 -07:00
numa ACPI: NUMA: Remove the useless 'node >= MAX_NUMNODES' check 2020-07-27 15:19:12 +02:00
pmic ACPI / PMIC: Add i2c address for thermal control 2020-05-18 12:57:24 +02:00
x86 ACPI: Convert to new X86 CPU match macros 2020-03-24 21:30:50 +01:00
ac.c Merge branches 'acpi-mm', 'acpi-tables', 'acpi-apei' and 'acpi-misc' 2020-08-03 13:14:42 +02:00
acpi_adxl.c ACPI/ADXL: Add address translation interface using an ACPI DSM 2018-10-16 10:03:00 +02:00
acpi_amba.c Merge 5.2-rc6 into char-misc-next 2019-06-23 09:23:33 +02:00
acpi_apd.c ACPI: APD: Add a fmw property is_raven 2020-08-07 20:12:00 +02:00
acpi_cmos_rtc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acpi_configfs.c ACPI: configfs: Disallow loading ACPI tables when locked down 2020-06-22 16:41:27 +02:00
acpi_dbg.c ACPI: debug: Make two functions static 2020-05-09 11:33:07 +02:00
acpi_extlog.c EDAC: Drop the EDAC report status checks 2020-04-14 16:01:01 +02:00
acpi_ipmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
acpi_lpat.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_lpit.c ACPI: LPIT: Put the low power idle table after using it 2020-05-09 11:29:16 +02:00
acpi_lpss.c PM: sleep: core: Rename dev_pm_smart_suspend_and_suspended() 2020-04-24 21:32:41 +02:00
acpi_memhotplug.c mm/memory_hotplug: rename walk_memory_range() and pass start+size instead of pfns 2019-07-18 17:08:06 -07:00
acpi_pad.c This tree adds the sched_set_fifo*() encapsulation APIs to remove 2020-08-06 11:55:43 -07:00
acpi_platform.c ACPI: platform: Unregister stale platform devices 2019-10-17 23:48:39 +02:00
acpi_pnp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acpi_processor.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
acpi_tad.c PM: sleep: core: Rename DPM_FLAG_LEAVE_SUSPENDED 2020-04-24 21:34:22 +02:00
acpi_video.c ACPI: video: remove redundant assignments to variable result 2020-03-04 10:43:04 +01:00
acpi_watchdog.c ACPI: watchdog: Put the watchdog action table after parsing 2020-05-09 11:29:17 +02:00
battery.c ACPI: procfs: Remove last dirs after being marked deprecated for a decade 2020-06-22 16:55:47 +02:00
bgrt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
blacklist.c ACPI: blacklist: fix clang warning for unused DMI table 2019-07-11 22:45:00 +02:00
bus.c ACPI: bus: Fix NULL pointer check in acpi_bus_get_private_data() 2019-11-29 11:42:10 +01:00
button.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
container.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cppc_acpi.c ACPI: CPPC: Fix reference count leak in acpi_cppc_processor_probe() 2020-05-28 13:47:53 +02:00
custom_method.c Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
debugfs.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
device_pm.c Merge branches 'pm-cpufreq' and 'pm-acpi' 2020-06-10 17:10:40 +02:00
device_sysfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
dock.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
ec_sys.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 482 2019-06-19 17:09:52 +02:00
ec.c ACPI: EC: add newline when printing 'ec_event_clearing' module parameter 2020-06-22 17:17:18 +02:00
event.c ACPI: event: replace strcpy() by strscpy() 2019-04-23 10:54:26 +02:00
evged.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
fan.c ACPI: fan: Fix Tiger Lake ACPI device ID 2020-06-30 19:32:45 +02:00
glue.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
hed.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
internal.h ACPI: EC: PM: Avoid premature returns from acpi_s2idle_wake() 2020-05-11 10:11:38 +02:00
ioapic.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
irq.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-07-08 11:01:13 -07:00
Kconfig Merge branches 'acpi-mm', 'acpi-tables', 'acpi-apei' and 'acpi-misc' 2020-08-03 13:14:42 +02:00
Makefile ACPI: procfs: Remove last dirs after being marked deprecated for a decade 2020-06-22 16:55:47 +02:00
nvs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
osi.c ACPI: OSI: Shoot duplicate word 2019-11-13 11:12:08 +01:00
osl.c ACPI: ioremap: avoid redundant rounding to OS page size 2020-08-21 20:22:48 +02:00
pci_irq.c ACPI / PCI: fix acpi_pci_irq_enable() memory leak 2019-09-03 09:41:25 +02:00
pci_link.c ACPI: Delete unused proc filename macros 2020-05-14 13:49:33 +02:00
pci_mcfg.c PCI: Constify struct pci_ecam_ops 2020-05-01 16:28:59 +01:00
pci_root.c Merge branch 'pci/misc' 2020-06-04 12:59:11 -05:00
pci_slot.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 491 2019-06-19 17:09:52 +02:00
power.c ACPI: Delete unused proc filename macros 2020-05-14 13:49:33 +02:00
pptt.c ACPI: PPTT: Consistently use unsigned int as parameter type 2020-01-07 11:46:36 +01:00
proc.c ACPI: list_for_each_safe() -> list_for_each_entry_safe() 2020-03-04 10:48:00 +01:00
processor_core.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
processor_driver.c cpufreq: Use per-policy frequency QoS 2019-10-21 02:05:21 +02:00
processor_idle.c ACPI updates for 5.9-rc1 2020-08-03 20:37:22 -07:00
processor_pdc.c
processor_perflib.c ACPI: processor: Add QoS requests for all CPUs 2019-10-25 11:33:48 +02:00
processor_thermal.c ACPI: processor: Add QoS requests for all CPUs 2019-10-25 11:33:48 +02:00
processor_throttling.c x86: ACPI: fix CPU hotplug deadlock 2020-04-04 16:28:24 +02:00
property.c for-5.9/drivers-20200803 2020-08-05 10:51:40 -07:00
reboot.c ACPI: Allow CONFIG_PCI to be unset for reboot 2018-12-20 10:19:49 +01:00
resource.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
sbs.c ACPI: Delete unused proc filename macros 2020-05-14 13:49:33 +02:00
sbshc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372 2019-06-05 17:37:10 +02:00
sbshc.h ACPI: SBS: remove unused const variable 'SMBUS_PEC' 2019-08-23 12:55:09 +02:00
scan.c ACPI/IORT: Add an input ID to acpi_dma_configure() 2020-07-28 15:51:31 +01:00
sleep.c ACPI updates for 5.8-rc1 2020-06-02 13:25:52 -07:00
sleep.h ACPI: PM: Add acpi_[un]register_wakeup_handler() 2020-04-04 19:45:18 +02:00
spcr.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
sysfs.c Merge back sysfs-related ACPI material for v5.9. 2020-06-29 13:49:49 +02:00
tables.c ACPI: tables: Remove the duplicated checks for acpi_parse_entries_array() 2020-07-27 15:19:12 +02:00
thermal.c acpi: thermal: Don't call thermal_zone_device_is_enabled() 2020-07-07 01:26:06 +02:00
tiny-power-button.c ACPI: Add new tiny-power-button driver to directly signal init 2020-02-13 23:36:23 +01:00
utils.c ACPI: utils: Add acpi_evaluate_reg() helper 2020-05-09 11:40:25 +02:00
video_detect.c ACPI: video: Use native backlight on Acer TravelMate 5735Z 2020-05-25 11:58:51 +02:00
wakeup.c ACPI: PM: Add acpi_[un]register_wakeup_handler() 2020-04-04 19:45:18 +02:00