diff options
author | Christian Engelmayer <christian.engelmayer@frequentis.com> | 2009-06-16 04:35:12 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-17 12:37:54 -0400 |
commit | 3104bf03a923c72043a9c5009d9cd56724304916 (patch) | |
tree | c65dbf477871ea843241055cda84b2448aee0c71 | |
parent | 348ec61e6268c3cd7ee75cfa50e408184a941506 (diff) |
sched: Fix out of scope variable access in sched_slice()
Access to local variable lw is aliased by usage of pointer load.
Access to pointer load in calc_delta_mine() happens when lw is
already out of scope.
[ Reported by static code analysis. ]
Signed-off-by: Christian Engelmayer <christian.engelmayer@frequentis.com>
LKML-Reference: <20090616103512.0c846e51@frequentis.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | kernel/sched_fair.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 5f9650e8fe75..ba7fd6e9556f 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -430,12 +430,13 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
430 | 430 | ||
431 | for_each_sched_entity(se) { | 431 | for_each_sched_entity(se) { |
432 | struct load_weight *load; | 432 | struct load_weight *load; |
433 | struct load_weight lw; | ||
433 | 434 | ||
434 | cfs_rq = cfs_rq_of(se); | 435 | cfs_rq = cfs_rq_of(se); |
435 | load = &cfs_rq->load; | 436 | load = &cfs_rq->load; |
436 | 437 | ||
437 | if (unlikely(!se->on_rq)) { | 438 | if (unlikely(!se->on_rq)) { |
438 | struct load_weight lw = cfs_rq->load; | 439 | lw = cfs_rq->load; |
439 | 440 | ||
440 | update_load_add(&lw, se->load.weight); | 441 | update_load_add(&lw, se->load.weight); |
441 | load = &lw; | 442 | load = &lw; |