When building the compat vDSO the CHECKFLAGS from the 64-bit kernel are used. These are combined with the 32-bit CFLAGS. This confuses sparse, producing false-positive warnings or potentially missing real issues.
Manually override the CHECKFLAGS for the compat vDSO with the correct 32-bit configuration. Not all architectures are supported, as many do not use sparse for their (compat) vDSO. These can be enabled later. Also add some checks to bitsperlong.h to detect such issues earlier. Based on tip/timers/vdso. Signed-off-by: Thomas Weißschuh <[email protected]> --- Changes in v2: - Simplify __BITS_PER_LONG consistency checks - Fix an inconsistency in the powerpc audit code - Move check to kernel headers instead of UAPI ones - Use KBUILD_CPPFLAGS = -m64 on s390 instead, the previous include trimming turned out to require changes to many more files - Rebase on v7.0-rc1 - Link to v1: https://lore.kernel.org/r/[email protected] --- Thomas Weißschuh (5): x86/vdso: Use 32-bit CHECKFLAGS for compat vDSO sparc64: vdso: Use 32-bit CHECKFLAGS for compat vDSO s390: Add -m64 to KBUILD_CPPFLAGS powerpc/audit: directly include unistd_32.h from compat_audit.c asm-generic/bitsperlong.h: Add sanity checks for __BITS_PER_LONG arch/powerpc/kernel/compat_audit.c | 3 +-- arch/s390/Makefile | 3 +-- arch/sparc/vdso/Makefile | 3 +++ arch/x86/entry/vdso/vdso32/Makefile | 4 ++++ include/asm-generic/bitsperlong.h | 9 +++++++++ 5 files changed, 18 insertions(+), 4 deletions(-) --- base-commit: 740f1913cfa0d48222760eaa438c509ca9fc3710 change-id: 20251107-vdso-compat-checkflags-5db75b3b4bac Best regards, -- Thomas Weißschuh <[email protected]>
