lightnvm: prevent double free on init error
Both the nvm_register and nvm_init does a kfree(dev) on error. Make sure to only free it once. Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
Родитель
edad2e6606
Коммит
c1480ad594
|
@ -160,11 +160,6 @@ int nvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk)
|
|||
}
|
||||
EXPORT_SYMBOL(nvm_erase_blk);
|
||||
|
||||
static void nvm_core_free(struct nvm_dev *dev)
|
||||
{
|
||||
kfree(dev);
|
||||
}
|
||||
|
||||
static int nvm_core_init(struct nvm_dev *dev)
|
||||
{
|
||||
struct nvm_id *id = &dev->identity;
|
||||
|
@ -223,8 +218,6 @@ static void nvm_free(struct nvm_dev *dev)
|
|||
|
||||
if (dev->mt)
|
||||
dev->mt->unregister_mgr(dev);
|
||||
|
||||
nvm_core_free(dev);
|
||||
}
|
||||
|
||||
static int nvm_init(struct nvm_dev *dev)
|
||||
|
@ -351,11 +344,12 @@ void nvm_unregister(char *disk_name)
|
|||
return;
|
||||
}
|
||||
|
||||
nvm_exit(dev);
|
||||
|
||||
down_write(&nvm_lock);
|
||||
list_del(&dev->devices);
|
||||
up_write(&nvm_lock);
|
||||
|
||||
nvm_exit(dev);
|
||||
kfree(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(nvm_unregister);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче