[PATCH 00/21] mount: more bugfixes, trapped in the Black Lodge edition

From: Christian Brauner

Date: Fri Oct 02 2026 - 09:53:53 EST


More bugfixes from work in this area:

- unhash a dentry before detaching the mounts on it to avoid leaking
sensitive data
- don't reveal overmounted entries in refwalk
- refuse F_SET_RW_HINT on an immutable inode
- refuse an automount below a mount that is in no namespace
- handle mount locking for automounts correctly
- don't update the access time on nullfs
- never expire a locked mount
- keep the lock on a mount that a propagated copy is moved beneath
- decide the subtree check under mount_lock
- keep the private nullfs instance in knullfs
- nothing is mounted on or written through knullfs
- let a filesystem refuse fsnotify marks on its objects
- refuse file locks on nullfs
- refuse leases and delegations on nullfs
- take no inode lock on an immutable directory

Signed-off-by: Christian Brauner (Amutable) <brauner@xxxxxxxxxx>
---
Christian Brauner (21):
namespace: unhash a dentry before detaching the mounts on it
namei: don't reveal overmounted entries in refwalk
fcntl: refuse F_SET_RW_HINT on an immutable inode
selftests/filesystems: check that an immutable inode takes no write hint
namespace: refuse an automount below a mount that is in no namespace
namespace: handle mount locking for automounts correctly
nullfs: don't update the access time
namespace: never expire a locked mount
namespace: keep the lock on a mount that a propagated copy is moved beneath
selftests/filesystems: check that a lock lands on the right mount and stays
selftests/filesystems: check the atime of the empty mount namespace root
selftests/filesystems: check that an automount below an overlay layer is refused
fhandle: decide the subtree check under mount_lock
namespace: keep the private nullfs instance in knullfs
namespace: nothing is mounted on or written through knullfs
fsnotify: let a filesystem refuse marks on its objects
nullfs: refuse file locks
nullfs: refuse leases and delegations
readdir: take no inode lock on an immutable directory
selftests/filesystems: add a helper that holds a readdir in a page fault
selftests/filesystems: check that reading the root of an empty mount namespace stalls nobody

fs/fcntl.c | 3 +
fs/fhandle.c | 20 +-
fs/mount.h | 1 +
fs/namei.c | 29 ++
fs/namespace.c | 78 ++--
fs/notify/mark.c | 4 +
fs/nullfs.c | 43 +-
fs/readdir.c | 13 +-
include/linux/fs.h | 3 +
tools/testing/selftests/filesystems/.gitignore | 1 +
tools/testing/selftests/filesystems/Makefile | 2 +-
.../selftests/filesystems/empty_mntns/.gitignore | 2 +
.../selftests/filesystems/empty_mntns/Makefile | 5 +-
.../filesystems/empty_mntns/nullfs_atime_test.c | 129 ++++++
.../filesystems/empty_mntns/root_readdir_test.c | 45 +++
.../selftests/filesystems/overlayfs/.gitignore | 1 +
.../selftests/filesystems/overlayfs/Makefile | 1 +
.../filesystems/overlayfs/automount_in_layer.c | 174 +++++++++
tools/testing/selftests/filesystems/readdir_hold.h | 224 +++++++++++
tools/testing/selftests/filesystems/rw_hint_test.c | 129 ++++++
.../filesystems/umount_propagation/Makefile | 2 +-
.../umount_propagation/locked_mount_test.c | 432 +++++++++++++++++++++
22 files changed, 1305 insertions(+), 36 deletions(-)
---
base-commit: cbade031e2ebb3ca0a423b1804ce87908b27c229
change-id: 20261002-work-mount-fixes-4-b28d7d43102e