summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2012-07-03 12:55:33 +0100
committerBen Hutchings <ben@decadent.org.uk>2012-07-12 04:32:07 +0100
commitee294c7066c9c056a28c6d7b4b024ddf18a80f12 (patch)
tree5e477d2114e303799153835c797ae10f2d360f7a
parentbe2c05493abc0f6d85a5c46f78df73d60a65d752 (diff)
downloadlwn-ee294c7066c9c056a28c6d7b4b024ddf18a80f12.tar.gz
lwn-ee294c7066c9c056a28c6d7b4b024ddf18a80f12.zip
dm persistent data: fix shadow_info_leak on dm_tm_destroy
commit 25d7cd6faa7ae6ed2565617c3ee2500ccb8a9f7f upstream. Cleanup the shadow table before destroying the transaction manager. Reference: leak was identified with kmemleak when running test_discard_random_sectors in the thinp-test-suite. Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--drivers/md/persistent-data/dm-transaction-manager.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/md/persistent-data/dm-transaction-manager.c b/drivers/md/persistent-data/dm-transaction-manager.c
index 6f8d38747d7f..e5902d1f8c14 100644
--- a/drivers/md/persistent-data/dm-transaction-manager.c
+++ b/drivers/md/persistent-data/dm-transaction-manager.c
@@ -138,6 +138,9 @@ EXPORT_SYMBOL_GPL(dm_tm_create_non_blocking_clone);
void dm_tm_destroy(struct dm_transaction_manager *tm)
{
+ if (!tm->is_clone)
+ wipe_shadow_table(tm);
+
kfree(tm);
}
EXPORT_SYMBOL_GPL(dm_tm_destroy);