• L
    sched: Fix an RCU warning in print_task() · b629317e
    Li Zefan 提交于
    With CONFIG_PROVE_RCU=y, a warning can be triggered:
    
      $ cat /proc/sched_debug
    
    ...
    kernel/cgroup.c:1649 invoked rcu_dereference_check() without protection!
    ...
    
    Both cgroup_path() and task_group() should be called with either
    rcu_read_lock or cgroup_mutex held.
    
    The rcu_dereference_check() does include cgroup_lock_is_held(), so we
    know that this lock is not held.  Therefore, in a CONFIG_PREEMPT kernel,
    to say nothing of a CONFIG_PREEMPT_RT kernel, the original code could
    have ended up copying a string out of the freelist.
    
    This patch inserts RCU read-side primitives needed to prevent this
    scenario.
    Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    b629317e
sched_debug.c 11.8 KB