OSDN Git Service

sched: walt: fix out-of-bounds access
authorJohn Dias <joaodias@google.com>
Fri, 22 Jun 2018 19:27:38 +0000 (12:27 -0700)
committerPavankumar Kondeti <pkondeti@codeaurora.org>
Wed, 8 Aug 2018 03:39:01 +0000 (09:09 +0530)
A computation in update_top_tasks() is indexing
off the end of a top_tasks array. There's code
to limit the index in the computation, but it's
insufficient.

Bug: 110529282
Change-Id: Idb5ff5e5800c014394bcb04638844bf1e057a40c
Signed-off-by: John Dias <joaodias@google.com>
[pkondeti@codeaurora.org: Backported to 4.4 for HMP scheduler]
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
kernel/sched/hmp.c

index d9f0669..ddcf7cf 100644 (file)
@@ -2081,14 +2081,11 @@ static u32  top_task_load(struct rq *rq)
        }
 }
 
-static int load_to_index(u32 load)
+static u32 load_to_index(u32 load)
 {
-       if (load < sched_load_granule)
-               return 0;
-       else if (load >= sched_ravg_window)
-               return NUM_LOAD_INDICES - 1;
-       else
-               return load / sched_load_granule;
+       u32 index = load / sched_load_granule;
+
+       return min(index, (u32)(NUM_LOAD_INDICES - 1));
 }
 
 static void update_top_tasks(struct task_struct *p, struct rq *rq,