Date: Thu, 11 Oct 2012 16:11:18 +0300 From: Andriy Gapon <avg@FreeBSD.org> To: Erik Cederstrand <erik@cederstrand.dk> Cc: FreeBSD Hackers <hackers@FreeBSD.org> Subject: Re: curcpu false positive? Message-ID: <5076C576.3020306@FreeBSD.org> In-Reply-To: <3A22DF7A-00BB-408C-8F76-C1E119E0E48C@cederstrand.dk> References: <3A22DF7A-00BB-408C-8F76-C1E119E0E48C@cederstrand.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5076C576.3020306>