On Thu, 2024-09-26 at 15:49 +0100, Alan Maguire wrote: > When building selftests, the following was seen: > > uprobe_multi.c: In function ‘trigger_uprobe’: > uprobe_multi.c:108:40: error: ‘MADV_PAGEOUT’ undeclared (first use in this function) > 108 | madvise(addr, page_sz, MADV_PAGEOUT); > | ^~~~~~~~~~~~ > uprobe_multi.c:108:40: note: each undeclared identifier is reported only once for each function it appears in > make: *** [Makefile:850: bpf-next/tools/testing/selftests/bpf/uprobe_multi] Error 1 > > ...even with updated UAPI headers. It seems the above value is > defined in UAPI <linux/mman.h> but including that file triggers > other redefinition errors. Simplest solution is to add a > guarded definition, as was done for MADV_POPULATE_READ. > > Fixes: 3c217a182018 ("selftests/bpf: add build ID tests") > Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > --- I was curious why this error is not triggered on my local machine or CI. MADV_PAGEOUT is indeed defined in UAPI. Selftests build picks it from host system header, which is /usr/include/bits/mman-linux.h for my Fedora 40 setup. The MADV_PAGEOUT was added by commit [1] back in 2019 (and should be available from Linux 5.4, I guess Alan uses a very old kernel). I think that at some point in time we should adjust selftests to use UAPI headers that come from the kernel being tested, not from the host. Until that happens, I think this fix is fine. [1] 1a4e58cce84e ("mm: introduce MADV_PAGEOUT") Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx> (I want back to 2019...) [...]