diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 11:31:01 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 11:31:01 -0500 |
commit | b8a7f3cd7e8212e5c572178ff3b5a514861036a5 (patch) | |
tree | f88fd0fc83a466a6d5781f90e7ed76cb2fa0f5d7 /fs/pipe.c | |
parent | a377d181e65241344dd95aa4a42c477477be03f1 (diff) | |
parent | eaff8079d4f1016a12e34ab323737314f24127dd (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
kill I_LOCK
fold do_sync_file_range into sys_sync_file_range
fix up O_SYNC comments
VFS/fsstack: handle 32-bit smp + preempt + large files in fsstack_copy_inode_size
fsstack/ecryptfs: remove unused get_nlinks param to fsstack_copy_attr_all
vfs: remove extraneous NULL d_inode check from do_filp_open
fs: no games with DCACHE_UNHASHED
fs: anon_inodes implement dname
dio: fix use-after-free
Diffstat (limited to 'fs/pipe.c')
-rw-r--r-- | fs/pipe.c | 18 |
1 files changed, 0 insertions, 18 deletions
@@ -906,17 +906,6 @@ void free_pipe_info(struct inode *inode) | |||
906 | } | 906 | } |
907 | 907 | ||
908 | static struct vfsmount *pipe_mnt __read_mostly; | 908 | static struct vfsmount *pipe_mnt __read_mostly; |
909 | static int pipefs_delete_dentry(struct dentry *dentry) | ||
910 | { | ||
911 | /* | ||
912 | * At creation time, we pretended this dentry was hashed | ||
913 | * (by clearing DCACHE_UNHASHED bit in d_flags) | ||
914 | * At delete time, we restore the truth : not hashed. | ||
915 | * (so that dput() can proceed correctly) | ||
916 | */ | ||
917 | dentry->d_flags |= DCACHE_UNHASHED; | ||
918 | return 0; | ||
919 | } | ||
920 | 909 | ||
921 | /* | 910 | /* |
922 | * pipefs_dname() is called from d_path(). | 911 | * pipefs_dname() is called from d_path(). |
@@ -928,7 +917,6 @@ static char *pipefs_dname(struct dentry *dentry, char *buffer, int buflen) | |||
928 | } | 917 | } |
929 | 918 | ||
930 | static const struct dentry_operations pipefs_dentry_operations = { | 919 | static const struct dentry_operations pipefs_dentry_operations = { |
931 | .d_delete = pipefs_delete_dentry, | ||
932 | .d_dname = pipefs_dname, | 920 | .d_dname = pipefs_dname, |
933 | }; | 921 | }; |
934 | 922 | ||
@@ -989,12 +977,6 @@ struct file *create_write_pipe(int flags) | |||
989 | path.mnt = mntget(pipe_mnt); | 977 | path.mnt = mntget(pipe_mnt); |
990 | 978 | ||
991 | path.dentry->d_op = &pipefs_dentry_operations; | 979 | path.dentry->d_op = &pipefs_dentry_operations; |
992 | /* | ||
993 | * We dont want to publish this dentry into global dentry hash table. | ||
994 | * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED | ||
995 | * This permits a working /proc/$pid/fd/XXX on pipes | ||
996 | */ | ||
997 | path.dentry->d_flags &= ~DCACHE_UNHASHED; | ||
998 | d_instantiate(path.dentry, inode); | 980 | d_instantiate(path.dentry, inode); |
999 | 981 | ||
1000 | err = -ENFILE; | 982 | err = -ENFILE; |