| From d0b128a4955f85c4045d86d2ad207dfe6812ccf7 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 19 May 2020 14:59:45 +0200 |
| Subject: mtd: rawnand: diskonchip: Fix the probe error path |
| |
| From: Miquel Raynal <miquel.raynal@bootlin.com> |
| |
| [ Upstream commit c5be12e45940f1aa1b5dfa04db5d15ad24f7c896 ] |
| |
| Not sure nand_cleanup() is the right function to call here but in any |
| case it is not nand_release(). Indeed, even a comment says that |
| calling nand_release() is a bit of a hack as there is no MTD device to |
| unregister. So switch to nand_cleanup() for now and drop this |
| comment. |
| |
| There is no Fixes tag applying here as the use of nand_release() |
| in this driver predates by far the introduction of nand_cleanup() in |
| commit d44154f969a4 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources") |
| which makes this change possible. However, pointing this commit as the |
| culprit for backporting purposes makes sense even if it did not intruce |
| any bug. |
| |
| Fixes: d44154f969a4 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources") |
| Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> |
| Cc: stable@vger.kernel.org |
| Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-13-miquel.raynal@bootlin.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/mtd/nand/diskonchip.c | 7 ++----- |
| 1 file changed, 2 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c |
| index 12cac07f5cf22..4f48a9b4f9e3f 100644 |
| --- a/drivers/mtd/nand/diskonchip.c |
| +++ b/drivers/mtd/nand/diskonchip.c |
| @@ -1605,13 +1605,10 @@ static int __init doc_probe(unsigned long physadr) |
| numchips = doc2001_init(mtd); |
| |
| if ((ret = nand_scan(mtd, numchips)) || (ret = doc->late_init(mtd))) { |
| - /* DBB note: i believe nand_release is necessary here, as |
| + /* DBB note: i believe nand_cleanup is necessary here, as |
| buffers may have been allocated in nand_base. Check with |
| Thomas. FIX ME! */ |
| - /* nand_release will call mtd_device_unregister, but we |
| - haven't yet added it. This is handled without incident by |
| - mtd_device_unregister, as far as I can tell. */ |
| - nand_release(nand); |
| + nand_cleanup(nand); |
| kfree(nand); |
| goto fail; |
| } |
| -- |
| 2.25.1 |
| |