High · published October 1, 2025
In the Linux kernel, the following vulnerability has been resolved:
x86/MCE/AMD: Use an u64 for bank_map
Thee maximum number of MCA banks is 64 (MAX_NR_BANKS), see
a0bc32b3cacf ("x86/mce: Increase maximum number of banks to 64").
However, the bank_map which contains a bitfield of which banks to
initialize is of type unsigned int and that overflows when those bit
numbers are >= 32, leading to UBSAN complaining correctly:
UBSAN: shift-out-of-bounds in arch/x86/kernel/cpu/mce/amd.c:1365:38
shift exponent 32 is too large for 32-bit type 'int'
Change the bank_map to a u64 and use the proper BIT_ULL() macro when
modifying bits in there.
[ bp: Rewrite commit message. ]
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 5.10, < 5.10.180 | 5.10.180 |
| linux/linux_kernel | ≥ 5.11, < 5.15.111 | 5.15.111 |
| linux/linux_kernel | ≥ 5.16, < 6.1.28 | 6.1.28 |
| linux/linux_kernel | ≥ 6.2, < 6.2.15 | 6.2.15 |
| linux/linux_kernel | ≥ 6.3, < 6.3.2 | 6.3.2 |