2006-10-06 04:55:21

by Amol Lad

[permalink] [raw]
Subject: [PATCH 5/5] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c

Signed-off-by: Amol Lad <[email protected]>
---
s3c2410_wdt.c | 5 +++++
1 files changed, 5 insertions(+)
---
diff -uprN -X linux-2.6.19-rc1-orig/Documentation/dontdiff linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c
--- linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:00:43.000000000 +0530
+++ linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:50:00.000000000 +0530
@@ -381,18 +381,21 @@ static int s3c2410wdt_probe(struct platf
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (res == NULL) {
printk(KERN_INFO PFX "failed to get irq resource\n");
+ iounmap(wdt_base);
return -ENOENT;
}

ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
if (ret != 0) {
printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
+ iounmap(wdt_base);
return ret;
}

wdt_clock = clk_get(&pdev->dev, "watchdog");
if (wdt_clock == NULL) {
printk(KERN_INFO PFX "failed to find watchdog clock source\n");
+ iounmap(wdt_base);
return -ENOENT;
}

@@ -416,6 +419,7 @@ static int s3c2410wdt_probe(struct platf
if (ret) {
printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
WATCHDOG_MINOR, ret);
+ iounmap(wdt_base);
return ret;
}

@@ -452,6 +456,7 @@ static int s3c2410wdt_remove(struct plat
wdt_clock = NULL;
}

+ iounmap(wdt_base);
misc_deregister(&s3c2410wdt_miscdev);
return 0;
}



2006-10-06 20:40:31

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 5/5] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c

On Fri, 06 Oct 2006 10:27:07 +0530
Amol Lad <[email protected]> wrote:

> Signed-off-by: Amol Lad <[email protected]>
> ---
> s3c2410_wdt.c | 5 +++++
> 1 files changed, 5 insertions(+)
> ---
> diff -uprN -X linux-2.6.19-rc1-orig/Documentation/dontdiff linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c
> --- linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:00:43.000000000 +0530
> +++ linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:50:00.000000000 +0530
> @@ -381,18 +381,21 @@ static int s3c2410wdt_probe(struct platf
> res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> if (res == NULL) {
> printk(KERN_INFO PFX "failed to get irq resource\n");
> + iounmap(wdt_base);
> return -ENOENT;
> }
>
> ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
> if (ret != 0) {
> printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
> + iounmap(wdt_base);
> return ret;
> }
>
> wdt_clock = clk_get(&pdev->dev, "watchdog");
> if (wdt_clock == NULL) {
> printk(KERN_INFO PFX "failed to find watchdog clock source\n");
> + iounmap(wdt_base);
> return -ENOENT;
> }
>
> @@ -416,6 +419,7 @@ static int s3c2410wdt_probe(struct platf
> if (ret) {
> printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
> WATCHDOG_MINOR, ret);
> + iounmap(wdt_base);
> return ret;
> }
>

barf. That function has to set the record for the
number-of-return-statements-per-line. There are good reasons why we prefer
to have a single return point at which to handle all the error unwinding,
and the above patch illustrates one of them.

Sigh. Oh well, patch looks correct - I'll start spamming Wim with it,
thanks.

2006-10-06 20:41:14

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 5/5] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c

On Fri, 06 Oct 2006 10:27:07 +0530
Amol Lad <[email protected]> wrote:

> Signed-off-by: Amol Lad <[email protected]>
> ---
> s3c2410_wdt.c | 5 +++++
> 1 files changed, 5 insertions(+)
> ---
> diff -uprN -X linux-2.6.19-rc1-orig/Documentation/dontdiff linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c
> --- linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:00:43.000000000 +0530
> +++ linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:50:00.000000000 +0530
> @@ -381,18 +381,21 @@ static int s3c2410wdt_probe(struct platf
> res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> if (res == NULL) {
> printk(KERN_INFO PFX "failed to get irq resource\n");
> + iounmap(wdt_base);
> return -ENOENT;
> }
>
> ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
> if (ret != 0) {
> printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
> + iounmap(wdt_base);
> return ret;
> }
>
> wdt_clock = clk_get(&pdev->dev, "watchdog");
> if (wdt_clock == NULL) {
> printk(KERN_INFO PFX "failed to find watchdog clock source\n");
> + iounmap(wdt_base);
> return -ENOENT;
> }
>
> @@ -416,6 +419,7 @@ static int s3c2410wdt_probe(struct platf
> if (ret) {
> printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
> WATCHDOG_MINOR, ret);
> + iounmap(wdt_base);
> return ret;
> }
>

barf. That function has to set the record for the
number-of-return-statements-per-line. There are good reasons why we prefer
to have a single return point at which to handle all the error unwinding,
and the above patch illustrates one of them.

Sigh. Oh well, patch looks correct - I'll start spamming Wim with it,
thanks.

(Not that Wim - this Wim).

2006-10-07 20:47:37

by Wim Van Sebroeck

[permalink] [raw]
Subject: Re: [PATCH 5/5] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c

Hi All,

> barf. That function has to set the record for the
> number-of-return-statements-per-line. There are good reasons why we prefer
> to have a single return point at which to handle all the error unwinding,
> and the above patch illustrates one of them.
>
> Sigh. Oh well, patch looks correct - I'll start spamming Wim with it,
> thanks.
>
> (Not that Wim - this Wim).

Added it to the linux-2.6-watchdog-mm tree.

Greetings,
Wim.

2006-11-12 13:29:55

by Ben Dooks

[permalink] [raw]
Subject: Re: [PATCH 5/5] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c

On Fri, Oct 06, 2006 at 01:40:20PM -0700, Andrew Morton wrote:
> On Fri, 06 Oct 2006 10:27:07 +0530
> Amol Lad <[email protected]> wrote:
>
> > Signed-off-by: Amol Lad <[email protected]>
> > ---
> > s3c2410_wdt.c | 5 +++++
> > 1 files changed, 5 insertions(+)
> > ---
> > diff -uprN -X linux-2.6.19-rc1-orig/Documentation/dontdiff linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c
> > --- linux-2.6.19-rc1-orig/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:00:43.000000000 +0530
> > +++ linux-2.6.19-rc1/drivers/char/watchdog/s3c2410_wdt.c 2006-10-05 14:50:00.000000000 +0530
> > @@ -381,18 +381,21 @@ static int s3c2410wdt_probe(struct platf
> > res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> > if (res == NULL) {
> > printk(KERN_INFO PFX "failed to get irq resource\n");
> > + iounmap(wdt_base);
> > return -ENOENT;
> > }
> >
> > ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
> > if (ret != 0) {
> > printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
> > + iounmap(wdt_base);
> > return ret;
> > }
> >
> > wdt_clock = clk_get(&pdev->dev, "watchdog");
> > if (wdt_clock == NULL) {
> > printk(KERN_INFO PFX "failed to find watchdog clock source\n");
> > + iounmap(wdt_base);
> > return -ENOENT;
> > }
> >
> > @@ -416,6 +419,7 @@ static int s3c2410wdt_probe(struct platf
> > if (ret) {
> > printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
> > WATCHDOG_MINOR, ret);
> > + iounmap(wdt_base);
> > return ret;
> > }
> >
>
> barf. That function has to set the record for the
> number-of-return-statements-per-line. There are good reasons why we prefer
> to have a single return point at which to handle all the error unwinding,
> and the above patch illustrates one of them.

I'll try and sort this out once 2.6.19 is out.

--
Ben ([email protected], http://www.fluff.org/)

'a smiley only costs 4 bytes'