-developed-by: Cruz Zhao Signed-off-by: Cruz Zhao Signed-off-by: Peng Wang --- kernel/sched/fair.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index cee1793e8277..32b466605925 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -13418,6 +13418,8 @@ void unregister_fair_sched_group(struct task_group *tg) struct rq *rq = cpu_rq(cpu); if (se) { + struct cfs_rq *parent_cfs_rq = cfs_rq_of(se); + if (se->sched_delayed) { guard(rq_lock_irqsave)(rq); if (se->sched_delayed) { @@ -13427,6 +13429,13 @@ void unregister_fair_sched_group(struct task_group *tg) list_del_leaf_cfs_rq(cfs_rq); } remove_entity_load_avg(se); + + /* + * Clear parent's h_load_next if it points to the + * sched_entity being freed to avoid stale pointer. + */ + if (READ_ONCE(parent_cfs_rq->h_load_next) == se) + WRITE_ONCE(parent_cfs_rq->h_load_next, NULL); } /* -- 2.27.0[PATCH v3] sched/fair: Clear ->h_load_next when unregistering cgroupPeng Wang undefinedvincent.guittot@linaro.org undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined