On Mon, Apr 8, 2019 at 2:46 PM Christoph Hellwig <hch@xxxxxx> wrote: > > I just stumbled over the MAP_UNINITIALIZED defintion, initially > added by: > > commit ea637639591def87a54cea811cbac796980cb30d > Author: Jie Zhang <jie.zhang@xxxxxxxxxx> > Date: Mon Dec 14 18:00:02 2009 -0800 > > nommu: fix malloc performance by adding uninitialized flag > > The defintion depends on CONFIG_MMAP_ALLOW_UNINITIALIZED, which > will never be set by userspace. How is this supposed to work? > > Shoudn't we define the symbol unconditionally and just turn it > into a no-op in the implementation? Right, good catch. That should work. It can probably be done by adding another check before the conditional, like: /* clear anonymous mappings that don't ask for uninitialized data */ if (!vma->vm_file && !(IS_ENABLED(CONFIG_MMAP_ALLOW_UNINITIALIZED) && (flags & MAP_UNINITIALIZED)) memset((void *)region->vm_start, 0, region->vm_end - region->vm_start); > There are a few similar issues, like struct elf_prstatus having > a different layout depending on CONFIG_BINFMT_ELF_FDPIC, or > MAX_SHARED_LIBS defending on CONFIG_BINFMT_SHARED_FLAT. I thought we had cleaned them out a long time ago, but it looks like those have been there since the uapi headers got split out, and are still wrong. Why doesn't scripts/headers_check.pl find those? Arnd