]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: fix null deref in unlink() on null dn
authorSage Weil <sage@newdream.net>
Fri, 2 Oct 2009 22:29:31 +0000 (15:29 -0700)
committerSage Weil <sage@newdream.net>
Fri, 2 Oct 2009 22:29:44 +0000 (15:29 -0700)
src/client/Client.h

index f83cb7ebd5b98dd116124f205bbcfbf8ff07593e..4c0c39dfeafd305f38a143a386bd24396e7529f4 100644 (file)
@@ -1006,13 +1006,15 @@ protected:
 
   void unlink(Dentry *dn, bool keepdir = false) {
     Inode *in = dn->inode;
-    assert(in->dn == dn);
 
     // unlink from inode
-    if (dn->inode->dir) dn->put();        // dir -> dn pin
-    dn->inode = 0;
-    in->dn = 0;
-    put_inode(in);
+    if (in) {
+      assert(in->dn == dn);
+      if (in->dir) dn->put();        // dir -> dn pin
+      dn->inode = 0;
+      in->dn = 0;
+      put_inode(in);
+    }
         
     // unlink from dir
     dn->dir->dentries.erase(dn->name);