2008-10-14 16:00:38

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 2/2] drivers/scsi/sun3x_esp.c: Convert && to ||

From: Julia Lawall <[email protected]>

The pattern !E && !E->fld is nonsensical. The patch below updates this
according to the assumption that && should be ||. But perhaps another
solution was intended.

The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@disable and_comm@
expression E;
identifier fld;
@@

- !E && !E->fld
+ !E || !E->fld
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
drivers/scsi/sun3x_esp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff -u -p a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c
--- a/drivers/scsi/sun3x_esp.c
+++ b/drivers/scsi/sun3x_esp.c
@@ -213,7 +213,7 @@ static int __devinit esp_sun3x_probe(str
esp->ops = &sun3x_esp_ops;

res = platform_get_resource(dev, IORESOURCE_MEM, 0);
- if (!res && !res->start)
+ if (!res || !res->start)
goto fail_unlink;

esp->regs = ioremap_nocache(res->start, 0x20);
@@ -221,7 +221,7 @@ static int __devinit esp_sun3x_probe(str
goto fail_unmap_regs;

res = platform_get_resource(dev, IORESOURCE_MEM, 1);
- if (!res && !res->start)
+ if (!res || !res->start)
goto fail_unmap_regs;

esp->dma_regs = ioremap_nocache(res->start, 0x10);


2008-10-14 16:30:33

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH 2/2] drivers/scsi/sun3x_esp.c: Convert && to ||

On Tue, Oct 14, 2008 at 06:00:19PM +0200, Julia Lawall wrote:
> From: Julia Lawall <[email protected]>
>
> The pattern !E && !E->fld is nonsensical. The patch below updates this
> according to the assumption that && should be ||. But perhaps another
> solution was intended.

Acked-By: Thomas Bogendoerfer <[email protected]>

Thanks for fixing this.
Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessary a
good idea. [ RFC1925, 2.3 ]

2008-10-14 17:18:09

by Sam Creasey

[permalink] [raw]
Subject: Re: [PATCH 2/2] drivers/scsi/sun3x_esp.c: Convert && to ||

On Tue, Oct 14, 2008 at 06:00:19PM +0200, Julia Lawall wrote:
> From: Julia Lawall <[email protected]>
>
> The pattern !E && !E->fld is nonsensical. The patch below updates this
> according to the assumption that && should be ||. But perhaps another
> solution was intended.
>
> The semantic patch that makes this change is as follows:
> (http://www.emn.fr/x-info/coccinelle/)
>
> // <smpl>
> @disable and_comm@
> expression E;
> identifier fld;
> @@
>
> - !E && !E->fld
> + !E || !E->fld
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
Acked-By: Sam Creasey <[email protected]>

I doubt this code would have been likely to execute, but you're
certainly right. It's a bug, and this looks like the fix.

-- Sam


>
> ---
> drivers/scsi/sun3x_esp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff -u -p a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c
> --- a/drivers/scsi/sun3x_esp.c
> +++ b/drivers/scsi/sun3x_esp.c
> @@ -213,7 +213,7 @@ static int __devinit esp_sun3x_probe(str
> esp->ops = &sun3x_esp_ops;
>
> res = platform_get_resource(dev, IORESOURCE_MEM, 0);
> - if (!res && !res->start)
> + if (!res || !res->start)
> goto fail_unlink;
>
> esp->regs = ioremap_nocache(res->start, 0x20);
> @@ -221,7 +221,7 @@ static int __devinit esp_sun3x_probe(str
> goto fail_unmap_regs;
>
> res = platform_get_resource(dev, IORESOURCE_MEM, 1);
> - if (!res && !res->start)
> + if (!res || !res->start)
> goto fail_unmap_regs;
>
> esp->dma_regs = ioremap_nocache(res->start, 0x10);