From 025716f6bc2150c02a8d2d473e998c6a4045b288 Mon Sep 17 00:00:00 2001 From: Alasdair G Kergon Date: Fri, 13 Apr 2012 10:20:47 +1000 Subject: [PATCH] Fix a memory leak inadvertently introduced during simplification of cell_release_singleton() in commit 6f94a4c45a6f744383f9f695dde019998db3df55 ("dm thin: fix stacked bi_next usage"). A cell's hlist_del() must be accompanied by a mempool_free(). Signed-off-by: Alasdair G Kergon --- drivers/md/dm-thin.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 213ae32a0fc4..721888296420 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -303,9 +303,13 @@ static void cell_release(struct cell *cell, struct bio_list *bios) */ static void __cell_release_singleton(struct cell *cell, struct bio *bio) { - hlist_del(&cell->list); + struct bio_prison *prison = cell->prison; + BUG_ON(cell->holder != bio); BUG_ON(!bio_list_empty(&cell->bios)); + + hlist_del(&cell->list); + mempool_free(cell, prison->cell_pool); } static void cell_release_singleton(struct cell *cell, struct bio *bio) -- 2.39.5