On Thu, Sep 26, 2024, at 08:46, David Hildenbrand wrote: > On 25.09.24 23:06, Arnd Bergmann wrote: > > The first, uncontroversial step could indeed be to make > MAP_UNINITIALIZED a nop, but still leave the definitions in mman.h etc > around. > > This is the same we did with MAP_DENYWRITE. There might be some weird > user out there, and carelessly reusing the bit could result in trouble. > (people might argue that they are not using it with MAP_HUGETLB, so it > would work) > > Going forward and removing MAP_UNINITIALIZED is a bit more > controversial, but maybe there really isn't any other user around. > Software that is not getting recompiled cannot be really identified by > letting it rest in -next only. > > My take would be to leave MAP_UNINITIALIZED in the headers in some form > for documentation purposes. I don't think there is much point in doing this in multiple steps, either we want to break it at compile time or leave it silently doing nothing. There is also very little difference in practice because applications almost always use sys/mman.h instead of linux/mman.h. FWIW, the main user appears to be the uClibc and uclibc-ng malloc() implementation for NOMMU targets: https://git.uclibc.org/uClibc/commit/libc/stdlib/malloc/malloc.c?id=00673f93826bf1f Both of these also define this constant itself as 0x4000000 for all architectures. There are a few others that I could find with Debian codesearch: https://sources.debian.org/src/monado/21.0.0+git2905.e26a272c1~dfsg1-2/src/external/tracy/client/tracy_rpmalloc.cpp/?hl=890#L889 https://sources.debian.org/src/systemtap/5.1-4/testsuite/systemtap.syscall/mmap.c/?hl=224#L224 https://sources.debian.org/src/fuzzel/1.11.1+ds-1/shm.c/?hl=488#L488 https://sources.debian.org/src/notcurses/3.0.7+dfsg.1-1/src/lib/fbuf.h/?hl=35#L35 https://sources.debian.org/src/lmms/1.2.2+dfsg1-6/src/3rdparty/rpmalloc/rpmalloc/rpmalloc/rpmalloc.c/?hl=1753#L1753 All of these will fall back to not passing MAP_UNINITIALIZED if it's not defined, which is what happens on glibc and musl. Arnd