Skip to content

Commit

Permalink
lightnvm: free memory when gennvm register fails
Browse files Browse the repository at this point in the history
free allocated nvm block and gennvm lun structures when
gennvm register fails, otherwise it will cause memory leak.

Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
  • Loading branch information
Wenwei Tao authored and Jens Axboe committed Nov 29, 2015
1 parent c4699e7 commit 8261bd4
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions drivers/lightnvm/gennvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,14 @@ static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn)
return 0;
}

static void gennvm_free(struct nvm_dev *dev)
{
gennvm_blocks_free(dev);
gennvm_luns_free(dev);
kfree(dev->mp);
dev->mp = NULL;
}

static int gennvm_register(struct nvm_dev *dev)
{
struct gen_nvm *gn;
Expand Down Expand Up @@ -234,16 +242,13 @@ static int gennvm_register(struct nvm_dev *dev)

return 1;
err:
kfree(gn);
gennvm_free(dev);
return ret;
}

static void gennvm_unregister(struct nvm_dev *dev)
{
gennvm_blocks_free(dev);
gennvm_luns_free(dev);
kfree(dev->mp);
dev->mp = NULL;
gennvm_free(dev);
}

static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev,
Expand Down

0 comments on commit 8261bd4

Please sign in to comment.