diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index e8843d818ec3..3bb156d149f9 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3253,11 +3253,12 @@ kvfree_rcu_queue_batch(struct kfree_rcu_cpu *krcp) } // One work is per one batch, so there are three - // "free channels", the batch can handle. It can - // be that the work is in the pending state when - // channels have been detached following by each - // other. + // "free channels", the batch can handle. Break + // the loop since it is done with this CPU thus + // queuing an RCU work is _always_ success here. queued = queue_rcu_work(system_wq, &krwp->rcu_work); + WARN_ON_ONCE(!queued); + break; } }