mirror of https://gitee.com/openkylin/linux.git
mtd: rawnand: nandsim: Reorganize ns_cleanup_module()
Reorganize ns_cleanup_module() to fit the reworked exit path of ns_init_module(). There is no need for a ns_free_lists() function anymore, so drop it. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200525085851.17682-18-miquel.raynal@bootlin.com
This commit is contained in:
parent
f82d82e202
commit
5724fa7f2e
|
@ -978,24 +978,6 @@ static int ns_read_error(unsigned int page_no)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ns_free_lists(void)
|
|
||||||
{
|
|
||||||
struct list_head *pos, *n;
|
|
||||||
list_for_each_safe(pos, n, &weak_blocks) {
|
|
||||||
list_del(pos);
|
|
||||||
kfree(list_entry(pos, struct weak_block, list));
|
|
||||||
}
|
|
||||||
list_for_each_safe(pos, n, &weak_pages) {
|
|
||||||
list_del(pos);
|
|
||||||
kfree(list_entry(pos, struct weak_page, list));
|
|
||||||
}
|
|
||||||
list_for_each_safe(pos, n, &grave_pages) {
|
|
||||||
list_del(pos);
|
|
||||||
kfree(list_entry(pos, struct grave_page, list));
|
|
||||||
}
|
|
||||||
kfree(erase_block_wear);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ns_setup_wear_reporting(struct mtd_info *mtd)
|
static int ns_setup_wear_reporting(struct mtd_info *mtd)
|
||||||
{
|
{
|
||||||
size_t mem;
|
size_t mem;
|
||||||
|
@ -2443,12 +2425,30 @@ static void __exit ns_cleanup_module(void)
|
||||||
{
|
{
|
||||||
struct nand_chip *chip = mtd_to_nand(nsmtd);
|
struct nand_chip *chip = mtd_to_nand(nsmtd);
|
||||||
struct nandsim *ns = nand_get_controller_data(chip);
|
struct nandsim *ns = nand_get_controller_data(chip);
|
||||||
|
struct list_head *pos, *n;
|
||||||
|
|
||||||
ns_debugfs_remove(ns);
|
ns_debugfs_remove(ns);
|
||||||
ns_free(ns); /* Free nandsim private resources */
|
WARN_ON(mtd_device_unregister(nsmtd));
|
||||||
nand_release(chip); /* Unregister driver */
|
ns_free(ns);
|
||||||
kfree(ns); /* Free other structures */
|
kfree(erase_block_wear);
|
||||||
ns_free_lists();
|
nand_cleanup(chip);
|
||||||
|
|
||||||
|
list_for_each_safe(pos, n, &grave_pages) {
|
||||||
|
list_del(pos);
|
||||||
|
kfree(list_entry(pos, struct grave_page, list));
|
||||||
|
}
|
||||||
|
|
||||||
|
list_for_each_safe(pos, n, &weak_pages) {
|
||||||
|
list_del(pos);
|
||||||
|
kfree(list_entry(pos, struct weak_page, list));
|
||||||
|
}
|
||||||
|
|
||||||
|
list_for_each_safe(pos, n, &weak_blocks) {
|
||||||
|
list_del(pos);
|
||||||
|
kfree(list_entry(pos, struct weak_block, list));
|
||||||
|
}
|
||||||
|
|
||||||
|
kfree(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_exit(ns_cleanup_module);
|
module_exit(ns_cleanup_module);
|
||||||
|
|
Loading…
Reference in New Issue