aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/lightnvm/gennvm.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c
index e20e74ec6b91..3969a9875e59 100644
--- a/drivers/lightnvm/gennvm.c
+++ b/drivers/lightnvm/gennvm.c
@@ -207,6 +207,14 @@ static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn)
207 return 0; 207 return 0;
208} 208}
209 209
210static void gennvm_free(struct nvm_dev *dev)
211{
212 gennvm_blocks_free(dev);
213 gennvm_luns_free(dev);
214 kfree(dev->mp);
215 dev->mp = NULL;
216}
217
210static int gennvm_register(struct nvm_dev *dev) 218static int gennvm_register(struct nvm_dev *dev)
211{ 219{
212 struct gen_nvm *gn; 220 struct gen_nvm *gn;
@@ -234,16 +242,13 @@ static int gennvm_register(struct nvm_dev *dev)
234 242
235 return 1; 243 return 1;
236err: 244err:
237 kfree(gn); 245 gennvm_free(dev);
238 return ret; 246 return ret;
239} 247}
240 248
241static void gennvm_unregister(struct nvm_dev *dev) 249static void gennvm_unregister(struct nvm_dev *dev)
242{ 250{
243 gennvm_blocks_free(dev); 251 gennvm_free(dev);
244 gennvm_luns_free(dev);
245 kfree(dev->mp);
246 dev->mp = NULL;
247} 252}
248 253
249static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, 254static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev,