linux-staging.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [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	[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).