]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG.cc: fix use of potentially invalid pointer
authorSamuel Just <samuel.just@dreamhost.com>
Wed, 19 Jan 2011 20:06:17 +0000 (12:06 -0800)
committerSamuel Just <samuel.just@dreamhost.com>
Thu, 20 Jan 2011 01:44:55 +0000 (17:44 -0800)
rollback_to may not be initialized if ret != 0.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/osd/ReplicatedPG.cc

index 4fec15476fdb55dd093433e01753a9a05d90bcac..eedf74aed34215a0a90eb844c36a6e3e91dfcc1b 100644 (file)
@@ -1637,7 +1637,6 @@ void ReplicatedPG::_rollback_to(OpContext *ctx, ceph_osd_op& op)
 
   ObjectContext *rollback_to;
   int ret = find_object_context(soid.oid, oi.oloc, snapid, &rollback_to, false);
-  sobject_t& rollback_to_sobject = rollback_to->obs.oi.soid;
   if (ret) {
     if (-ENOENT == ret) {
       // there's no snapshot here, or there's no object.
@@ -1655,6 +1654,7 @@ void ReplicatedPG::_rollback_to(OpContext *ctx, ceph_osd_op& op)
       assert(0);
     }
   } else { //we got our context, let's use it to do the rollback!
+    sobject_t& rollback_to_sobject = rollback_to->obs.oi.soid;
     if (ctx->clone_obc &&
        (ctx->clone_obc->obs.oi.soid.snap == snapid)) {
       //just cloned the rollback target, we don't need to do anything!