]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/Server.cc: fix dereference after null check
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 29 May 2013 14:13:47 +0000 (16:13 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Fri, 31 May 2013 17:15:23 +0000 (19:15 +0200)
CID 716926 (#1 of 1): Dereference after null check (FORWARD_NULL)
  var_deref_model: Passing "mdr" to function
  "Server::apply_allocated_inos(MDRequest *)", which dereferences
  null "mdr->session".

Add assert for 'mdr' and assert for session in apply_allocated_inos().

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/mds/Server.cc

index 619f6d9a3ec20264a221e82c1ac19669c64b1cde..5b23b7ff83728920e1478b37f7d9374aacde2f04 100644 (file)
@@ -859,6 +859,7 @@ void Server::early_reply(MDRequest *mdr, CInode *tracei, CDentry *tracedn)
  */
 void Server::reply_request(MDRequest *mdr, MClientReply *reply, CInode *tracei, CDentry *tracedn) 
 {
+  assert(mdr);
   MClientRequest *req = mdr->client_request;
   
   char buf[80];
@@ -1928,12 +1929,14 @@ void Server::apply_allocated_inos(MDRequest *mdr)
     mds->inotable->apply_alloc_id(mdr->alloc_ino);
   }
   if (mdr->prealloc_inos.size()) {
+    assert(session);
     session->pending_prealloc_inos.subtract(mdr->prealloc_inos);
     session->info.prealloc_inos.insert(mdr->prealloc_inos);
     mds->sessionmap.version++;
     mds->inotable->apply_alloc_ids(mdr->prealloc_inos);
   }
   if (mdr->used_prealloc_ino) {
+    assert(session);
     session->info.used_inos.erase(mdr->used_prealloc_ino);
     mds->sessionmap.version++;
   }