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);
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 ]
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);