On Mon, 24 Jan 2011, Tony Olech wrote: > On Mon, 2011-01-24 at 10:55 -0500, Nicolas Pitre wrote: > > On Mon, 24 Jan 2011, Tony Olech wrote: > > > > > On Mon, 2011-01-24 at 09:43 -0500, Nicolas Pitre wrote: > > > > Uninitialized global scope variables are by definition assigned to the > > > > .bss section. The .bss section is dynamically allocated at run time > > > > rather than being stored in the compiled binary, and also cleared to > > > > zero at run time. So the preference is for zero-initialized global > > > > variables not to be initialized at all because 1) they are implicitly > > > > initialized to zero anyway, and 2) that makes the resulting binaries > > > > smaller. > > > > So this is not about fixing a bug, but rather to conform to the adopted > > > > policy for kernel code. > > > > Nicolas > > > Thanks for the reply. I had not realized that saving 20 bytes on the > > > binary size was so important. > > With the size of the kernel they add up. > > > How then can one do static code analysis > > > to determine which uninitialized variables are uninitialized as > > > a result of a bug? > > A good static code analysis tool should know already that uninitialized > > global variables are implicitly initialized to zero. This is not the > > case for local variables of course > > Nicolas > Thanks for the reply. > I had assumed that for a module the global initialized variables were > loaded at module load. That then is a problem given that new devices > (and drivers) are appearing quite rapidly. I therefore do not understand > how the global initialized variables from an externally compiled kernel > module get added into the kernel image - does "depmod" do that? Sorry... I don't follow you here. > A good static code analysis tool surely can only show a list of > uninitialized static global variables leaving it for the user to > trawl through and decide which are OK and which are not Why? Uninitialized static global variables should be assumed to be initialized to zero. This is part of the C standard. Nothing wrong here. And the kernel coding style simply pushes it further by requesting it. Nicolas -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html