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:
Miquel Raynal 2020-05-25 10:58:51 +02:00
parent f82d82e202
commit 5724fa7f2e
1 changed files with 22 additions and 22 deletions

View File

@ -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);