linux/drivers/acpi
Jeremy Linton adfab6b392 ACPI: PPTT: Fix processor subtable walk
The original PPTT code had a bug where the processor subtable length
was not correctly validated when encountering a truncated
acpi_pptt_processor node.

Commit 7ab4f0e37a ("ACPI PPTT: Fix coding mistakes in a couple of
sizeof() calls") attempted to fix this by validating the size is as
large as the acpi_pptt_processor node structure. This introduced a
regression where the last processor node in the PPTT table is ignored
if it doesn't contain any private resources. That results errors like:

  ACPI PPTT: PPTT table found, but unable to locate core XX (XX)
  ACPI: SPE must be homogeneous

Furthermore, it fails in a common case where the node length isn't
equal to the acpi_pptt_processor structure size, leaving the original
bug in a modified form.

Correct the regression by adjusting the loop termination conditions as
suggested by the bug reporters. An additional check performed after
the subtable node type is detected, validates the acpi_pptt_processor
node is fully contained in the PPTT table. Repeating the check in
acpi_pptt_leaf_node() is largely redundant as the node is already
known to be fully contained in the table.

The case where a final truncated node's parent property is accepted,
but the node itself is rejected should not be considered a bug.

Fixes: 7ab4f0e37a ("ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls")
Reported-by: Maximilian Heyne <mheyne@amazon.de>
Closes: https://lore.kernel.org/linux-acpi/20250506-draco-taped-15f475cd@mheyne-amazon/
Reported-by: Yicong Yang <yangyicong@hisilicon.com>
Closes: https://lore.kernel.org/linux-acpi/20250507035124.28071-1-yangyicong@huawei.com/
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Tested-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Maximilian Heyne <mheyne@amazon.de>
Cc: All applicable <stable@vger.kernel.org> # 7ab4f0e37a0f4: ACPI PPTT: Fix coding mistakes ...
Link: https://patch.msgid.link/20250508023025.1301030-1-jeremy.linton@arm.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2025-05-08 20:23:16 +02:00
..
acpica gcc-15: acpi: sprinkle random '__nonstring' crumbles around 2025-04-20 11:57:54 -07:00
apei acpi/ghes, cxl/pci: Process CXL CPER Protocol Errors 2025-03-14 14:21:45 -07:00
arm64 iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
dptf ACPI: DPTF: Support Panther Lake 2024-12-10 20:01:38 +01:00
nfit acpi: nfit: fix narrowing conversion in acpi_nfit_ctl 2025-03-03 08:03:43 -06:00
numa cxl for v6.15 2025-04-02 20:04:43 -07:00
pmic ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe() 2024-08-02 17:05:08 +02:00
riscv ACPI: introduce acpi_arch_init() 2024-11-22 21:32:25 +01:00
x86 ACPI: x86: Extend Lenovo Yoga Tab 3 quirk with skip GPIO event-handlers 2025-03-27 20:41:19 +01:00
ac.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
acpi_adxl.c
acpi_apd.c ACPI: APD: Use strscpy() instead of strcpy() 2024-11-05 21:35:35 +01:00
acpi_configfs.c
acpi_dbg.c
acpi_extlog.c mm/early_ioremap: add null pointer checks to prevent NULL-pointer dereference 2025-01-13 22:40:59 -08:00
acpi_ffh.c ACPI: FFH: Drop the inclusion of linux/arm-smccc.h 2023-06-12 19:28:20 +02:00
acpi_fpdt.c ACPI: FPDT: properly handle invalid FPDT subtables 2023-10-03 21:12:22 +02:00
acpi_ipmi.c ACPI: IPMI: Add helper to wait for when SMI is selected 2024-04-28 10:07:34 -07:00
acpi_lpat.c
acpi_lpit.c ACPI: LPIT: Avoid u32 multiplication overflow 2023-11-22 20:55:20 +01:00
acpi_memhotplug.c mm/memory_hotplug: allow memmap on memory hotplug request to fallback 2023-08-21 13:37:48 -07:00
acpi_pad.c x86/cpu: Make all all CPUID leaf names consistent 2024-12-18 06:17:46 -08:00
acpi_pcc.c
acpi_platform.c ACPI: platform: Move SMB0001 HID to the header and reuse 2023-07-04 19:28:20 +02:00
acpi_pnp.c More ACPI updates for 6.15-rc1 2025-04-02 15:16:30 -07:00
acpi_processor.c Merge branches 'acpi-video', 'acpi-resource', 'acpi-pad' and 'acpi-misc' 2024-09-11 22:05:16 +02:00
acpi_tad.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
acpi_video.c ACPI: video: Handle fetching EDID as ACPI_TYPE_PACKAGE 2025-03-31 17:02:14 +02:00
acpi_watchdog.c ACPI: use %pe for better readability of errors while printing 2024-02-16 19:31:12 +01:00
battery.c ACPI: battery: Rename extensions to hook in messages 2024-12-10 19:50:30 +01:00
bgrt.c ACPI: BGRT: Constify 'struct bin_attribute' 2024-12-10 19:34:41 +01:00
bus.c ACPI: introduce acpi_arch_init() 2024-11-22 21:32:25 +01:00
button.c ACPI: button: Only send KEY_POWER for ACPI_BUTTON_NOTIFY_STATUS 2025-04-07 19:52:17 +02:00
container.c
cppc_acpi.c Merge branches 'acpi-battery', 'acpi-ec', 'acpi-pfr' and 'acpi-osl' 2024-11-15 20:45:14 +01:00
debugfs.c
device_pm.c PM: sleep: Use DPM_FLAG_SMART_SUSPEND conditionally 2025-02-19 13:22:12 +01:00
device_sysfs.c ACPI: sysfs: remove return value of acpi_device_setup_files() 2024-08-02 16:44:22 +02:00
dock.c ACPI: scan: Introduce typedef:s for struct acpi_hotplug_context members 2024-04-04 21:19:02 +02:00
ec_sys.c
ec.c ACPI: EC: Set ec_no_wakeup for Lenovo Go S 2025-04-07 19:59:33 +02:00
event.c ACPI: event: Use strscpy() instead of strcpy() 2024-11-05 21:35:35 +01:00
evged.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
fan_attr.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan_core.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan_hwmon.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan.h ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
glue.c ACPI: Fix selecting wrong ACPI fwnode for the iGPU on some Dell laptops 2023-01-10 20:23:48 +01:00
hed.c ACPI: HED: Always initialize before evged 2025-02-18 19:24:29 +01:00
internal.h ACPI: EC: make EC support compile-time conditional 2024-10-24 17:47:15 +02:00
ioapic.c ACPI: Silence missing prototype warnings 2022-12-30 19:12:30 +01:00
irq.c ACPI: irq: Fix incorrect return value in acpi_register_gsi() 2023-10-18 13:11:04 +02:00
Kconfig ACPI: HED: Always initialize before evged 2025-02-18 19:24:29 +01:00
Makefile tracing: Disable branch profiling in noinstr code 2025-03-22 09:49:26 +01:00
mipi-disco-img.c ACPI: bus: change the prototype for acpi_get_physical_device_location 2024-12-19 20:59:35 +01:00
nhlt.c ACPI: NHLT: Streamline struct naming 2024-03-27 16:36:45 +01:00
nvs.c
osi.c ACPI: OSI: refactor deprecated strncpy() 2023-09-21 20:55:43 +02:00
osl.c ACPI: OSL: Use usleep_range() in acpi_os_sleep() 2024-12-10 19:45:27 +01:00
pci_irq.c xen/pvh: Setup gsi for passthrough device 2024-09-25 09:54:52 +02:00
pci_link.c ACPI: pci_link: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
pci_mcfg.c PCI/ACPI: Increase Loongson max PCI hosts to 8 2024-08-01 18:04:05 -05:00
pci_root.c ACPI: pci_root: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
pci_slot.c ACPI: use %pe for better readability of errors while printing 2024-02-16 19:31:12 +01:00
pfr_telemetry.c Merge branch 'acpi-misc' 2024-11-15 20:52:02 +01:00
pfr_update.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
platform_profile.c ACPI: platform_profile: Optimize _aggregate_choices() 2025-03-27 20:44:29 +01:00
power.c ACPI: power: Use str_on_off() helper function 2025-02-18 18:48:32 +01:00
pptt.c ACPI: PPTT: Fix processor subtable walk 2025-05-08 20:23:16 +02:00
prmt.c ACPI: PRM: Remove unnecessary strict handler address checks 2025-02-05 21:16:40 +01:00
proc.c
processor_core.c Updates for the interrupt subsystem: 2024-07-22 13:52:05 -07:00
processor_driver.c ACPI: processor: Move arch_init_invariance_cppc() call later 2024-11-06 21:31:36 +01:00
processor_idle.c ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid 2025-03-31 13:59:04 +02:00
processor_pdc.c ACPI: processor: Fix uninitialized access of buf in acpi_set_pdc_bits() 2023-09-18 12:16:16 +02:00
processor_perflib.c ACPI: processor_perflib: extend X86 dependency 2024-11-05 21:40:22 +01:00
processor_thermal.c ACPI: processor: reduce CPUFREQ thermal reduction pctg for Tegra241 2023-12-06 20:52:47 +01:00
processor_throttling.c
property.c ACPI: property: Fix return value for nval == 0 in acpi_data_prop_read() 2025-02-05 21:09:28 +01:00
reboot.c
resource.c ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP 2025-03-27 20:38:08 +01:00
sbs.c ACPI: SBS: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
sbshc.c Merge branch 'acpi-misc' 2024-11-15 20:52:02 +01:00
sbshc.h
scan.c iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
sleep.c ACPI: PM: Quirk ASUS ROG M16 to default to S3 sleep 2024-09-10 20:19:52 +02:00
sleep.h
spcr.c ACPI: SPCR: Amend indentation 2023-03-27 20:50:28 +02:00
sysfs.c ACPI: sysfs: Constify 'struct bin_attribute' 2024-12-10 19:34:41 +01:00
tables.c gcc-15: disable '-Wunterminated-string-initialization' entirely for now 2025-04-20 15:30:53 -07:00
thermal_lib.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
thermal.c ACPI: thermal: Fix stale comment regarding trip points 2025-02-18 18:43:18 +01:00
tiny-power-button.c ACPI: tiny-power-button: Eliminate the driver notify callback 2023-06-16 19:48:09 +02:00
utils.c ACPI: bus: change the prototype for acpi_get_physical_device_location 2024-12-19 20:59:35 +01:00
video_detect.c ACPI: video: force native for Apple MacbookPro11,2 and Air7,2 2024-11-13 12:48:50 +01:00
viot.c iommu: Resolve fwspec ops automatically 2024-07-04 14:36:03 +01:00
wakeup.c