mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
![]() Most of the filesystem methods where we care about dentry name and parent have their stability guaranteed by the callers; ->d_revalidate() is the major exception. It's easy enough for callers to supply stable values for expected name and expected parent of the dentry being validated. That kills quite a bit of boilerplate in ->d_revalidate() instances, along with a bunch of races where they used to access ->d_name without sufficient precautions. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQqUNBr3gm4hGXdBJlZ7Krx/gZQ6wUCZ5gkoQAKCRBZ7Krx/gZQ 6w9FAP4nyxNNWMjE1TwuWR/DNDMYYuw/qn/miZ88B5BUM8hzqgD/W2SjRvcbSaIm xSIYpbtKgtqNU34P1PU+dBvL8Utz2AE= =TWY8 -----END PGP SIGNATURE----- Merge tag 'pull-revalidate' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull vfs d_revalidate updates from Al Viro: "Provide stable parent and name to ->d_revalidate() instances Most of the filesystem methods where we care about dentry name and parent have their stability guaranteed by the callers; ->d_revalidate() is the major exception. It's easy enough for callers to supply stable values for expected name and expected parent of the dentry being validated. That kills quite a bit of boilerplate in ->d_revalidate() instances, along with a bunch of races where they used to access ->d_name without sufficient precautions" * tag 'pull-revalidate' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: 9p: fix ->rename_sem exclusion orangefs_d_revalidate(): use stable parent inode and name passed by caller ocfs2_dentry_revalidate(): use stable parent inode and name passed by caller nfs: fix ->d_revalidate() UAF on ->d_name accesses nfs{,4}_lookup_validate(): use stable parent inode passed by caller gfs2_drevalidate(): use stable parent inode and name passed by caller fuse_dentry_revalidate(): use stable parent inode and name passed by caller vfat_revalidate{,_ci}(): use stable parent inode passed by caller exfat_d_revalidate(): use stable parent inode passed by caller fscrypt_d_revalidate(): use stable parent inode passed by caller ceph_d_revalidate(): propagate stable name down into request encoding ceph_d_revalidate(): use stable parent inode passed by caller afs_d_revalidate(): use stable name and parent inode passed by caller Pass parent directory inode and expected name to ->d_revalidate() generic_ci_d_compare(): use shortname_storage ext4 fast_commit: make use of name_snapshot primitives dissolve external_name.u into separate members make take_dentry_name_snapshot() lockless dcache: back inline names with a struct-wrapped array of unsigned long make sure that DNAME_INLINE_LEN is a multiple of word size |
||
---|---|---|
.. | ||
bcachefs | ||
caching | ||
ext4 | ||
iomap | ||
nfs | ||
smb | ||
spufs | ||
xfs | ||
9p.rst | ||
adfs.rst | ||
affs.rst | ||
afs.rst | ||
api-summary.rst | ||
autofs-mount-control.rst | ||
autofs.rst | ||
automount-support.rst | ||
befs.rst | ||
bfs.rst | ||
btrfs.rst | ||
buffer.rst | ||
ceph.rst | ||
coda.rst | ||
configfs.rst | ||
cramfs.rst | ||
dax.rst | ||
debugfs.rst | ||
devpts.rst | ||
directory-locking.rst | ||
dlmfs.rst | ||
dnotify.rst | ||
ecryptfs.rst | ||
efivarfs.rst | ||
erofs.rst | ||
ext2.rst | ||
ext3.rst | ||
f2fs.rst | ||
fiemap.rst | ||
files.rst | ||
fscrypt.rst | ||
fsverity.rst | ||
fuse-io-uring.rst | ||
fuse-io.rst | ||
fuse.rst | ||
gfs2-glocks.rst | ||
gfs2-uevents.rst | ||
gfs2.rst | ||
hfs.rst | ||
hfsplus.rst | ||
hpfs.rst | ||
idmappings.rst | ||
index.rst | ||
inotify.rst | ||
isofs.rst | ||
journalling.rst | ||
locking.rst | ||
locks.rst | ||
mount_api.rst | ||
multigrain-ts.rst | ||
netfs_library.rst | ||
nilfs2.rst | ||
ntfs3.rst | ||
ocfs2-online-filecheck.rst | ||
ocfs2.rst | ||
omfs.rst | ||
orangefs.rst | ||
overlayfs.rst | ||
path-lookup.rst | ||
path-lookup.txt | ||
porting.rst | ||
proc.rst | ||
qnx6.rst | ||
quota.rst | ||
ramfs-rootfs-initramfs.rst | ||
relay.rst | ||
romfs.rst | ||
seq_file.rst | ||
sharedsubtree.rst | ||
splice.rst | ||
squashfs.rst | ||
sysfs.rst | ||
sysv-fs.rst | ||
tmpfs.rst | ||
ubifs-authentication.rst | ||
ubifs.rst | ||
udf.rst | ||
vfat.rst | ||
vfs.rst | ||
virtiofs.rst | ||
zonefs.rst |