From af0d81abaf69c12ba0d8e010b9c4ef8bc8882e22 Mon Sep 17 00:00:00 2001 From: Zheng Zucheng Date: Mon, 29 Nov 2021 15:12:40 +0800 Subject: [PATCH] sched: Avoid sched entity null pointer panic hulk inclusion category: bugfix bugzilla: 51828, https://gitee.com/openeuler/kernel/issues/I4K96G CVE: NA -------------------------------- In some corner case, when we throttle the last group sched entity in rq, kernel will be panic if there is no residual sched entities in rq. So we add a protection to prevent this case. Signed-off-by: Zheng Zucheng Reviewed-by: Chen Hui Reviewed-by: Xiu Jianfeng Signed-off-by: Yang Yingliang --- kernel/sched/fair.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index d6b16c99c865..229ae0adfcf3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7050,7 +7050,11 @@ pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf cfs_rq->h_nr_running == cfs_rq->idle_h_nr_running)) { throttle_qos_cfs_rq(cfs_rq); cfs_rq = &rq->cfs; - WARN_ON(cfs_rq->nr_running == 0); + WARN(cfs_rq->nr_running == 0, + "rq->nr_running=%u, cfs_rq->idle_h_nr_running=%u\n", + rq->nr_running, cfs_rq->idle_h_nr_running); + if (unlikely(!cfs_rq->nr_running)) + return NULL; } #endif } while (cfs_rq); -- GitLab