Re: [PATCH] mtd: onenand: Fix an error handling path in 's3c_onenand_probe(()'

From: Christophe JAILLET
Date: Fri Dec 08 2017 - 16:16:07 EST


Le 07/12/2017 Ã 17:55, Boris Brezillon a ÃcritÂ:
On Sat, 18 Nov 2017 14:27:23 +0100
Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> wrote:

If 'platform_get_resource()' fails, we have to go through the error
handling path to release some resources.

The unreachable 'goto ahb_resource_failed' is also wrong here and we should
go to 'resource_failed' instead.

Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
---
drivers/mtd/onenand/samsung.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c
index af0ac1a7bf8f..164ebe2b1137 100644
--- a/drivers/mtd/onenand/samsung.c
+++ b/drivers/mtd/onenand/samsung.c
@@ -872,8 +872,8 @@ static int s3c_onenand_probe(struct platform_device *pdev)
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!r) {
dev_err(&pdev->dev, "no memory resource defined\n");
- return -ENOENT;
- goto ahb_resource_failed;
+ err = -ENOENT;
+ goto resource_failed;
}
Sorry but I'd really prefer to convert the driver to use devm_
functions instead of fixing a single error path.

Thanks for your comment. devm_ functions greatly simplify the code.
I've proposed an update for that.

If I'm correct, this also helped to find two other bugs (un-balanced request_irq() and un-handled error code)

CJ