diff options
Diffstat (limited to 'fs/anon_inodes.c')
| -rw-r--r-- | fs/anon_inodes.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c index 94f5110c4655..2c994591f4d7 100644 --- a/fs/anon_inodes.c +++ b/fs/anon_inodes.c | |||
| @@ -35,14 +35,13 @@ static int anon_inodefs_get_sb(struct file_system_type *fs_type, int flags, | |||
| 35 | mnt); | 35 | mnt); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | static int anon_inodefs_delete_dentry(struct dentry *dentry) | 38 | /* |
| 39 | * anon_inodefs_dname() is called from d_path(). | ||
| 40 | */ | ||
| 41 | static char *anon_inodefs_dname(struct dentry *dentry, char *buffer, int buflen) | ||
| 39 | { | 42 | { |
| 40 | /* | 43 | return dynamic_dname(dentry, buffer, buflen, "anon_inode:%s", |
| 41 | * We faked vfs to believe the dentry was hashed when we created it. | 44 | dentry->d_name.name); |
| 42 | * Now we restore the flag so that dput() will work correctly. | ||
| 43 | */ | ||
| 44 | dentry->d_flags |= DCACHE_UNHASHED; | ||
| 45 | return 1; | ||
| 46 | } | 45 | } |
| 47 | 46 | ||
| 48 | static struct file_system_type anon_inode_fs_type = { | 47 | static struct file_system_type anon_inode_fs_type = { |
| @@ -51,7 +50,7 @@ static struct file_system_type anon_inode_fs_type = { | |||
| 51 | .kill_sb = kill_anon_super, | 50 | .kill_sb = kill_anon_super, |
| 52 | }; | 51 | }; |
| 53 | static const struct dentry_operations anon_inodefs_dentry_operations = { | 52 | static const struct dentry_operations anon_inodefs_dentry_operations = { |
| 54 | .d_delete = anon_inodefs_delete_dentry, | 53 | .d_dname = anon_inodefs_dname, |
| 55 | }; | 54 | }; |
| 56 | 55 | ||
| 57 | /* | 56 | /* |
| @@ -119,8 +118,6 @@ struct file *anon_inode_getfile(const char *name, | |||
| 119 | atomic_inc(&anon_inode_inode->i_count); | 118 | atomic_inc(&anon_inode_inode->i_count); |
| 120 | 119 | ||
| 121 | path.dentry->d_op = &anon_inodefs_dentry_operations; | 120 | path.dentry->d_op = &anon_inodefs_dentry_operations; |
| 122 | /* Do not publish this dentry inside the global dentry hash table */ | ||
| 123 | path.dentry->d_flags &= ~DCACHE_UNHASHED; | ||
| 124 | d_instantiate(path.dentry, anon_inode_inode); | 121 | d_instantiate(path.dentry, anon_inode_inode); |
| 125 | 122 | ||
| 126 | error = -ENFILE; | 123 | error = -ENFILE; |
