Commit 9a6d3ff1 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Catalin Marinas
Browse files

arm64: uapi: Provide correct __BITS_PER_LONG for the compat vDSO



The generic vDSO library uses the UAPI headers. On arm64 __BITS_PER_LONG is
always '64' even when used from the compat vDSO. In that case __GENMASK()
does an illegal bitshift, invoking undefined behaviour.

Change __BITS_PER_LONG to also work when used from the comapt vDSO.
To not confuse real userspace, only do this when building the kernel.

Reported-by: default avatarJohn Stultz <jstultz@google.com>
Closes: https://lore.kernel.org/lkml/CANDhNCqvKOc9JgphQwr0eDyJiyG4oLFS9R8rSFvU0fpurrJFDg@mail.gmail.com/


Fixes: cd3557a7 ("vdso/gettimeofday: Add support for auxiliary clocks")
Signed-off-by: default avatarThomas Weißschuh <thomas.weissschuh@linutronix.de>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Tested-by: default avatarJohn Stultz <jstultz@google.com>
Link: https://lore.kernel.org/r/20250821-vdso-arm64-compat-bitsperlong-v1-1-700bcabe7732@linutronix.de


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent d82aa5d3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -17,7 +17,12 @@
#ifndef __ASM_BITSPERLONG_H
#define __ASM_BITSPERLONG_H

#if defined(__KERNEL__) && !defined(__aarch64__)
/* Used by the compat vDSO */
#define __BITS_PER_LONG 32
#else
#define __BITS_PER_LONG 64
#endif

#include <asm-generic/bitsperlong.h>