diff options
author | Rakesh Pandit <rakesh@tuxera.com> | 2017-10-13 08:45:54 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-10-13 10:34:57 -0400 |
commit | c9d84b350f9b253872fc24f4dcfea166c884ee15 (patch) | |
tree | 8bbff36b9847bebdac26eeaf7736838ffc265ea5 /drivers/lightnvm/pblk-init.c | |
parent | a96d50fa0c8d3e399c49a0a90ddbbaabf8a46bb3 (diff) |
lightnvm: pblk: fix error path in pblk_lines_alloc_metadata
Use appropriate memory free calls based on allocation type used and
also fix number of times free is called if kmalloc fails.
Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Reviewed-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r-- | drivers/lightnvm/pblk-init.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index 6df65d14a2c5..05665a7e648c 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c | |||
@@ -630,7 +630,10 @@ static int pblk_lines_alloc_metadata(struct pblk *pblk) | |||
630 | 630 | ||
631 | fail_free_emeta: | 631 | fail_free_emeta: |
632 | while (--i >= 0) { | 632 | while (--i >= 0) { |
633 | vfree(l_mg->eline_meta[i]->buf); | 633 | if (l_mg->emeta_alloc_type == PBLK_VMALLOC_META) |
634 | vfree(l_mg->eline_meta[i]->buf); | ||
635 | else | ||
636 | kfree(l_mg->eline_meta[i]->buf); | ||
634 | kfree(l_mg->eline_meta[i]); | 637 | kfree(l_mg->eline_meta[i]); |
635 | } | 638 | } |
636 | 639 | ||