On Sat, Oct 26, 2024 at 11:07:27AM +0300, Dan Carpenter wrote:
> On Fri, Oct 25, 2024 at 06:04:45PM -0700, Paul E. McKenney wrote:
> > On Fri, Oct 25, 2024 at 09:58:05AM +0300, Dan Carpenter wrote:
> > > Hello Paul E. McKenney,
> > >
> > > Commit 1e07186d7377 ("refscale: Add srcu_read_lock_lite() support
> > > using "srcu-lite"") from Oct 15, 2024 (linux-next), leads to the
> > > following Smatch static checker warning:
> > >
> > > kernel/rcu/refscale.c:1151 ref_scale_init()
> > > warn: inconsistent indenting
> > >
> > > kernel/rcu/refscale.c
> > > 1141 for (i = 0; i < ARRAY_SIZE(scale_ops); i++) {
> > > 1142 cur_ops = scale_ops[i]; if (strcmp(scale_type,
> > > 1143 cur_ops->name) == 0)
> > > 1144 break;
> > > 1145 }
> > > 1146 if (i == ARRAY_SIZE(scale_ops)) {
> > > 1147 pr_alert("rcu-scale: invalid scale type:
> > > \"%s\"\n",
> > > 1148 scale_type); pr_alert("rcu-scale types:"); for
> > > (i = 0;
> > > 1149 i < ARRAY_SIZE(scale_ops); i++)
> > > 1150 pr_cont(" %s", scale_ops[i]->name);
> > > --> 1151 pr_cont("\n"); firsterr = -EINVAL; cur_ops =
> > > NULL;
> > > 1152 goto unwind;
> > >
> > > This looks like you pressed the wrong button in vim and it accidentally
> > > jumbled
> > > the code?
> > >
> > > 1153 }
> > > 1154 if (cur_ops->init)
> > > 1155 if (!cur_ops->init()) {
> > > 1156 firsterr = -EUCLEAN;
> > > 1157 goto unwind;
> > > 1158 }
> >
> > Excellent guess!!! :-(
> >
> > How about the following?
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > commit a489ef720efa78763afa39fe88d09dbb4176a47d
> > Author: Paul E. McKenney <[email protected]>
> > Date: Fri Oct 25 17:55:29 2024 -0700
> >
> > refscale: Undo j/J vim mistake in ref_scale_init()
> >
> > This commit gives each of three statements a line of their own.
> >
> > Reported-by: Dan Carpenter <[email protected]>
> > Signed-off-by: Paul E. McKenney <[email protected]>
> >
> > diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
> > index 7770e202d1ea1..7e6472a86dba8 100644
> > --- a/kernel/rcu/refscale.c
> > +++ b/kernel/rcu/refscale.c
> > @@ -1182,7 +1182,9 @@ ref_scale_init(void)
> > scale_type); pr_alert("rcu-scale types:"); for (i = 0;
> ^^^^^^^^^^^
> This for statement is messed up still. :(
And also a nearby "if" statement (finally looking at the offending
commit). With the addition of the patch shown below, are there any more?
Thanx, Paul
------------------------------------------------------------------------
diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index 7e6472a86dba8..1b47376acdc40 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -1173,14 +1173,14 @@ ref_scale_init(void)
return -EBUSY;
for (i = 0; i < ARRAY_SIZE(scale_ops); i++) {
- cur_ops = scale_ops[i]; if (strcmp(scale_type,
- cur_ops->name) == 0)
+ cur_ops = scale_ops[i];
+ if (strcmp(scale_type, cur_ops->name) == 0)
break;
}
if (i == ARRAY_SIZE(scale_ops)) {
- pr_alert("rcu-scale: invalid scale type: \"%s\"\n",
- scale_type); pr_alert("rcu-scale types:"); for (i = 0;
- i < ARRAY_SIZE(scale_ops); i++)
+ pr_alert("rcu-scale: invalid scale type: \"%s\"\n", scale_type);
+ pr_alert("rcu-scale types:");
+ for (i = 0; i < ARRAY_SIZE(scale_ops); i++)
pr_cont(" %s", scale_ops[i]->name);
pr_cont("\n");
firsterr = -EINVAL;