On Wed, Apr 23, 2025 at 10:19:56AM +0300, Dan Carpenter wrote:
> On Wed, Apr 23, 2025 at 10:17:16AM +0300, Dan Carpenter wrote:
> > Hello Joel Fernandes,
> > 
> > Commit bd57ec707441 ("rcutorture: Perform more frequent testing of
> > ->gpwrap") from Feb 16, 2025 (linux-next), leads to the following
> > Smatch static checker warning:
> > 
> >     kernel/rcu/rcutorture.c:4586 rcu_torture_init()
> >     warn: missing error code 'firsterr'
> > 
> > kernel/rcu/rcutorture.c
> >     4576                 if (torture_init_error(firsterr))
> >     4577                         goto unwind;
> >     4578         }
> >     4579         if (object_debug)
> >     4580                 rcu_test_debug_objects();
> >     4581         torture_init_end();
>                    ^^^^^^^^^^^^^^^^^^^
> Also:
> 
> kernel/rcu/rcutorture.c:4591 rcu_torture_init() warn: double unlock 'global 
> &fullstop_mutex' (orig line 4581)

You lost me on this one.  This mutex is acquired by the earlier call to
torture_init_begin(), but only if that function returns true.  If that
function returns false, yes, it releases fullstop_mutex, but in that case
rcu_torture_init() returns immediately, thus avoiding this invocation
of torture_init_end().

Or am I missing something subtle here?  Or missing something obvious,
for that matter!  ;-)

                                                        Thanx, Paul

> >     4582         if (cur_ops->gp_slow_register && 
> > !WARN_ON_ONCE(!cur_ops->gp_slow_unregister))
> >     4583                 cur_ops->gp_slow_register(&rcu_fwd_cb_nodelay);
> >     4584 
> >     4585         if (cur_ops->set_gpwrap_lag && rcu_gpwrap_lag_init())
> > --> 4586                 goto unwind;
> > 
> > set an error code?
> > 
> >     4587 
> >     4588         return 0;
> >     4589 
> >     4590 unwind:
> >     4591         torture_init_end();
>                    ^^^^^^^^^^^^^^^^^^^
> 
> regards,
> dan carpenter
> 
> >     4592         rcu_torture_cleanup();
> >     4593         if (shutdown_secs) {
> >     4594                 WARN_ON(!IS_MODULE(CONFIG_RCU_TORTURE_TEST));
> >     4595                 kernel_power_off();
> >     4596         }
> >     4597         return firsterr;
> >     4598 }
> > 
> > regards,
> > dan carpenter
> 

Reply via email to