]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix use-after-free when releasing completion handle
authorYehuda Sadeh <yehuda@inktank.com>
Wed, 18 Dec 2013 21:11:01 +0000 (13:11 -0800)
committerSage Weil <sage@inktank.com>
Wed, 18 Dec 2013 21:11:56 +0000 (13:11 -0800)
Backport: emperor, dumpling
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit c8890ab2d46fe8e12200a0d2f9eab31c461fb871)

src/rgw/rgw_rados.cc

index a5247ffca294703b3cf451c47f85adb9c5c627b5..ac9503a306f47642572ab0e3d0565860c304b287 100644 (file)
@@ -4187,7 +4187,6 @@ struct get_obj_data : public RefCountedObject {
 
     c->wait_for_complete_and_cb();
     int r = c->get_return_value();
-    c->release();
 
     lock.Lock();
     completion_map.erase(cur_ofs);
@@ -4196,6 +4195,8 @@ struct get_obj_data : public RefCountedObject {
       *done = true;
     }
     lock.Unlock();
+
+    c->release();
     
     return r;
   }