Merge tag 'fbdev-fixes-3.9-rc6' of git://gitorious.org/linux-omap-dss2/linux
[firefly-linux-kernel-4.4.55.git] / fs / 9p / vfs_dentry.c
index 9ad68628522c36b9b1a3dadc25db4d5b977ae5a3..f039b104a98e9093cadfb62b040a604628a76b7a 100644 (file)
@@ -83,21 +83,12 @@ static int v9fs_cached_dentry_delete(const struct dentry *dentry)
 
 static void v9fs_dentry_release(struct dentry *dentry)
 {
-       struct v9fs_dentry *dent;
-       struct p9_fid *temp, *current_fid;
-
+       struct hlist_node *p, *n;
        p9_debug(P9_DEBUG_VFS, " dentry: %s (%p)\n",
                 dentry->d_name.name, dentry);
-       dent = dentry->d_fsdata;
-       if (dent) {
-               list_for_each_entry_safe(current_fid, temp, &dent->fidlist,
-                                                                       dlist) {
-                       p9_client_clunk(current_fid);
-               }
-
-               kfree(dent);
-               dentry->d_fsdata = NULL;
-       }
+       hlist_for_each_safe(p, n, (struct hlist_head *)&dentry->d_fsdata)
+               p9_client_clunk(hlist_entry(p, struct p9_fid, dlist));
+       dentry->d_fsdata = NULL;
 }
 
 static int v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags)