On Mon, 6 Mar 2017, Dmitry Safonov wrote: > Result of mmap() calls with MAP_32BIT flag at this moment depends > on thread flag TIF_ADDR32, which is set during exec() for 32-bit apps. > It's broken as the behavior of mmap() shouldn't depend on exec-ed > application's bitness. Instead, it should check the bitness of mmap() > syscall. > How it worked before: > o for 32-bit compatible binaries it is completely ignored. Which was > fine when there were one mmap_base, computed for 32-bit syscalls. > After introducing mmap_compat_base 64-bit syscalls do use computed > for 64-bit syscalls mmap_base, which means that we can allocate 64-bit > address with 64-bit syscall in application launched from 32-bit > compatible binary. And ignoring this flag is not expected behavior. Well, the real question here is, whether we should allow 32bit applications to obtain 64bit mappings at all. We can very well force 32bit applications into the 4GB address space as it was before your mmap base splitup and be done with it. Thanks, tglx -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>