2010-08-05 20:20:01

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 10/42] drivers/mmc/host: Adjust confusing if indentation

From: Julia Lawall <[email protected]>

Move the second if (reg & ...) test into the branch indicated by its
indentation. The test was previously always executed after the if
containing that branch, but it was always false unless the if branch was
taken.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r disable braces4@
position p1,p2;
statement S1,S2;
@@

(
if (...) { ... }
|
if (...) S1@p1 S2@p2
)

@script:python@
p1 << r.p1;
p2 << r.p2;
@@

if (p1[0].column == p2[0].column):
cocci.print_main("branch",p1)
cocci.print_secs("after",p2)
// </smpl>

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

---
drivers/mmc/host/imxmmc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
index 9a68ff4..5a950b1 100644
--- a/drivers/mmc/host/imxmmc.c
+++ b/drivers/mmc/host/imxmmc.c
@@ -148,11 +148,12 @@ static int imxmci_start_clock(struct imxmci_host *host)

while (delay--) {
reg = readw(host->base + MMC_REG_STATUS);
- if (reg & STATUS_CARD_BUS_CLK_RUN)
+ if (reg & STATUS_CARD_BUS_CLK_RUN) {
/* Check twice before cut */
reg = readw(host->base + MMC_REG_STATUS);
if (reg & STATUS_CARD_BUS_CLK_RUN)
return 0;
+ }

if (test_bit(IMXMCI_PEND_STARTED_b, &host->pending_events))
return 0;


2010-08-05 21:14:26

by Pavel Pisa

[permalink] [raw]
Subject: Re: [PATCH 10/42] drivers/mmc/host: Adjust confusing if indentation

On Thursday 05 August 2010 22:19:52 Julia Lawall wrote:
> From: Julia Lawall <[email protected]>
...
> Signed-off-by: Julia Lawall <[email protected]>
Acked-by: Pavel Pisa <[email protected]>

Good catch.

> ---
> drivers/mmc/host/imxmmc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
> index 9a68ff4..5a950b1 100644
> --- a/drivers/mmc/host/imxmmc.c
> +++ b/drivers/mmc/host/imxmmc.c
> @@ -148,11 +148,12 @@ static int imxmci_start_clock(struct imxmci_host
> *host)
>
> while (delay--) {
> reg = readw(host->base + MMC_REG_STATUS);
> - if (reg & STATUS_CARD_BUS_CLK_RUN)
> + if (reg & STATUS_CARD_BUS_CLK_RUN) {
> /* Check twice before cut */
> reg = readw(host->base + MMC_REG_STATUS);
> if (reg & STATUS_CARD_BUS_CLK_RUN)
> return 0;
> + }
>
> if (test_bit(IMXMCI_PEND_STARTED_b, &host->pending_events))
> return 0;
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

--
Pavel Pisa
e-mail: [email protected]
www: http://cmp.felk.cvut.cz/~pisa
university: http://dce.fel.cvut.cz/
company: http://www.pikron.com/

2010-08-27 21:08:43

by Chris Ball

[permalink] [raw]
Subject: [PATCH RESEND] drivers/mmc/host: Adjust confusing if indentation

Hi Andrew, doesn't look like anyone else has taken this yet.

From: Julia Lawall <[email protected]>
Date: Thu, 5 Aug 2010 22:19:52 +0200 (CEST)

Move the second if (reg & ...) test into the branch indicated by its
indentation. The test was previously always executed after the if
containing that branch, but it was always false unless the if branch was
taken.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r disable braces4@
position p1,p2;
statement S1,S2;
@@

(
if (...) { ... }
|
if (...) S1@p1 S2@p2
)

@script:python@
p1 << r.p1;
p2 << r.p2;
@@

if (p1[0].column == p2[0].column):
cocci.print_main("branch",p1)
cocci.print_secs("after",p2)
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Chris Ball <[email protected]>
---
drivers/mmc/host/imxmmc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
index 9a68ff4..5a950b1 100644
--- a/drivers/mmc/host/imxmmc.c
+++ b/drivers/mmc/host/imxmmc.c
@@ -148,11 +148,12 @@ static int imxmci_start_clock(struct imxmci_host *host)

while (delay--) {
reg = readw(host->base + MMC_REG_STATUS);
- if (reg & STATUS_CARD_BUS_CLK_RUN)
+ if (reg & STATUS_CARD_BUS_CLK_RUN) {
/* Check twice before cut */
reg = readw(host->base + MMC_REG_STATUS);
if (reg & STATUS_CARD_BUS_CLK_RUN)
return 0;
+ }

if (test_bit(IMXMCI_PEND_STARTED_b, &host->pending_events))
return 0;


--
Chris Ball <[email protected]> <http://printf.net/>
One Laptop Per Child