when the rcutorture.torture_type value is 'rcu', this is correct for invoke rcu_barrier() to wait all in-flight call_rcu() callbacks (rcu_torture_fwd_cb_cr()) complete in rcutorture_oom_notify(). but when the rcutorture.torture_type value is 'tasks-tracing', invoke rcu_barrier() won't wait all in-flight call_rcu_tasks_trace() callbacks complete, the rcu_barrier_tasks_trace() should be invoked. This commit fix it by using barrier operation corresponding to rcutorture.torture_type to wait all in-flight rcu_torture_fwd_cb_cr() complete. Signed-off-by: Zqiang <qiang1.zhang@xxxxxxxxx> --- kernel/rcu/rcutorture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 7f13f2e5ed62..7e7d54841613 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2638,12 +2638,12 @@ static int rcutorture_oom_notify(struct notifier_block *self, for (i = 0; i < fwd_progress; i++) ncbs += rcu_torture_fwd_prog_cbfree(&rfp[i]); pr_info("%s: Freed %lu RCU callbacks.\n", __func__, ncbs); - rcu_barrier(); + cur_ops->cb_barrier(); ncbs = 0; for (i = 0; i < fwd_progress; i++) ncbs += rcu_torture_fwd_prog_cbfree(&rfp[i]); pr_info("%s: Freed %lu RCU callbacks.\n", __func__, ncbs); - rcu_barrier(); + cur_ops->cb_barrier(); ncbs = 0; for (i = 0; i < fwd_progress; i++) ncbs += rcu_torture_fwd_prog_cbfree(&rfp[i]); -- 2.25.1