mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
dm thin: reinstate missing mempool_free in cell_release_singleton
Fix a significant memory leak inadvertently introduced during
simplification of cell_release_singleton() in commit
6f94a4c45a
("dm thin: fix stacked bi_next
usage").
A cell's hlist_del() must be accompanied by a mempool_free().
Use __cell_release() to do this, like before.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
This commit is contained in:
parent
d48b97b403
commit
03aaae7cdc
@ -279,8 +279,10 @@ static void __cell_release(struct cell *cell, struct bio_list *inmates)
|
||||
|
||||
hlist_del(&cell->list);
|
||||
|
||||
bio_list_add(inmates, cell->holder);
|
||||
bio_list_merge(inmates, &cell->bios);
|
||||
if (inmates) {
|
||||
bio_list_add(inmates, cell->holder);
|
||||
bio_list_merge(inmates, &cell->bios);
|
||||
}
|
||||
|
||||
mempool_free(cell, prison->cell_pool);
|
||||
}
|
||||
@ -303,9 +305,10 @@ 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);
|
||||
BUG_ON(cell->holder != bio);
|
||||
BUG_ON(!bio_list_empty(&cell->bios));
|
||||
|
||||
__cell_release(cell, NULL);
|
||||
}
|
||||
|
||||
static void cell_release_singleton(struct cell *cell, struct bio *bio)
|
||||
|
Loading…
Reference in New Issue
Block a user