The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] sched: fix NULL pointer issue in pick_next_entity()
@ 2017-08-01 10:01 Yafang Shao
  2017-08-01  8:38 ` Peter Zijlstra
  0 siblings, 1 reply; 6+ messages in thread
From: Yafang Shao @ 2017-08-01 10:01 UTC (permalink / raw)
  To: mingo, peterz; +Cc: linux-kernel, laoar.shao

When we select CFQ as the scheduler, in function pick_next_task_fair
it will pass NULL as the 2nd argument to pick_next_entity:
    pick_next_entity(cfs_rq, NULL);

And once __pick_first_entity() is called, it could return NULL as well.

So in function pick_next_entity(), the local variable 'left' and 'curr'
could both be NULL, then this will cause NULL pointer issue.

In order to fix this issue, we just need return NULL under the condition
that both 'left' and 'curr' are NULL, meaning that no entity available.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 kernel/sched/fair.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index c95880e..e64c359 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3903,6 +3903,8 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
 	struct sched_entity *left = __pick_first_entity(cfs_rq);
 	struct sched_entity *se;
 
+	if (!left && !curr)
+		return NULL;
 	/*
 	 * If curr is set we have to see if its left of the leftmost entity
 	 * still in the tree, provided there was anything in the tree at all.
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-08-01 10:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-01 10:01 [PATCH] sched: fix NULL pointer issue in pick_next_entity() Yafang Shao
2017-08-01  8:38 ` Peter Zijlstra
2017-08-01  8:58   ` Yafang Shao
     [not found]   ` <CALOAHbCop71efobq4y2FD_=f4cXd-a5G9hwKgC8occkN0YTVBw@mail.gmail.com>
2017-08-01  9:12     ` Peter Zijlstra
2017-08-01  9:20       ` Yafang Shao
2017-08-01 10:23         ` Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox