From: Tejun Heo <tj@kernel.org>
To: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Cc: josh@kernel.org, linux-sparse@vger.kernel.org,
Wu Fengguang <fengguang.wu@intel.com>,
kbuild-all@01.org, Rusty Russell <rusty@rustcorp.com.au>,
Christoph Lameter <cl@linux-foundation.org>
Subject: Re: [BUG report]sparse warnings on DEFINE_PER_CPU() symbols non-static
Date: Tue, 3 Dec 2013 17:25:43 -0500 [thread overview]
Message-ID: <20131203222543.GQ8277@htj.dyndns.org> (raw)
In-Reply-To: <5294175F.2080407@cn.fujitsu.com>
Hello,
On Tue, Nov 26, 2013 at 11:37:03AM +0800, Wanlong Gao wrote:
> If kernel config CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y, then the sparse will report non-static
> warnings like following:
>
> > /git/linux/fs/inode.c:74:8: warning: symbol 'nr_inodes' was not declared. Should it be static?
> > /git/linux/fs/inode.c:75:8: warning: symbol 'nr_unused' was not declared. Should it be static?
> >
> > $ vi +74 fs/inode.c
> > 73
> > 74 static DEFINE_PER_CPU(unsigned long, nr_inodes);
> > 75 static DEFINE_PER_CPU(unsigned long, nr_unused);
> > 76
Hmmm, so, if FORCE_WEAK_PER_CPU is set or the arch needs WEAK_PER_CPU,
DEFINE_PER_CPU() explodes into mind-bending series of definitions to
ensure that the symbol is globally unique to avoid breaking weak decl
requirements on a few archs. In the process static is dropped from
the actual declaration and it's apparently missing extern decl in
front of it.
Does the following patch make it go away?
Thanks.
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
index 57e890a..8c490cc 100644
--- a/include/linux/percpu-defs.h
+++ b/include/linux/percpu-defs.h
@@ -69,6 +69,7 @@
__PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \
extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
__PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
+ extern __typeof__(type) name; \
__PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \
__typeof__(type) name
#else
next prev parent reply other threads:[~2013-12-03 22:25 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-26 3:37 [BUG report]sparse warnings on DEFINE_PER_CPU() symbols non-static Wanlong Gao
2013-12-03 22:25 ` Tejun Heo [this message]
2013-12-03 23:43 ` Josh Triplett
2013-12-04 15:10 ` Tejun Heo
2013-12-04 3:26 ` Wanlong Gao
2013-12-04 15:12 ` Tejun Heo
2013-12-05 0:18 ` Wanlong Gao
2013-12-05 18:01 ` [PATCH] percpu: fix spurious sparse warnings from DEFINE_PER_CPU() Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131203222543.GQ8277@htj.dyndns.org \
--to=tj@kernel.org \
--cc=cl@linux-foundation.org \
--cc=fengguang.wu@intel.com \
--cc=gaowanlong@cn.fujitsu.com \
--cc=josh@kernel.org \
--cc=kbuild-all@01.org \
--cc=linux-sparse@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).