Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 738a2ccb authored by Con Kolivas's avatar Con Kolivas Committed by Linus Torvalds
Browse files

[PATCH] sched: change prio bias only if queued



prio_bias should only be adjusted in set_user_nice if p is actually currently
queued.

Signed-off-by: default avatarCon Kolivas <kernel@kolivas.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b910472d
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -3508,25 +3508,24 @@ void set_user_nice(task_t *p, long nice)
	 * not SCHED_NORMAL:
	 */
	if (rt_task(p)) {
		dec_prio_bias(rq, p->static_prio);
		p->static_prio = NICE_TO_PRIO(nice);
		inc_prio_bias(rq, p->static_prio);
		goto out_unlock;
	}
	array = p->array;
	if (array)
	if (array) {
		dequeue_task(p, array);
		dec_prio_bias(rq, p->static_prio);
	}

	old_prio = p->prio;
	new_prio = NICE_TO_PRIO(nice);
	delta = new_prio - old_prio;
	dec_prio_bias(rq, p->static_prio);
	p->static_prio = NICE_TO_PRIO(nice);
	inc_prio_bias(rq, p->static_prio);
	p->prio += delta;

	if (array) {
		enqueue_task(p, array);
		inc_prio_bias(rq, p->static_prio);
		/*
		 * If the task increased its priority or is running and
		 * lowered its priority, then reschedule its CPU: