On 13/03/2025 3:30 pm, Roger Pau Monne wrote: > When building Xen with GCC 12 with UBSAN and PVH_GUEST both enabled the > compiler emits the following errors: > > arch/x86/setup.c: In function '__start_xen': > arch/x86/setup.c:1504:19: error: 'consider_modules' reading 40 bytes from a > region of size 4 [-Werror=stringop-overread] > 1504 | end = consider_modules(s, e, reloc_size + mask, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1505 | bi->mods, bi->nr_modules, -1); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > arch/x86/setup.c:1504:19: note: referencing argument 4 of type 'const struct > boot_module[0]' > arch/x86/setup.c:686:24: note: in a call to function 'consider_modules' > 686 | static uint64_t __init consider_modules( > | ^~~~~~~~~~~~~~~~ > arch/x86/setup.c:1535:19: error: 'consider_modules' reading 40 bytes from a > region of size 4 [-Werror=stringop-overread] > 1535 | end = consider_modules(s, e, size, bi->mods, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1536 | bi->nr_modules + relocated, j); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > arch/x86/setup.c:1535:19: note: referencing argument 4 of type 'const struct > boot_module[0]' > arch/x86/setup.c:686:24: note: in a call to function 'consider_modules' > 686 | static uint64_t __init consider_modules( > | ^~~~~~~~~~~~~~~~ > > This seems to be the result of some function manipulation done by UBSAN > triggering GCC stringops related errors. Placate the errors by declaring > the function parameter as `const struct *boot_module` instead of `const > struct boot_module[]`. > > Note that GCC 13 seems to be fixed, and doesn't trigger the error when > using `[]`. > > Signed-off-by: Roger Pau Monné <roger....@citrix.com>
Acked-by: Andrew Cooper <andrew.coop...@citrix.com> (I swear I've seen this before, and already fixed it once by switching to a pointer...)