Hello Joel Fernandes (Google), Commit 084e04fff160 ("rcuscale: Add laziness and kfree tests") from Oct 16, 2022 (linux-next), leads to the following Smatch static checker warning: kernel/rcu/rcuscale.c:1215 rcu_scale_init() warn: inconsistent returns 'global &fullstop_mutex'. kernel/rcu/rcuscale.c 857 kfree_scale_init(void) 858 { 859 int firsterr = 0; 860 long i; 861 unsigned long jif_start; 862 unsigned long orig_jif; 863 864 pr_alert("%s" SCALE_FLAG 865 "--- kfree_rcu_test: kfree_mult=%d kfree_by_call_rcu=%d kfree_nthreads=%d kfree_alloc_num=%d kfree_loops=%d kfree_rcu_test_double=%d kfree_rcu_test_single=%d\n", 866 scale_type, kfree_mult, kfree_by_call_rcu, kfree_nthreads, kfree_alloc_num, kfree_loops, kfree_rcu_test_double, kfree_rcu_test_single); 867 868 // Also, do a quick self-test to ensure laziness is as much as 869 // expected. 870 if (kfree_by_call_rcu && !IS_ENABLED(CONFIG_RCU_LAZY)) { 871 pr_alert("CONFIG_RCU_LAZY is disabled, falling back to kfree_rcu() for delayed RCU kfree'ing\n"); 872 kfree_by_call_rcu = 0; 873 } 874 875 if (kfree_by_call_rcu) { 876 /* do a test to check the timeout. */ 877 orig_jif = rcu_get_jiffies_lazy_flush(); 878 879 rcu_set_jiffies_lazy_flush(2 * HZ); 880 rcu_barrier(); 881 882 jif_start = jiffies; 883 jiffies_at_lazy_cb = 0; 884 call_rcu(&lazy_test1_rh, call_rcu_lazy_test1); 885 886 smp_cond_load_relaxed(&rcu_lazy_test1_cb_called, VAL == 1); 887 888 rcu_set_jiffies_lazy_flush(orig_jif); 889 890 if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) { 891 pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n"); 892 WARN_ON_ONCE(1); 893 return -1; ^^^^^^^^^^ 894 } 895 896 if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) { 897 pr_alert("ERROR: call_rcu() CBs are being too lazy!\n"); 898 WARN_ON_ONCE(1); 899 return -1; ^^^^^^^^^^ The checker is complaining that we don't call torture_init_end(). Should these do a goto unwind? Otherwise we're left holding the fullstop_mutex. 900 } 901 } [ snip ] 938 unwind: 939 torture_init_end(); 940 kfree_scale_cleanup(); 941 return firsterr; 942 } regards, dan carpenter