Message ID | 20171118132723.24785-1-christophe.jaillet@wanadoo.fr |
---|---|
State | Rejected |
Delegated to: | Boris Brezillon |
Headers | show |
Series | mtd: onenand: Fix an error handling path in 's3c_onenand_probe(()' | expand |
On Sat, 18 Nov 2017 14:27:23 +0100 Christophe JAILLET <christophe.jaillet@wanadoo.fr> 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@wanadoo.fr> > --- > 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. > onenand->base_res = request_mem_region(r->start, resource_size(r),
Le 07/12/2017 à 17:55, Boris Brezillon a écrit : > On Sat, 18 Nov 2017 14:27:23 +0100 > Christophe JAILLET <christophe.jaillet@wanadoo.fr> 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@wanadoo.fr> >> --- >> 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
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; } onenand->base_res = request_mem_region(r->start, resource_size(r),
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@wanadoo.fr> --- drivers/mtd/onenand/samsung.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)