mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-08 18:35:20 +02:00
mtd: rawnand: mtk: Factorize out the logic cleaning mtk chips
[ Upstream commit81cb3be326
] There are some un-freed resources in one of the error path which would benefit from a helper going through all the registered mtk chips one by one and perform all the necessary cleanup. This is precisely what the remove path does, so let's extract the logic in a helper. There is no functional change. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Pratyush Yadav <pratyush@kernel.org> Reviewed-by: Matthias Brugger <matthias.bgg@kernel.org> Link: https://lore.kernel.org/linux-mtd/20240826153019.67106-1-miquel.raynal@bootlin.com Stable-dep-of:2073ae37d5
("mtd: rawnand: mtk: Fix init error path") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
ca63b1cbcd
commit
e502a0db34
|
@ -1429,6 +1429,23 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mtk_nfc_nand_chips_cleanup(struct mtk_nfc *nfc)
|
||||||
|
{
|
||||||
|
struct mtk_nfc_nand_chip *mtk_chip;
|
||||||
|
struct nand_chip *chip;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
while (!list_empty(&nfc->chips)) {
|
||||||
|
mtk_chip = list_first_entry(&nfc->chips,
|
||||||
|
struct mtk_nfc_nand_chip, node);
|
||||||
|
chip = &mtk_chip->nand;
|
||||||
|
ret = mtd_device_unregister(nand_to_mtd(chip));
|
||||||
|
WARN_ON(ret);
|
||||||
|
nand_cleanup(chip);
|
||||||
|
list_del(&mtk_chip->node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int mtk_nfc_nand_chips_init(struct device *dev, struct mtk_nfc *nfc)
|
static int mtk_nfc_nand_chips_init(struct device *dev, struct mtk_nfc *nfc)
|
||||||
{
|
{
|
||||||
struct device_node *np = dev->of_node;
|
struct device_node *np = dev->of_node;
|
||||||
|
@ -1567,20 +1584,8 @@ release_ecc:
|
||||||
static void mtk_nfc_remove(struct platform_device *pdev)
|
static void mtk_nfc_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct mtk_nfc *nfc = platform_get_drvdata(pdev);
|
struct mtk_nfc *nfc = platform_get_drvdata(pdev);
|
||||||
struct mtk_nfc_nand_chip *mtk_chip;
|
|
||||||
struct nand_chip *chip;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
while (!list_empty(&nfc->chips)) {
|
|
||||||
mtk_chip = list_first_entry(&nfc->chips,
|
|
||||||
struct mtk_nfc_nand_chip, node);
|
|
||||||
chip = &mtk_chip->nand;
|
|
||||||
ret = mtd_device_unregister(nand_to_mtd(chip));
|
|
||||||
WARN_ON(ret);
|
|
||||||
nand_cleanup(chip);
|
|
||||||
list_del(&mtk_chip->node);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
mtk_nfc_nand_chips_cleanup(nfc);
|
||||||
mtk_ecc_release(nfc->ecc);
|
mtk_ecc_release(nfc->ecc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user