mirror of https://github.com/torvalds/linux.git
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
|
||
|---|---|---|
| .. | ||
| blocklayout | ||
| filelayout | ||
| flexfilelayout | ||
| Kconfig | ||
| Makefile | ||
| cache_lib.c | ||
| cache_lib.h | ||
| callback.c | ||
| callback.h | ||
| callback_proc.c | ||
| callback_xdr.c | ||
| client.c | ||
| delegation.c | ||
| delegation.h | ||
| dir.c | ||
| direct.c | ||
| dns_resolve.c | ||
| dns_resolve.h | ||
| export.c | ||
| file.c | ||
| fs_context.c | ||
| fscache.c | ||
| fscache.h | ||
| getroot.c | ||
| inode.c | ||
| internal.h | ||
| io.c | ||
| iostat.h | ||
| localio.c | ||
| mount_clnt.c | ||
| namespace.c | ||
| netns.h | ||
| nfs.h | ||
| nfs2super.c | ||
| nfs2xdr.c | ||
| nfs3_fs.h | ||
| nfs3acl.c | ||
| nfs3client.c | ||
| nfs3proc.c | ||
| nfs3super.c | ||
| nfs3xdr.c | ||
| nfs4_fs.h | ||
| nfs4client.c | ||
| nfs4file.c | ||
| nfs4getroot.c | ||
| nfs4idmap.c | ||
| nfs4idmap.h | ||
| nfs4namespace.c | ||
| nfs4proc.c | ||
| nfs4renewd.c | ||
| nfs4session.c | ||
| nfs4session.h | ||
| nfs4state.c | ||
| nfs4super.c | ||
| nfs4sysctl.c | ||
| nfs4trace.c | ||
| nfs4trace.h | ||
| nfs4xdr.c | ||
| nfs42.h | ||
| nfs42proc.c | ||
| nfs42xattr.c | ||
| nfs42xdr.c | ||
| nfsroot.c | ||
| nfstrace.c | ||
| nfstrace.h | ||
| pagelist.c | ||
| pnfs.c | ||
| pnfs.h | ||
| pnfs_dev.c | ||
| pnfs_nfs.c | ||
| proc.c | ||
| read.c | ||
| super.c | ||
| symlink.c | ||
| sysctl.c | ||
| sysfs.c | ||
| sysfs.h | ||
| unlink.c | ||
| write.c | ||