aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/update.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcu/update.c')
-rw-r--r--kernel/rcu/update.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
index e1d71741958f..2658de4a5975 100644
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -463,7 +463,9 @@ static void check_holdout_task(struct task_struct *t,
463{ 463{
464 if (!ACCESS_ONCE(t->rcu_tasks_holdout) || 464 if (!ACCESS_ONCE(t->rcu_tasks_holdout) ||
465 t->rcu_tasks_nvcsw != ACCESS_ONCE(t->nvcsw) || 465 t->rcu_tasks_nvcsw != ACCESS_ONCE(t->nvcsw) ||
466 !ACCESS_ONCE(t->on_rq)) { 466 !ACCESS_ONCE(t->on_rq) ||
467 (IS_ENABLED(CONFIG_NO_HZ_FULL) &&
468 !is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
467 ACCESS_ONCE(t->rcu_tasks_holdout) = false; 469 ACCESS_ONCE(t->rcu_tasks_holdout) = false;
468 list_del_rcu(&t->rcu_tasks_holdout_list); 470 list_del_rcu(&t->rcu_tasks_holdout_list);
469 put_task_struct(t); 471 put_task_struct(t);