forked from mirrors/linux
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 | ||