Description
In the Linux kernel, the following vulnerability has been resolved: ACPI: CPPC: Suppress UBSAN warning caused by field misuse The definition of reg->access_width changes depending on the reg->space_id type. Type ACPI_ADR_SPACE_PLATFORM_COMM uses access_width to indicate the PCC region, which can result in a UBSAN if the value is greater than 4. For example: UBSAN: shift-out-of-bounds in drivers/acpi/cppc_acpi.c:1090:9 shift exponent 32 is too large for 32-bit type 'int' CPU: 61 UID: 0 PID: 1220 Comm: (udev-worker) Not tainted 7.0.10-201.fc44.aarch64 #1 PREEMPT(lazy) Hardware name: To be filled by O.E.M. Call trace: ...(trimming) ubsan_epilogue+0x10/0x48 __ubsan_handle_shift_out_of_bounds+0xdc/0x1e0 cpc_write+0x4d0/0x670 cppc_set_perf+0x18c/0x490 cppc_cpufreq_cpu_init+0x1c8/0x380 [cppc_cpufreq] ... (trimming) Lets fix this by validating the region type, as well as whether access_width has a value. Then since we are returning bit_width directly for ACPI_ADR_SPACE_PLATFORM_COMM, drop the code correcting the size.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
4949affd5288b867cdf115f5b08d6166b2027f87 to < b54c4632946ae42f2b39ed38abd909bbf78cbcc2affected01fc53be672acae37e611c80cc0b4f3939584de3 to < e904596ba6dd108534ffa15e3e46b2fe245145e2affected1b890ae474d19800a6be1696df7fb4d9a41676e4 to < 2fb80e962029000959f651665baa4838cc92eb99affected2f4a4d63a193be6fd530d180bb13c3592052904c to < 37f28bf8f14672dfa395994e41fd778a63f0bf5caffected2f4a4d63a193be6fd530d180bb13c3592052904c to < f29dc6132d4968e39d8fa575d1a12e2c718ce57baffected2f4a4d63a193be6fd530d180bb13c3592052904c to < dc066bd13c860bb27d6ace511210e18b8064c1d9affected2f4a4d63a193be6fd530d180bb13c3592052904c to < 1b1acf2dada0cc3931bb2cb9ff8832edfbee46a1affected6cb6b12b78dcd8867a3fdbb1b6d0ed1df2b208d1affected5.15.154 to < 5.15.155affected6.1.90 to < 6.1.178affected6.6.30 to < 6.6.145affected6.8.9 to < 6.9affected
Linux Linux
Default version status: affected
6.9affected0 to < 6.9unaffected5.15.155 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.39 to ≤ 6.18.*unaffected7.1.4 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/b54c4632946ae42f2b39ed38abd909bbf78cbcc2 ↗
- https://git.kernel.org/stable/c/e904596ba6dd108534ffa15e3e46b2fe245145e2 ↗
- https://git.kernel.org/stable/c/2fb80e962029000959f651665baa4838cc92eb99 ↗
- https://git.kernel.org/stable/c/37f28bf8f14672dfa395994e41fd778a63f0bf5c ↗
- https://git.kernel.org/stable/c/f29dc6132d4968e39d8fa575d1a12e2c718ce57b ↗
- https://git.kernel.org/stable/c/dc066bd13c860bb27d6ace511210e18b8064c1d9 ↗
- https://git.kernel.org/stable/c/1b1acf2dada0cc3931bb2cb9ff8832edfbee46a1 ↗