x86/MCE/AMD: Use an u64 for bank_map
authorMuralidhara M K <muralimk@amd.com>
Fri, 27 Jan 2023 15:16:01 +0000 (15:16 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Sun, 19 Mar 2023 18:07:04 +0000 (19:07 +0100)
commit4c1cdec319b9aadb65737c3eb1f5cb74bd6aa156
treede6af6b062eefc46e5ba85e5750f28f30f84977b
parent554eec0b4a29d0dfe59065e2cf1d2568c7b4d5f0
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. ]

Fixes: a0bc32b3cacf ("x86/mce: Increase maximum number of banks to 64")
Signed-off-by: Muralidhara M K <muralimk@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20230127151601.1068324-1-muralimk@amd.com
arch/x86/kernel/cpu/mce/amd.c