diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index a78ecb79f..64f252452 100755 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -142,14 +142,17 @@ static inline u64 scale_slice(u64 delta, struct sched_entity *se) { static inline struct task_struct *task_of(struct sched_entity *se); static void update_burst_score(struct sched_entity *se) { + struct task_struct *p; + u8 prio, prev_prio, new_prio; + if (!entity_is_task(se)) return; - struct task_struct *p = task_of(se); - u8 prio = p->static_prio - MAX_RT_PRIO; - u8 prev_prio = min(39, prio + se->burst_score); + p = task_of(se); + prio = p->static_prio - MAX_RT_PRIO; + prev_prio = min(39, prio + se->burst_score); se->burst_score = se->burst_penalty >> 2; - u8 new_prio = min(39, prio + se->burst_score); + new_prio = min(39, prio + se->burst_score); if (new_prio != prev_prio) reweight_task(p, new_prio); }