From f3affb6635fdac8a55beecc73c737f23acb38178 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Tue, 21 Nov 2017 21:19:35 -0500 Subject: [PATCH] rbd-mirror: free memory after image deleter fails to open image Signed-off-by: Jason Dillaman --- .../rbd_mirror/image_deleter/test_mock_SnapshotPurgeRequest.cc | 1 + src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/test/rbd_mirror/image_deleter/test_mock_SnapshotPurgeRequest.cc b/src/test/rbd_mirror/image_deleter/test_mock_SnapshotPurgeRequest.cc index bf312135d60..370b6d29425 100644 --- a/src/test/rbd_mirror/image_deleter/test_mock_SnapshotPurgeRequest.cc +++ b/src/test/rbd_mirror/image_deleter/test_mock_SnapshotPurgeRequest.cc @@ -218,6 +218,7 @@ TEST_F(TestMockImageDeleterSnapshotPurgeRequest, OpenError) { InSequence seq; expect_set_journal_policy(mock_image_ctx); expect_open(mock_image_ctx, -EPERM); + expect_destroy(mock_image_ctx); C_SaferCond ctx; auto req = MockSnapshotPurgeRequest::create(m_local_io_ctx, mock_image_ctx.id, diff --git a/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc b/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc index 8d2350decf3..80e46101daa 100644 --- a/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc +++ b/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc @@ -67,6 +67,9 @@ void SnapshotPurgeRequest::handle_open_image(int r) { if (r < 0) { derr << "failed to open image '" << m_image_id << "': " << cpp_strerror(r) << dendl; + m_image_ctx->destroy(); + m_image_ctx = nullptr; + finish(r); return; } -- 2.39.5