Message ID | 20241113110009.65256-1-urezki@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 9a1012e3e086f1f8d0d1492eaedb8240a44e2959 |
Headers | show |
Series | [v2,1/2] rcuscale: Do a proper cleanup if kfree_scale_init() fails | expand |
On 11/13/2024 4:30 PM, Uladzislau Rezki (Sony) wrote: > A static analyzer for C, Smatch, reports and triggers below > warnings: > > kernel/rcu/rcuscale.c:1215 rcu_scale_init() > warn: inconsistent returns 'global &fullstop_mutex'. > > The checker complains about, we do not unlock the "fullstop_mutex" > mutex, in case of hitting below error path: > > <snip> > ... > if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) { > pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n"); > WARN_ON_ONCE(1); > return -1; > ^^^^^^^^^^ > ... > <snip> > > it happens because "-1" is returned right away instead of > doing a proper unwinding. > > Fix it by jumping to "unwind" label instead of returning -1. > > Reviewed-by: Paul E. McKenney <paulmck@kernel.org> > Reported-by: Dan Carpenter <dan.carpenter@linaro.org> > Closes: https://lore.kernel.org/rcu/ZxfTrHuEGtgnOYWp@pc636/T/ > Fixes: 084e04fff160 ("rcuscale: Add laziness and kfree tests") > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> > --- Reviewed-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com> - Neeraj
diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c index 6d37596deb1f..d360fa44b234 100644 --- a/kernel/rcu/rcuscale.c +++ b/kernel/rcu/rcuscale.c @@ -890,13 +890,15 @@ kfree_scale_init(void) if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) { pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n"); WARN_ON_ONCE(1); - return -1; + firsterr = -1; + goto unwind; } if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) { pr_alert("ERROR: call_rcu() CBs are being too lazy!\n"); WARN_ON_ONCE(1); - return -1; + firsterr = -1; + goto unwind; } }