Message ID | 20230405021359.606321-1-qiang1.zhang@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 1a6a8154be50085ce24c95d91025d8589209621c |
Headers | show |
Series | rcu/kvfree: Invoke debug_rcu_bhead_unqueue() with check bnode->snap is done | expand |
On Wed, Apr 05, 2023 at 10:13:59AM +0800, Zqiang wrote: > This commit make debug_rcu_bhead_unqueue() be invoked with check > the bnode structure's->snap is done in kvfree_rcu_bulk(). > > Signed-off-by: Zqiang <qiang1.zhang@intel.com> > --- > kernel/rcu/tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 3461fc2640b9..17b5d115aec1 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -2943,8 +2943,8 @@ kvfree_rcu_bulk(struct kfree_rcu_cpu *krcp, > unsigned long flags; > int i; > > - debug_rcu_bhead_unqueue(bnode); > if (!WARN_ON_ONCE(!poll_state_synchronize_rcu_full(&bnode->gp_snap))) { > + debug_rcu_bhead_unqueue(bnode); > rcu_lock_acquire(&rcu_callback_map); > if (idx == 0) { // kmalloc() / kfree(). > trace_rcu_invoke_kfree_bulk_callback( > -- > 2.32.0 > Since we leak, looks like correct to me: Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> -- Uladzislau Rezki
On Wed, Apr 05, 2023 at 04:45:27PM +0200, Uladzislau Rezki wrote: > On Wed, Apr 05, 2023 at 10:13:59AM +0800, Zqiang wrote: > > This commit make debug_rcu_bhead_unqueue() be invoked with check > > the bnode structure's->snap is done in kvfree_rcu_bulk(). > > > > Signed-off-by: Zqiang <qiang1.zhang@intel.com> > > --- > > kernel/rcu/tree.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > index 3461fc2640b9..17b5d115aec1 100644 > > --- a/kernel/rcu/tree.c > > +++ b/kernel/rcu/tree.c > > @@ -2943,8 +2943,8 @@ kvfree_rcu_bulk(struct kfree_rcu_cpu *krcp, > > unsigned long flags; > > int i; > > > > - debug_rcu_bhead_unqueue(bnode); > > if (!WARN_ON_ONCE(!poll_state_synchronize_rcu_full(&bnode->gp_snap))) { > > + debug_rcu_bhead_unqueue(bnode); > > rcu_lock_acquire(&rcu_callback_map); > > if (idx == 0) { // kmalloc() / kfree(). > > trace_rcu_invoke_kfree_bulk_callback( > > -- > > 2.32.0 > > > Since we leak, looks like correct to me: > > Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Queued for v6.5, thank you both! Thanx, Paul
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 3461fc2640b9..17b5d115aec1 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2943,8 +2943,8 @@ kvfree_rcu_bulk(struct kfree_rcu_cpu *krcp, unsigned long flags; int i; - debug_rcu_bhead_unqueue(bnode); if (!WARN_ON_ONCE(!poll_state_synchronize_rcu_full(&bnode->gp_snap))) { + debug_rcu_bhead_unqueue(bnode); rcu_lock_acquire(&rcu_callback_map); if (idx == 0) { // kmalloc() / kfree(). trace_rcu_invoke_kfree_bulk_callback(
This commit make debug_rcu_bhead_unqueue() be invoked with check the bnode structure's->snap is done in kvfree_rcu_bulk(). Signed-off-by: Zqiang <qiang1.zhang@intel.com> --- kernel/rcu/tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)