summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-05-29 16:13:47 +0200
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-05-31 19:15:23 +0200
commite5555582bfd2672a5511d04aacf88d6a4f9709c6 (patch)
tree2a5125445f7d9553116a6f885027be3e3ffa7d4b
parentd9b00c435911a969636933f8bd4f96dde7c19275 (diff)
downloadceph-e5555582bfd2672a5511d04aacf88d6a4f9709c6.tar.gz
mds/Server.cc: fix dereference after null check
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>
-rw-r--r--src/mds/Server.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mds/Server.cc b/src/mds/Server.cc
index 619f6d9a3ec..5b23b7ff837 100644
--- a/src/mds/Server.cc
+++ b/src/mds/Server.cc
@@ -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++;
}