ARM: pxa: fix error handling in pxa2xx_drv_pcmcia_probe
Subsystems (2)
PATCH RESEND 1/1 ARM: pxa: fix error handling in pxa2xx_drv_pcmcia_probe
If pxa2xx_drv_pcmcia_add_one fails, it will go to err1 error path. Add a missing clk_put in the error path.
Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
--- drivers/pcmcia/pxa2xx_base.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)
drivers/pcmcia/pxa2xx_base.c +3 -9
@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) goto err1; } -if (ret) { -while (--i >=0 ) -soc_pcmcia_remove_one (&sinfo->skt[i]); -kfree (sinfo); -clk_put (clk); - }else { -pxa2xx_configure_sockets (&dev->dev); -dev_set_drvdata (&dev->dev, sinfo); - } +pxa2xx_configure_sockets (&dev->dev); +dev_set_drvdata (&dev->dev, sinfo);return 0 ; err1:while (--i >=0 )soc_pcmcia_remove_one (&sinfo->skt[i]); +clk_put (clk);kfree (sinfo); err0:return ret;
Signature · 1 line
1.7.5.4
Quoted 7 lines · Axel Lin
If
pxa2xx_drv_pcmcia_add_onefails, it will go to err1 error path. Add a missingclk_putin the error path.Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
Signed-off-by Axel Lin <[email protected]>
Quoted 38 lines
---
?drivers/pcmcia/pxa2xx_base.c | ? 12 +++---------
?1 files changed, 3 insertions(+), 9 deletions(-)drivers/pcmcia/pxa2xx_base.c +2
-9@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) ? ? ? ? ? ? ? ? ? ? ? ?goto err1; ? ? ? ?} - ? ? ? if (ret) { - ? ? ? ? ? ? ? while (--i >= 0) - ? ? ? ? ? ? ? ? ? ? ? soc_pcmcia_remove_one(&sinfo->skt[i]); - ? ? ? ? ? ? ? kfree(sinfo); - ? ? ? ? ? ? ? clk_put(clk); - ? ? ? } else { - ? ? ? ? ? ? ? pxa2xx_configure_sockets(&dev->dev); - ? ? ? ? ? ? ? dev_set_drvdata(&dev->dev, sinfo); - ? ? ? } + ? ? ? pxa2xx_configure_sockets(&dev->dev); + ? ? ? dev_set_drvdata(&dev->dev, sinfo); ? ? ? ?return 0;?err1:
? ? ? ?while (--i >= 0)
? ? ? ? ? ? ? ?soc_pcmcia_remove_one(&sinfo->skt[i]);
+ ? ? ?clk_put(clk);
? ? ? ?kfree(sinfo);
?err0:
? ? ? ?return ret;
--
1.7.5.4
Haojian Zhuang
Acked-by Eric Miao________________________________________
From: Eric Miao [eric.y.miao at gmail.com]
Sent: Tuesday, December 27, 2011 5:11 PM
To: Axel Lin
Cc: linux-kernel at vger.kernel.org; Haojian Zhuang; Russell King; linux-arm-kernel at lists.infradead.org; linux-pcmcia at lists.infradead.org
Subject: Re: [PATCH RESEND] ARM: pxa: fix error handling in pxa2xx_drv_pcmcia_probe
Quoted 7 lines · Axel Lin
If
pxa2xx_drv_pcmcia_add_onefails, it will go to err1 error path. Add a missingclk_putin the error path.Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
Signed-off-by Axel Lin <[email protected]>
Quoted 34 lines
--- drivers/pcmcia/pxa2xx_base.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)drivers/pcmcia/pxa2xx_base.c +3
-10@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) goto err1; } -if (ret) { -while (--i >=0 ) -soc_pcmcia_remove_one (&sinfo->skt[i]); -kfree (sinfo); -clk_put (clk); - }else { -pxa2xx_configure_sockets (&dev->dev); -dev_set_drvdata (&dev->dev, sinfo); - } +pxa2xx_configure_sockets (&dev->dev); +dev_set_drvdata (&dev->dev, sinfo);return 0 ; err1:while (--i >=0 )soc_pcmcia_remove_one (&sinfo->skt[i]); +clk_put (clk);kfree (sinfo); err0:return ret; --
Quoted 4 lines
1.7.5.4
Wait a minute.
The original code will check whether pxa2xx_drv_pcmcia_add_one() successful. If it fails, we'll remove all devices that we registered.
But Axel removed these code. Why?
Thanks
Haojian
Quoted 59 lines · Haojian Zhuang
________________________________________
From: Eric Miao [eric.y.miao at gmail.com]
Sent: Tuesday, December 27, 2011 5:11 PM
To: Axel Lin
Cc: linux-kernel at vger.kernel.org; Haojian Zhuang; Russell King; linux-arm-kernel at lists.infradead.org; linux-pcmcia at lists.infradead.org
Subject: Re: [PATCH RESEND] ARM: pxa: fix error handling inpxa2xx_drv_pcmcia_probeQuoted 7 lines · Axel Lin
If
pxa2xx_drv_pcmcia_add_onefails, it will go to err1 error path. Add a missingclk_putin the error path.Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
Signed-off-by Axel Lin <[email protected]>Acked-by Eric Miao <[email protected]>Quoted 27 lines
---
?drivers/pcmcia/pxa2xx_base.c | ? 12 +++---------
?1 files changed, 3 insertions(+), 9 deletions(-)drivers/pcmcia/pxa2xx_base.c +2
-9@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) ? ? ? ? ? ? ? ? ? ? ? ?goto err1; ? ? ? ?} - ? ? ? if (ret) { - ? ? ? ? ? ? ? while (--i >= 0) - ? ? ? ? ? ? ? ? ? ? ? soc_pcmcia_remove_one(&sinfo->skt[i]); - ? ? ? ? ? ? ? kfree(sinfo); - ? ? ? ? ? ? ? clk_put(clk); - ? ? ? } else { - ? ? ? ? ? ? ? pxa2xx_configure_sockets(&dev->dev); - ? ? ? ? ? ? ? dev_set_drvdata(&dev->dev, sinfo); - ? ? ? } + ? ? ? pxa2xx_configure_sockets(&dev->dev); + ? ? ? dev_set_drvdata(&dev->dev, sinfo); ? ? ? ?return 0;?err1:
Quoted 11 lines
? ? ? ?while (--i >= 0)
? ? ? ? ? ? ? ?soc_pcmcia_remove_one(&sinfo->skt[i]);
+ ? ? ?clk_put(clk);
? ? ? ?kfree(sinfo);
?err0:
? ? ? ?return ret;
--
1.7.5.4Wait a minute.
Quoted 3 lines
The original code will check whether
pxa2xx_drv_pcmcia_add_one()successful. If it fails, we'll remove all devices that we registered.But Axel removed these code. Why?
If it fails, it will jump to err1 anyway. The check there is redundant.
Quoted 60 lines · Eric Miao
Quoted 59 lines · Haojian Zhuang
________________________________________
From: Eric Miao [eric.y.miao at gmail.com]
Sent: Tuesday, December 27, 2011 5:11 PM
To: Axel Lin
Cc: linux-kernel at vger.kernel.org; Haojian Zhuang; Russell King; linux-arm-kernel at lists.infradead.org; linux-pcmcia at lists.infradead.org
Subject: Re: [PATCH RESEND] ARM: pxa: fix error handling inpxa2xx_drv_pcmcia_probeQuoted 7 lines · Axel Lin
If
pxa2xx_drv_pcmcia_add_onefails, it will go to err1 error path. Add a missingclk_putin the error path.Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
Signed-off-by Axel Lin <[email protected]>Acked-by Eric Miao <[email protected]>Quoted 27 lines
---
?drivers/pcmcia/pxa2xx_base.c | ? 12 +++---------
?1 files changed, 3 insertions(+), 9 deletions(-)drivers/pcmcia/pxa2xx_base.c +2
-9@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) ? ? ? ? ? ? ? ? ? ? ? ?goto err1; ? ? ? ?} - ? ? ? if (ret) { - ? ? ? ? ? ? ? while (--i >= 0) - ? ? ? ? ? ? ? ? ? ? ? soc_pcmcia_remove_one(&sinfo->skt[i]); - ? ? ? ? ? ? ? kfree(sinfo); - ? ? ? ? ? ? ? clk_put(clk); - ? ? ? } else { - ? ? ? ? ? ? ? pxa2xx_configure_sockets(&dev->dev); - ? ? ? ? ? ? ? dev_set_drvdata(&dev->dev, sinfo); - ? ? ? } + ? ? ? pxa2xx_configure_sockets(&dev->dev); + ? ? ? dev_set_drvdata(&dev->dev, sinfo); ? ? ? ?return 0;?err1:
Quoted 11 lines
? ? ? ?while (--i >= 0)
? ? ? ? ? ? ? ?soc_pcmcia_remove_one(&sinfo->skt[i]);
+ ? ? ?clk_put(clk);
? ? ? ?kfree(sinfo);
?err0:
? ? ? ?return ret;
--
1.7.5.4Wait a minute.
Quoted 6 lines
Quoted 3 lines
The original code will check whether
pxa2xx_drv_pcmcia_add_one()successful. If it fails, we'll remove all devices that we registered.But Axel removed these code. Why?
If it fails, it will jump to err1 anyway. The check there is redundant.
Applied
Quoted 4 lines
Quoted 3 lines
If it fails, it will jump to err1 anyway. The check there is redundant.
Applied
Hi Haojian,
This patch is not (yet) upstream.
Could you help to check it again.
Thanks,
Axel
Quoted 30 lines
If
pxa2xx_drv_pcmcia_add_onefails, it will go to err1 error path. Add a missingclk_putin the error path.Checking the ret value after the for loop is redundant, it is always false. Thus remove the redundant checking.
Signed-off-by Axel Lin <[email protected]>--- drivers/pcmcia/pxa2xx_base.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)drivers/pcmcia/pxa2xx_base.c +2
-9@@ -328,21 +328,15 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev) goto err1; } -if (ret) { -while (--i >=0 ) -soc_pcmcia_remove_one (&sinfo->skt[i]); -kfree (sinfo); -clk_put (clk); - }else { -pxa2xx_configure_sockets (&dev->dev); -dev_set_drvdata (&dev->dev, sinfo); - } +pxa2xx_configure_sockets (&dev->dev); +dev_set_drvdata (&dev->dev, sinfo);
drivers/pcmcia/pxa2xx_base.c static int pxa2xx_drv_pcmcia_probe(struct · line 342
Quoted 10 lines
drivers/pcmcia/pxa2xx_base.c +1
-0return 0 ; err1:while (--i >=0 )soc_pcmcia_remove_one (&sinfo->skt[i]); +clk_put (clk);kfree (sinfo); err0:return ret;
Makes sense