mtd: rawnand: nandsim: Fix the two ns_alloc_device() error paths
The ns_alloc_device() helper has actually two distinct path. Handle errors in both of them. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200525085851.17682-8-miquel.raynal@bootlin.com
This commit is contained in:
parent
cde495f839
commit
058018eb02
|
@ -543,12 +543,12 @@ static int __init ns_alloc_device(struct nandsim *ns)
|
|||
if (!(cfile->f_mode & FMODE_CAN_READ)) {
|
||||
NS_ERR("alloc_device: cache file not readable\n");
|
||||
err = -EINVAL;
|
||||
goto err_close;
|
||||
goto err_close_filp;
|
||||
}
|
||||
if (!(cfile->f_mode & FMODE_CAN_WRITE)) {
|
||||
NS_ERR("alloc_device: cache file not writeable\n");
|
||||
err = -EINVAL;
|
||||
goto err_close;
|
||||
goto err_close_filp;
|
||||
}
|
||||
ns->pages_written =
|
||||
vzalloc(array_size(sizeof(unsigned long),
|
||||
|
@ -556,16 +556,24 @@ static int __init ns_alloc_device(struct nandsim *ns)
|
|||
if (!ns->pages_written) {
|
||||
NS_ERR("alloc_device: unable to allocate pages written array\n");
|
||||
err = -ENOMEM;
|
||||
goto err_close;
|
||||
goto err_close_filp;
|
||||
}
|
||||
ns->file_buf = kmalloc(ns->geom.pgszoob, GFP_KERNEL);
|
||||
if (!ns->file_buf) {
|
||||
NS_ERR("alloc_device: unable to allocate file buf\n");
|
||||
err = -ENOMEM;
|
||||
goto err_free;
|
||||
goto err_free_pw;
|
||||
}
|
||||
ns->cfile = cfile;
|
||||
|
||||
return 0;
|
||||
|
||||
err_free_pw:
|
||||
vfree(ns->pages_written);
|
||||
err_close_filp:
|
||||
filp_close(cfile, NULL);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
ns->pages = vmalloc(array_size(sizeof(union ns_mem), ns->geom.pgnum));
|
||||
|
@ -580,15 +588,15 @@ static int __init ns_alloc_device(struct nandsim *ns)
|
|||
ns->geom.pgszoob, 0, 0, NULL);
|
||||
if (!ns->nand_pages_slab) {
|
||||
NS_ERR("cache_create: unable to create kmem_cache\n");
|
||||
return -ENOMEM;
|
||||
err = -ENOMEM;
|
||||
goto err_free_pg;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_free:
|
||||
vfree(ns->pages_written);
|
||||
err_close:
|
||||
filp_close(cfile, NULL);
|
||||
err_free_pg:
|
||||
vfree(ns->pages);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue