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 >