curcpu false positive?

Andriy Gapon avg at FreeBSD.org
Thu Oct 11 13:11:23 UTC 2012


on 11/10/2012 16:06 Erik Cederstrand said the following:
> Hello,
> 
> I'm looking at some Clang Static Analyzer reports in the kernel, and a lot of them point back to a null pointer dereference in __pcpu_type (sys/amd64/include/pcpu.h:102) which is defined as:
> 
> 102	 /*
> 103	 * Evaluates to the type of the per-cpu variable name.
> 104	 */
> 105	#define __pcpu_type(name)                                               \
> 106	        __typeof(((struct pcpu *)0)->name)
> 
> 
> Which indeed looks like a NULL pointer dereference. Looking at the latest commit message there, I'm sure the code is correct, but I'm unsure why the null pointer is OK. I'd appreciate an explanation :-)

Read about __typeof [1].
It's evaluated at compile time, so actual value of an expression does not matter
at all.

[1] http://gcc.gnu.org/onlinedocs/gcc/Typeof.html
-- 
Andriy Gapon


More information about the freebsd-hackers mailing list