RE: [PATCH] S2io: two branches the same in wait_for_cmd_complete()

From: Ramkrishna Vepa
Date: Mon Jan 18 2010 - 02:35:28 EST


> Regardless of the bit_state, the branches execute the same code.
>
> Signed-off-by: Roel Kluin <roel.kluin@xxxxxxxxx>
> ---
> drivers/net/s2io.c | 13 +++----------
> 1 files changed, 3 insertions(+), 10 deletions(-)
>
> Maybe something else was intended?
> this was introduced in commit 9fc93a41a1ad11
>
> diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
> index cc42186..0e353d6 100644
> --- a/drivers/net/s2io.c
> +++ b/drivers/net/s2io.c
> @@ -3415,16 +3415,9 @@ static int wait_for_cmd_complete(void __iomem
> *addr, u64 busy_bit,
>
> do {
> val64 = readq(addr);
> - if (bit_state == S2IO_BIT_RESET) {
> - if (!(val64 & busy_bit)) {
> - ret = SUCCESS;
> - break;
> - }
> - } else {
> - if (!(val64 & busy_bit)) {
> - ret = SUCCESS;
> - break;
> - }
> + if (!(val64 & busy_bit)) {
> + ret = SUCCESS;
> + break;
> }
>
> if (in_interrupt())
> --
Thanks for catching this bug. The fix should be as follows -
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -3421,7 +3421,7 @@ static int wait_for_cmd_complete(void __iomem
*addr, u64 busy_bit,
break;
}
} else {
- if (!(val64 & busy_bit)) {
+ if (val64 & busy_bit) {
ret = SUCCESS;
break;
}

We've not hit this bug because wait_for_cmd_complete() is always called
with S2IO_BIT_RESET.

Ram
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/