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