--- Begin Message ---
Hi,
Please find the latest report on new defect(s) introduced to ceph found with Coverity Scan.
Defect(s) Reported-by: Coverity Scan
Showing 8 of 8 defect(s)
** CID 717008: Dereference null return value (NULL_RETURNS)
** CID 1128417: Dereference null return value (NULL_RETURNS)
/mds/MDCache.cc: 9986 in MDCache::handle_discover_reply(MDiscoverReply *)()
** CID 1213580: Dereference null return value (NULL_RETURNS)
/osd/OSD.cc: 5150 in OSD::dispatch_op_fast(std::tr1::shared_ptr<OpRequest>, std::tr1::shared_ptr<const OSDMap>)()
** CID 1213581: Dereference null return value (NULL_RETURNS)
/osd/OSD.cc: 4944 in OSD::ms_fast_preprocess(Message *)()
** CID 1213582: Dereference null return value (NULL_RETURNS)
/osd/Watch.cc: 359 in Watch::discard_state()()
** CID 1213583: Dereference null return value (NULL_RETURNS)
/osd/Watch.cc: 321 in Watch::connect(boost::intrusive_ptr<Connection>)()
** CID 1213584: Thread deadlock (ORDER_REVERSAL)
** CID 1213585: Thread deadlock (ORDER_REVERSAL)
________________________________________________________________________________________________________
*** CID 717008: Dereference null return value (NULL_RETURNS)
/osd/ReplicatedPG.cc: 4962 in ReplicatedPG::do_osd_op_effects(ReplicatedPG::OpContext *)()
4956
4957 void ReplicatedPG::do_osd_op_effects(OpContext *ctx)
4958 {
4959 ConnectionRef conn(ctx->op->get_req()->get_connection());
4960 boost::intrusive_ptr<OSD::Session> session(
4961 (OSD::Session *)conn->get_priv());
>>> CID 717008: Dereference null return value (NULL_RETURNS)
>>> Dereferencing a pointer that might be null "session" when calling "RefCountedObject::put()".
4962 session->put(); // get_priv() takes a ref, and so does the intrusive_ptr
4963 entity_name_t entity = ctx->reqid.name;
4964
4965 dout(15) << "do_osd_op_effects on session " << session.get() << dendl;
4966
4967 for (list<watch_info_t>::iterator i = ctx->watch_connects.begin();
________________________________________________________________________________________________________
*** CID 1128417: Dereference null return value (NULL_RETURNS)
/mds/MDCache.cc: 9986 in MDCache::handle_discover_reply(MDiscoverReply *)()
9980 } else {
9981 // note: this can only happen our first way around this loop.
9982 if (p.end() && m->is_flag_error_dn()) {
9983 fg = cur->pick_dirfrag(m->get_error_dentry());
9984 curdir = cur->get_dirfrag(fg);
9985 } else
>>> CID 1128417: Dereference null return value (NULL_RETURNS)
>>> Assigning: "curdir" = null return value from "CInode::get_dirfrag(frag_t)".
9986 curdir = cur->get_dirfrag(m->get_base_dir_frag());
9987 }
9988
9989 if (p.end())
9990 break;
9991
________________________________________________________________________________________________________
*** CID 1213580: Dereference null return value (NULL_RETURNS)
/osd/OSD.cc: 5150 in OSD::dispatch_op_fast(std::tr1::shared_ptr<OpRequest>, std::tr1::shared_ptr<const OSDMap>)()
5144 // we're shutting down, so drop the op
5145 return true;
5146 }
5147
5148 epoch_t msg_epoch(op_required_epoch(op));
5149 if (msg_epoch > osdmap->get_epoch()) {
>>> CID 1213580: Dereference null return value (NULL_RETURNS)
>>> Assigning: "s" = null return value from "Connection::get_priv()".
5150 Session *s = static_cast<Session*>(op->get_req()->
5151 get_connection()->get_priv());
5152 s->received_map_lock.Lock();
5153 epoch_t received_epoch = s->received_map_epoch;
5154 s->received_map_lock.Unlock();
5155 if (received_epoch < msg_epoch) {
________________________________________________________________________________________________________
*** CID 1213581: Dereference null return value (NULL_RETURNS)
/osd/OSD.cc: 4944 in OSD::ms_fast_preprocess(Message *)()
4938
4939 void OSD::ms_fast_preprocess(Message *m)
4940 {
4941 if (m->get_connection()->get_peer_type() == CEPH_ENTITY_TYPE_OSD) {
4942 if (m->get_type() == CEPH_MSG_OSD_MAP) {
4943 MOSDMap *mm = static_cast<MOSDMap*>(m);
>>> CID 1213581: Dereference null return value (NULL_RETURNS)
>>> Assigning: "s" = null return value from "Connection::get_priv()".
4944 Session *s = static_cast<Session*>(m->get_connection()->get_priv());
4945 s->received_map_lock.Lock();
4946 s->received_map_epoch = mm->get_last();
4947 s->received_map_lock.Unlock();
4948 s->put();
4949 }
________________________________________________________________________________________________________
*** CID 1213582: Dereference null return value (NULL_RETURNS)
/osd/Watch.cc: 359 in Watch::discard_state()()
353 assert(!discarded);
354 assert(obc);
355 in_progress_notifies.clear();
356 unregister_cb();
357 discarded = true;
358 if (conn) {
>>> CID 1213582: Dereference null return value (NULL_RETURNS)
>>> Assigning: "sessionref" = null return value from "Connection::get_priv()".
359 OSD::Session* sessionref(static_cast<OSD::Session*>(conn->get_priv()));
360 sessionref->wstate.removeWatch(self.lock());
361 sessionref->put();
362 conn = ConnectionRef();
363 }
364 obc = ObjectContextRef();
________________________________________________________________________________________________________
*** CID 1213583: Dereference null return value (NULL_RETURNS)
/osd/Watch.cc: 321 in Watch::connect(boost::intrusive_ptr<Connection>)()
315 }
316
317 void Watch::connect(ConnectionRef con)
318 {
319 dout(10) << "connecting" << dendl;
320 conn = con;
>>> CID 1213583: Dereference null return value (NULL_RETURNS)
>>> Assigning: "sessionref" = null return value from "Connection::get_priv()".
321 OSD::Session* sessionref(static_cast<OSD::Session*>(con->get_priv()));
322 sessionref->wstate.addWatch(self.lock());
323 sessionref->put();
324 for (map<uint64_t, NotifyRef>::iterator i = in_progress_notifies.begin();
325 i != in_progress_notifies.end();
326 ++i) {
________________________________________________________________________________________________________
*** CID 1213584: Thread deadlock (ORDER_REVERSAL)
/osd/OSD.cc: 8089 in C_CompleteSplits::finish(int)()
8083 PG::RecoveryCtx rctx = osd->create_context();
8084 set<spg_t> to_complete;
8085 for (set<boost::intrusive_ptr<PG> >::iterator i = pgs.begin();
8086 i != pgs.end();
8087 ++i) {
8088 osd->pg_map_lock.get_write();
>>> CID 1213584: Thread deadlock (ORDER_REVERSAL)
>>> Calling "PG::lock(bool)" acquires lock "Mutex._m" while holding lock "RWLock.L" (count: 5 / 13).
8089 (*i)->lock();
8090 osd->add_newly_split_pg(&**i, &rctx);
8091 if (!((*i)->deleting)) {
8092 to_complete.insert((*i)->info.pgid);
8093 osd->service.complete_split(to_complete);
8094 }
________________________________________________________________________________________________________
*** CID 1213585: Thread deadlock (ORDER_REVERSAL)
/osd/OSD.cc: 7447 in OSD::check_replay_queue()()
7441 replay_queue_lock.Unlock();
7442
7443 for (list< pair<spg_t,utime_t> >::iterator p = pgids.begin(); p != pgids.end(); ++p) {
7444 spg_t pgid = p->first;
7445 pg_map_lock.get_read();
7446 if (pg_map.count(pgid)) {
>>> CID 1213585: Thread deadlock (ORDER_REVERSAL)
>>> Calling "OSD::_lookup_lock_pg_with_map_lock_held(spg_t)" acquires lock "Mutex._m" while holding lock "RWLock.L" (count: 5 / 13).
7447 PG *pg = _lookup_lock_pg_with_map_lock_held(pgid);
7448 pg_map_lock.unlock();
7449 dout(10) << "check_replay_queue " << *pg << dendl;
7450 if (pg->is_active() &&
7451 pg->is_replay() &&
7452 pg->is_primary() &&
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, http://scan.coverity.com/projects/25?tab=Overview
To unsubscribe from the email notification for new defects, http://scan5.coverity.com/cgi-bin/unsubscribe.py
--- End Message ---