* [PATCH] staging: r8188eu: Fix while-loop that iterates only once
@ 2021-06-29 16:36 Colin King
2021-06-29 21:53 ` David Laight
0 siblings, 1 reply; 3+ messages in thread
From: Colin King @ 2021-06-29 16:36 UTC (permalink / raw)
To: Larry Finger, Greg Kroah-Hartman, linux-staging
Cc: kernel-janitors, linux-kernel
From: Colin Ian King <colin.king@canonical.com>
The while-loop only iterates once becase the post increment test of count
being non-zero is false on the first iteration because count is zero. Fix
this by incrementing count using pre-increment. Static analysis found the
issue on the count > POLLING_LLT_THRESHOLD check always being false since
the loop currently just iterates once.
Addresses-Coverity: ("Logically dead code")
Fixes: 615a4d12e556 ("staging: r8188eu: Add files for new driver - part 14")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
index d1086699f952..db57f04e7e56 100644
--- a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
+++ b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
@@ -185,7 +185,7 @@ static s32 _LLTWrite(struct adapter *padapter, u32 address, u32 data)
break;
}
udelay(5);
- } while (count++);
+ } while (++count);
return status;
}
--
2.31.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] staging: r8188eu: Fix while-loop that iterates only once
2021-06-29 16:36 [PATCH] staging: r8188eu: Fix while-loop that iterates only once Colin King
@ 2021-06-29 21:53 ` David Laight
2021-06-30 6:44 ` Colin Ian King
0 siblings, 1 reply; 3+ messages in thread
From: David Laight @ 2021-06-29 21:53 UTC (permalink / raw)
To: 'Colin King', Larry Finger, Greg Kroah-Hartman, linux-staging
Cc: kernel-janitors, linux-kernel
From: Colin King
> Sent: 29 June 2021 17:36
>
> The while-loop only iterates once becase the post increment test of count
> being non-zero is false on the first iteration because count is zero. Fix
> this by incrementing count using pre-increment. Static analysis found the
> issue on the count > POLLING_LLT_THRESHOLD check always being false since
> the loop currently just iterates once.
But that is a very strange 'loop bottom'.
...
> diff --git a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
> b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
> index d1086699f952..db57f04e7e56 100644
> --- a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
> +++ b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
> @@ -185,7 +185,7 @@ static s32 _LLTWrite(struct adapter *padapter, u32 address, u32 data)
> break;
> }
> udelay(5);
> - } while (count++);
> + } while (++count);
Unless 'count' is negative that might as well be 'while (1)'
with count incremented elsewhere.
Perhaps the loop top should be:
for (count = 0;; count++) {
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] staging: r8188eu: Fix while-loop that iterates only once
2021-06-29 21:53 ` David Laight
@ 2021-06-30 6:44 ` Colin Ian King
0 siblings, 0 replies; 3+ messages in thread
From: Colin Ian King @ 2021-06-30 6:44 UTC (permalink / raw)
To: David Laight, Larry Finger, Greg Kroah-Hartman, linux-staging
Cc: kernel-janitors, linux-kernel
On 29/06/2021 22:53, David Laight wrote:
> From: Colin King
>> Sent: 29 June 2021 17:36
>>
>> The while-loop only iterates once becase the post increment test of count
>> being non-zero is false on the first iteration because count is zero. Fix
>> this by incrementing count using pre-increment. Static analysis found the
>> issue on the count > POLLING_LLT_THRESHOLD check always being false since
>> the loop currently just iterates once.
>
> But that is a very strange 'loop bottom'.
>
> ...
>> diff --git a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
>> b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
>> index d1086699f952..db57f04e7e56 100644
>> --- a/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
>> +++ b/drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
>> @@ -185,7 +185,7 @@ static s32 _LLTWrite(struct adapter *padapter, u32 address, u32 data)
>> break;
>> }
>> udelay(5);
>> - } while (count++);
>> + } while (++count);
>
> Unless 'count' is negative that might as well be 'while (1)'
> with count incremented elsewhere.
> Perhaps the loop top should be:
> for (count = 0;; count++) {
I'll rework it, thanks for the input.
>
> David
>
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
> Registration No: 1397386 (Wales)
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-06-30 6:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-29 16:36 [PATCH] staging: r8188eu: Fix while-loop that iterates only once Colin King
2021-06-29 21:53 ` David Laight
2021-06-30 6:44 ` Colin Ian King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).