2018-07-17 01:47:25

by kernel test robot

[permalink] [raw]
Subject: [rcu:dev 211/211] kernel/rcu/rcutorture.c:212:5: sparse: symbol 'err_segs_recorded' was not declared. Should it be static?

tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
head: 07809ecaa895e92b00c28e8c0b7442bddb8a9324
commit: 07809ecaa895e92b00c28e8c0b7442bddb8a9324 [211/211] rcutorture: Dump reader protection sequence if failures or close calls
reproduce:
# apt-get install sparse
git checkout 07809ecaa895e92b00c28e8c0b7442bddb8a9324
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> kernel/rcu/rcutorture.c:212:5: sparse: symbol 'err_segs_recorded' was not declared. Should it be static?
>> kernel/rcu/rcutorture.c:213:20: sparse: symbol 'err_segs' was not declared. Should it be static?
>> kernel/rcu/rcutorture.c:214:5: sparse: symbol 'rt_read_nsegs' was not declared. Should it be static?
include/linux/overflow.h:242:13: sparse: undefined identifier '__builtin_mul_overflow'
include/linux/overflow.h:242:13: sparse: incorrect type in conditional
include/linux/overflow.h:242:13: got void
include/linux/overflow.h:244:13: sparse: undefined identifier '__builtin_mul_overflow'
include/linux/overflow.h:244:13: sparse: incorrect type in conditional
include/linux/overflow.h:244:13: got void
include/linux/slab.h:631:13: sparse: undefined identifier '__builtin_mul_overflow'
include/linux/slab.h:631:13: sparse: not a function <noident>
include/linux/slab.h:631:13: sparse: not a function <noident>
include/linux/slab.h:631:13: sparse: not a function <noident>
include/linux/slab.h:631:13: sparse: not a function <noident>
include/linux/overflow.h:242:13: sparse: call with no type!
include/linux/overflow.h:244:13: sparse: call with no type!
kernel/rcu/rcutorture.c:1183:9: sparse: context imbalance in 'rcutorture_one_extend' - different lock contexts for basic block
include/linux/slab.h:631:13: sparse: call with no type!

Please review and possibly fold the followup patch.

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


2018-07-17 01:46:48

by Fengguang Wu

[permalink] [raw]
Subject: [RFC PATCH rcu] rcutorture: err_segs_recorded can be static


Fixes: 07809ecaa895 ("rcutorture: Dump reader protection sequence if failures or close calls")
Signed-off-by: kbuild test robot <[email protected]>
---
rcutorture.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index ef85bde..a7a947e 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -209,9 +209,9 @@ struct rt_read_seg {
unsigned long rt_delay_us;
bool rt_preempted;
};
-int err_segs_recorded;
-struct rt_read_seg err_segs[RCUTORTURE_RDR_MAX_SEGS];
-int rt_read_nsegs;
+static int err_segs_recorded;
+static struct rt_read_seg err_segs[RCUTORTURE_RDR_MAX_SEGS];
+static int rt_read_nsegs;

static const char *rcu_torture_writer_state_getname(void)
{

2018-07-17 04:02:29

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [RFC PATCH rcu] rcutorture: err_segs_recorded can be static

On Tue, Jul 17, 2018 at 09:44:52AM +0800, kbuild test robot wrote:
>
> Fixes: 07809ecaa895 ("rcutorture: Dump reader protection sequence if failures or close calls")
> Signed-off-by: kbuild test robot <[email protected]>

Good catch! I have folded this in with attribution.

Thanx, Paul

> ---
> rcutorture.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> index ef85bde..a7a947e 100644
> --- a/kernel/rcu/rcutorture.c
> +++ b/kernel/rcu/rcutorture.c
> @@ -209,9 +209,9 @@ struct rt_read_seg {
> unsigned long rt_delay_us;
> bool rt_preempted;
> };
> -int err_segs_recorded;
> -struct rt_read_seg err_segs[RCUTORTURE_RDR_MAX_SEGS];
> -int rt_read_nsegs;
> +static int err_segs_recorded;
> +static struct rt_read_seg err_segs[RCUTORTURE_RDR_MAX_SEGS];
> +static int rt_read_nsegs;
>
> static const char *rcu_torture_writer_state_getname(void)
> {
>