On Mon, Feb 26, 2024, at 17:00, Anna-Maria Behnsen wrote:
"Arnd Bergmann" arnd@arndb.de writes:
Commit a0d2fcd62ac2 ("vdso/ARM: Make union vdso_data_store available for all architectures") introduced a reference to the asm/page.h in include/vdso/datapage.h, but this is outside of the vdso/*.h namespace and doesn't work in the compat vdso.
But the asm namespace works for the vdso namespace. Only linux headers do not work, or am I wrong?
The vdso namespace was added to have something that works for userspace code in both compat 32-bit mode and native (32 or 64) bit mode, while anything outside of include/vdso may not work here.
PAGE_SIZE is defined in asm/page-def.h for arm64. So this could be a fast fix (tested with clang-14):
---8<---- --- a/include/vdso/datapage.h +++ b/include/vdso/datapage.h @@ -19,7 +19,11 @@ #include <vdso/time32.h> #include <vdso/time64.h>
+#ifdef CONFIG_ARM64 +#include <asm/page-def.h> +#else #include <asm/page.h> +#endif
#ifdef CONFIG_ARCH_HAS_VDSO_DATA #include <asm/vdso/data.h> ---8<---
I've sent my own patch now, which is something we probably want anyway, but is obviously much more invasive thank your four-line patch.
Maybe we can put your quick fix in the tip tree for the moment and I put my patches into the asm-generic tree, then we can do the trivial cleanup from my final patch later.
Arnd