RE: improper sparse warnings in linux kernel build?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday, September 09, 2011 10:27 PM, Dan Carpenter wrote:
> On Fri, Sep 09, 2011 at 03:41:28PM -0700, H Hartley Sweeten wrote:
>> I'm not really sure what the DEFINE_PER_CPU macro expands to so I'm not
>> sure if the 'static' in front is actually getting used or if sparse is just
>> confused.
>> 
>> Is this an actual problem in the linux kernel or is sparse just getting
>> tripped up by the DEFINE_PER_CPU macro?
>> 
>
> I don't have a kernel git archive handy, but probably sparse is
> correct.  Do a "make arch/x86/kernel/cpu/mcheck/mce_intel.i" and run
> sparse on the .i file to find the line number that complains.

Dan,

The DEFINE_PER_CPU line in that file gets expanded from:

static DEFINE_PER_CPU(mce_banks_t, mce_banks_owned);

To (line breaks added for readability):

static __attribute__((section(".discard"), unused)) char __pcpu_scope_mce_banks_owned;
extern __attribute__((section(".discard"), unused)) char __pcpu_unique_mce_banks_owned;
__attribute__((section(".discard"), unused)) char __pcpu_unique_mce_banks_owned;
__attribute__((section(".data..percpu" ""))) __attribute__((weak)) __typeof__(mce_banks_t) mce_banks_owned;


It looks like the static tag is getting correctly applied to the first variable,
__pcpu_scope_mce_banks_owned.  The second one, __pcpu_unique_mce_banks_owned, is
getting tagged extern by the macro so the next __pcpu_unique_mce_banks_owned is ok.
The last variable, mce_banks_owned, seems to be the problem.

mce_banks_owned appears to be the only variable actually used in the file. I'm not
sure what the other three are used for.

I think the only way to fix this is by creating a new DEFINE_PER_CPU macro 
(DEFINE_PER_CPU_STATIC or DEFINE_STATIC_PER_CPU?) that automatically adds the static
tags correctly.

Regards,
Hartley--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux