9p: fix a race condition bug in umount which caused a segfault
authorEric Van Hensbergen <ericvh@ericvh-desktop.austin.ibm.com>
Fri, 13 Jul 2007 21:47:58 +0000 (16:47 -0500)
committerEric Van Hensbergen <ericvh@ericvh-desktop.austin.ibm.com>
Sat, 14 Jul 2007 20:14:19 +0000 (15:14 -0500)
umounting partitions after heavy activity would sometimes trigger a
segmentation violation.  This fix appears to remove that problem.
Fix originally provided by Latchesar Ionkov.

Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
net/9p/client.c

index bb2b8a3..cb17075 100644 (file)
@@ -127,12 +127,12 @@ void p9_client_destroy(struct p9_client *clnt)
                clnt->trans = NULL;
        }
 
-       if (clnt->fidpool)
-               p9_idpool_destroy(clnt->fidpool);
-
        list_for_each_entry_safe(fid, fidptr, &clnt->fidlist, flist)
                p9_fid_destroy(fid);
 
+       if (clnt->fidpool)
+               p9_idpool_destroy(clnt->fidpool);
+
        kfree(clnt);
 }
 EXPORT_SYMBOL(p9_client_destroy);