diff options
Diffstat (limited to 'fs/9p/vfs_dentry.c')
-rw-r--r-- | fs/9p/vfs_dentry.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c index 9ad68628522c..f039b104a98e 100644 --- a/fs/9p/vfs_dentry.c +++ b/fs/9p/vfs_dentry.c | |||
@@ -83,21 +83,12 @@ static int v9fs_cached_dentry_delete(const struct dentry *dentry) | |||
83 | 83 | ||
84 | static void v9fs_dentry_release(struct dentry *dentry) | 84 | static void v9fs_dentry_release(struct dentry *dentry) |
85 | { | 85 | { |
86 | struct v9fs_dentry *dent; | 86 | struct hlist_node *p, *n; |
87 | struct p9_fid *temp, *current_fid; | ||
88 | |||
89 | p9_debug(P9_DEBUG_VFS, " dentry: %s (%p)\n", | 87 | p9_debug(P9_DEBUG_VFS, " dentry: %s (%p)\n", |
90 | dentry->d_name.name, dentry); | 88 | dentry->d_name.name, dentry); |
91 | dent = dentry->d_fsdata; | 89 | hlist_for_each_safe(p, n, (struct hlist_head *)&dentry->d_fsdata) |
92 | if (dent) { | 90 | p9_client_clunk(hlist_entry(p, struct p9_fid, dlist)); |
93 | list_for_each_entry_safe(current_fid, temp, &dent->fidlist, | 91 | dentry->d_fsdata = NULL; |
94 | dlist) { | ||
95 | p9_client_clunk(current_fid); | ||
96 | } | ||
97 | |||
98 | kfree(dent); | ||
99 | dentry->d_fsdata = NULL; | ||
100 | } | ||
101 | } | 92 | } |
102 | 93 | ||
103 | static int v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags) | 94 | static int v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags) |