• Paul E. McKenney's avatar
    rcu-tasks: Don't remove tasks with pending IPIs from holdout list · f5dbc594
    Paul E. McKenney authored
    
    
    Currently, the check_all_holdout_tasks_trace() function removes all tasks
    marked with ->trc_reader_checked from the holdout list, including those
    with IPIs pending.  This means that the IPI handler might arrive at
    a task that has already been removed from the list, which is at best
    an accident waiting to happen.
    
    This commit therefore avoids removing tasks with IPIs pending from
    the holdout list.  This in turn means that the "if" condition in the
    for_each_online_cpu() loop in rcu_tasks_trace_postgp() should always
    evaluate to false, so a WARN_ON_ONCE() is added to check that.
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    f5dbc594
tasks.h 47.3 KB