rcu/kvfree: Invoke debug_rcu_bhead_unqueue() after checking bnode->gp_snap
authorZqiang <qiang1.zhang@intel.com>
Wed, 5 Apr 2023 02:13:59 +0000 (10:13 +0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 10 May 2023 00:26:21 +0000 (17:26 -0700)
commit1e237994d9c9a5ae47ae13030585a413a29469e6
treea36700ddd7f2c0e90c1e50ec747be84cf37384e5
parentf32276a37652a9ce05db27cdfb40ac3e3fc98f9f
rcu/kvfree: Invoke debug_rcu_bhead_unqueue() after checking bnode->gp_snap

If kvfree_rcu_bulk() sees that the required grace period has failed to
elapse, it leaks the memory because readers might still be using it.
But in that case, the debug-objects subsystem still marks the relevant
structures as having been freed, even though they are instead being
leaked.

This commit fixes this mismatch by invoking debug_rcu_bhead_unqueue()
only when we are actually going to free the objects.

Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c