ath10k: ret used but uninitialized

Arnd Bergmann arnd at
Fri Jul 7 07:14:13 PDT 2017

On Fri, Jul 7, 2017 at 12:04 PM, Kalle Valo <kvalo at> wrote:
> Erik Stromdahl <erik.stromdahl at> writes:
>>> With gcc 4.1.2:
>>> drivers/net/wireless/ath/ath10k/sdio.c: In function
>>> ‘ath10k_sdio_mbox_rxmsg_pending_handler’:
>>> drivers/net/wireless/ath/ath10k/sdio.c:676: warning: ‘ret’ may be used
>>> uninitialized in this function
>>>> +
>>>> +       *done = true;
>>>> +
>>>> +       /* Copy the lookahead obtained from the HTC register table into our
>>>> +        * temp array as a start value.
>>>> +        */
>>>> +       lookaheads[0] = msg_lookahead;
>>>> +
>>>> +       timeout = jiffies + SDIO_MBOX_PROCESSING_TIMEOUT_HZ;
>>> Although very unlikely due to the long timeout, if the code is preempted here,
>>> and the loop below never entered, ret will indeed be uninitialized.
>>> It's unclear to me what the proper initialization would be, though, so
>>> that's why I didn't send a patch.
>> I think it would be best to use 0 as initial value of ret in this case.
>> This will make all other interrupts be processed in a normal way.
>> Kalle: Should I create a new patch (initializing ret with zero)?
> Yes, please send a new patch fixing this.
> But I don't like that much with the style of initialising ret to zero,
> it tends to hide things. Instead my preference is something like below
> where the error handling is more explicit and easier to find where it's
> exactly failing. But that's just an example how I would try to solve it,
> it still lacks the handling of -ECANCEL etc.

I think I would simply replace the "while() {}" loop with "do{} while()",
as that would guarantee it to be run at least once in a way that the
compiler can see.


More information about the ath10k mailing list