diff options
-rw-r--r-- | drivers/lightnvm/gennvm.c | 15 |
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 | ||
210 | static 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 | |||
210 | static int gennvm_register(struct nvm_dev *dev) | 218 | static 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; |
236 | err: | 244 | err: |
237 | kfree(gn); | 245 | gennvm_free(dev); |
238 | return ret; | 246 | return ret; |
239 | } | 247 | } |
240 | 248 | ||
241 | static void gennvm_unregister(struct nvm_dev *dev) | 249 | static 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 | ||
249 | static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, | 254 | static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, |