On 01/06/2014 12:43 PM, Marc Glisse wrote: > On Mon, 6 Jan 2014, Nicholas Mc Guire wrote: > >> during Linux kernel build I got the following build warning >> >> kernel/trace/trace.c: In function 'tracing_mark_write': >> kernel/trace/trace.c:3818: warning: 'page2' may be used uninitialized in this function >> >> after looking at this function I was not able to figure out how >> this uninitialized usage could happen - all access to page2 >> is "protected" by an "if (nr_pages == 2)" so no uninitialized >> access should be possible. > > Note the word "may": gcc isn't able (at least at this optimization level) > to prove that page2 is always initialized before use, so it warns. > >> is there some way to make gcc happy here ? > > Initialize page2 to 0 where you declare it? <aside> I'm very nervous about advice like this in general: see https://www.schneier.com/blog/archives/2008/05/random_number_b.html http://anonscm.debian.org/viewvc/pkg-openssl/openssl/trunk/rand/md_rand.c?p2=%2Fopenssl%2Ftrunk%2Frand%2Fmd_rand.c&p1=openssl%2Ftrunk%2Frand%2Fmd_rand.c&r1=141&r2=140&view=diff&pathrev=141 This happened because the maintainer saw a warning about uninitialized data and "fixed" the code. But, in this specific case, I have no such worries. </aside> Andrew.