Skip to content
  • Tejun Heo's avatar
    percpu: fix spurious sparse warnings from DEFINE_PER_CPU() · b1a0fbfd
    Tejun Heo authored
    
    
    When CONFIG_DEBUG_FORCE_WEAK_PER_CPU or CONFIG_ARCH_NEEDS_WEAK_PER_CPU
    is set, DEFINE_PER_CPU() explodes into cryptic series of definitions
    to still allow using "static" for percpu variables while keeping all
    per-cpu symbols unique in the kernel image which is required for weak
    symbols.  This ultimately converts the actual symbol to global whether
    DEFINE_PER_CPU() is prefixed with static or not.
    
    Unfortunately, the macro forgot to add explicit extern declartion of
    the actual symbol ending up defining global symbol without preceding
    declaration for static definitions which naturally don't have matching
    DECLARE_PER_CPU().  The only ill effect is triggering of the following
    warnings.
    
     fs/inode.c:74:8: warning: symbol 'nr_inodes' was not declared. Should it be static?
     fs/inode.c:75:8: warning: symbol 'nr_unused' was not declared. Should it be static?
    
    Fix it by adding extern declaration in the DEFINE_PER_CPU() macro.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarWanlong Gao <gaowanlong@cn.fujitsu.com>
    Tested-by: default avatarWanlong Gao <gaowanlong@cn.fujitsu.com>
    b1a0fbfd