From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56ECA70 for ; Wed, 30 Jun 2021 06:44:50 +0000 (UTC) Received: from 1.general.cking.uk.vpn ([10.172.193.212]) by youngberry.canonical.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1lyTxn-0008Dq-U5; Wed, 30 Jun 2021 06:44:47 +0000 Subject: Re: [PATCH] staging: r8188eu: Fix while-loop that iterates only once To: David Laight , Larry Finger , Greg Kroah-Hartman , "linux-staging@lists.linux.dev" Cc: "kernel-janitors@vger.kernel.org" , "linux-kernel@vger.kernel.org" References: <20210629163624.41543-1-colin.king@canonical.com> From: Colin Ian King Message-ID: Date: Wed, 30 Jun 2021 07:44:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 Precedence: bulk X-Mailing-List: linux-staging@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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) >