diff options
author | Danny Al-Gaaf <danny.al-gaaf@bisect.de> | 2013-05-29 16:13:47 +0200 |
---|---|---|
committer | Danny Al-Gaaf <danny.al-gaaf@bisect.de> | 2013-05-31 19:15:23 +0200 |
commit | e5555582bfd2672a5511d04aacf88d6a4f9709c6 (patch) | |
tree | 2a5125445f7d9553116a6f885027be3e3ffa7d4b | |
parent | d9b00c435911a969636933f8bd4f96dde7c19275 (diff) | |
download | ceph-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.cc | 3 |
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++; } |