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 /kernel | |
| 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>
Diffstat (limited to 'kernel')
| -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; |
