Merge tag 'denywrite-for-5.15' of git://github.com/davidhildenbrand/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 4 Sep 2021 18:35:47 +0000 (11:35 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 4 Sep 2021 18:35:47 +0000 (11:35 -0700)
commit49624efa65ac9889f4e7c7b2452b2e6ce42ba37d
tree2ff7f446bf5d8459efc05d8a90d391a7e0452e92
parentf7464060f7ab9a2424428008f0ee9f1e267e410f
parent592ca09be8333bd226f50100328a905bfc377133
Merge tag 'denywrite-for-5.15' of git://github.com/davidhildenbrand/linux

Pull MAP_DENYWRITE removal from David Hildenbrand:
 "Remove all in-tree usage of MAP_DENYWRITE from the kernel and remove
  VM_DENYWRITE.

  There are some (minor) user-visible changes:

   - We no longer deny write access to shared libaries loaded via legacy
     uselib(); this behavior matches modern user space e.g. dlopen().

   - We no longer deny write access to the elf interpreter after exec
     completed, treating it just like shared libraries (which it often
     is).

   - We always deny write access to the file linked via /proc/pid/exe:
     sys_prctl(PR_SET_MM_MAP/EXE_FILE) will fail if write access to the
     file cannot be denied, and write access to the file will remain
     denied until the link is effectivel gone (exec, termination,
     sys_prctl(PR_SET_MM_MAP/EXE_FILE)) -- just as if exec'ing the file.

  Cross-compiled for a bunch of architectures (alpha, microblaze, i386,
  s390x, ...) and verified via ltp that especially the relevant tests
  (i.e., creat07 and execve04) continue working as expected"

* tag 'denywrite-for-5.15' of git://github.com/davidhildenbrand/linux:
  fs: update documentation of get_write_access() and friends
  mm: ignore MAP_DENYWRITE in ksys_mmap_pgoff()
  mm: remove VM_DENYWRITE
  binfmt: remove in-tree usage of MAP_DENYWRITE
  kernel/fork: always deny write access to current MM exe_file
  kernel/fork: factor out replacing the current MM exe_file
  binfmt: don't use MAP_DENYWRITE when loading shared libraries via uselib()
fs/exec.c
include/linux/fs.h
include/linux/mm.h
kernel/events/core.c
kernel/fork.c
kernel/sys.c
mm/mmap.c
mm/nommu.c