]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RBD: fix potential memory leak
authorxie xingguo <xie.xingguo@zte.com.cn>
Mon, 11 Jan 2016 09:05:37 +0000 (17:05 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Mon, 11 Jan 2016 09:16:54 +0000 (17:16 +0800)
Fixes: #14332
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/librbd/internal.cc

index d29a4ca96c3de3915c6ebdce1657a7a7e4336d07..9368bceed4769137683d2e19d7d707a1d1abc712 100644 (file)
@@ -1528,6 +1528,7 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     if (r < 0) {
       lderr(cct) << "error opening parent image: "
                 << cpp_strerror(-r) << dendl;
+      delete p_imctx;
       return r;
     }
 
@@ -1579,6 +1580,7 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     r = c_imctx->state->open();
     if (r < 0) {
       lderr(cct) << "Error opening new image: " << cpp_strerror(r) << dendl;
+      delete c_imctx;
       goto err_remove;
     }
 
@@ -1658,6 +1660,7 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     if (r < 0) {
       lderr(ictx->cct) << "error opening source image: " << cpp_strerror(r)
                       << dendl;
+      delete ictx;
       return r;
     }
     BOOST_SCOPE_EXIT((ictx)) {
@@ -2031,6 +2034,7 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     int r = ictx->state->open();
     if (r < 0) {
       ldout(cct, 2) << "error opening image: " << cpp_strerror(-r) << dendl;
+      delete ictx;
     } else {
       string header_oid = ictx->header_oid;
       old_format = ictx->old_format;
@@ -2374,6 +2378,7 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
                                          dest_md_ctx, false);
     r = dest->state->open();
     if (r < 0) {
+      delete dest;
       lderr(cct) << "failed to read newly created header" << dendl;
       return r;
     }