Message ID | 6297051.TAxtzW5OIB@wuerfel (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Herbert Xu |
Headers | show |
On Tuesday 24 May 2016 02:05 AM, Arnd Bergmann wrote: > On Monday, May 23, 2016 6:14:08 PM CEST Sudip Mukherjee wrote: >> We have been getting build warning about: >> drivers/char/hw_random/stm32-rng.c: In function 'stm32_rng_read': >> drivers/char/hw_random/stm32-rng.c:82:19: warning: 'sr' may be used >> uninitialized in this function >> >> On checking the code it turns out that sr can never be used >> uninitialized as sr is getting initialized in the while loop and while >> loop will always execute as the minimum value of max can be 32. >> So just initialize sr to 0 while declaring it to silence the compiler. >> >> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> >> --- > > I notice that you are using a really old compiler. While this warning > seems to be valid in the sense that the compiler should figure out that > the variable might be used uninitialized, please update your toolchain > before reporting other such problems, as gcc-4.6 had a lot more false > positives that newer ones (5.x or 6.x) have. yes, i need to upgrade gcc in my travis bot. But in my local system I am having gcc-4.8.4 and there also I am having this error and i am sure 4.8.4 is still being used by many people. Regards Sudip -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, May 25, 2016 7:35:17 AM CEST Sudip Mukherjee wrote: > On Tuesday 24 May 2016 02:05 AM, Arnd Bergmann wrote: > > On Monday, May 23, 2016 6:14:08 PM CEST Sudip Mukherjee wrote: > >> We have been getting build warning about: > >> drivers/char/hw_random/stm32-rng.c: In function 'stm32_rng_read': > >> drivers/char/hw_random/stm32-rng.c:82:19: warning: 'sr' may be used > >> uninitialized in this function > >> > >> On checking the code it turns out that sr can never be used > >> uninitialized as sr is getting initialized in the while loop and while > >> loop will always execute as the minimum value of max can be 32. > >> So just initialize sr to 0 while declaring it to silence the compiler. > >> > >> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> > >> --- > > > > I notice that you are using a really old compiler. While this warning > > seems to be valid in the sense that the compiler should figure out that > > the variable might be used uninitialized, please update your toolchain > > before reporting other such problems, as gcc-4.6 had a lot more false > > positives that newer ones (5.x or 6.x) have. > > yes, i need to upgrade gcc in my travis bot. But in my local system I am > having gcc-4.8.4 and there also I am having this error and i am sure > 4.8.4 is still being used by many people. Right, the change from gcc-4.8 to 4.9 is what drastically changed hte maybe-uninitialized warnings, introducing a number of additional warnings (many of them correct) but removing many others (mostly false positives). I tend to care only about the ones in 4.9+ for this reason. I haven't run statistics on this in a while, but I guess we could consider turning off this warning for 4.8 and earlier (though IIRC the switch to turn it off only appeared in 4.9). BTW, regarding your build infrastructure, I'd also recommend building with 'make -s' to make the output more compact. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 25 May 2016 03:36 PM, Arnd Bergmann wrote: > On Wednesday, May 25, 2016 7:35:17 AM CEST Sudip Mukherjee wrote: >> On Tuesday 24 May 2016 02:05 AM, Arnd Bergmann wrote: >>> On Monday, May 23, 2016 6:14:08 PM CEST Sudip Mukherjee wrote: >>>> We have been getting build warning about: >>>> drivers/char/hw_random/stm32-rng.c: In function 'stm32_rng_read': >>>> drivers/char/hw_random/stm32-rng.c:82:19: warning: 'sr' may be used >>>> uninitialized in this function >>>> >>>> On checking the code it turns out that sr can never be used >>>> uninitialized as sr is getting initialized in the while loop and while >>>> loop will always execute as the minimum value of max can be 32. >>>> So just initialize sr to 0 while declaring it to silence the compiler. >>>> >>>> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> >>>> --- >>> >snip> > > BTW, regarding your build infrastructure, I'd also recommend building > with 'make -s' to make the output more compact. travis is having a timeout and if there is no output from the build within a time limit then it will cancel the build. I can use the option if i can increase the timeout limit. I will have a look at the options. Thanks for the idea. Regards Sudip -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/char/hw_random/stm32-rng.c b/drivers/char/hw_random/stm32-rng.c index 92a810648bd0..5c836b0afa40 100644 --- a/drivers/char/hw_random/stm32-rng.c +++ b/drivers/char/hw_random/stm32-rng.c @@ -79,7 +79,7 @@ static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait) max -= sizeof(u32); } - if (WARN_ONCE(sr & (RNG_SR_SEIS | RNG_SR_CEIS), + if (WARN_ONCE(retval > 0 && (sr & (RNG_SR_SEIS | RNG_SR_CEIS)), "bad RNG status - %x\n", sr)) writel_relaxed(0, priv->base + RNG_SR);