[RFC][PATCH 2/6] task's cpu information needs to be always correct

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Srivatsa Vaddagiri
Date: Monday, June 11, 2007 - 8:52 am

We rely very much on task_cpu(p) to be correct at all times, so that we
can correctly find the runqueue from which the task has to be removed or
added to.

There is however one place in the scheduler where this assumption of
task_cpu(p) being correct is broken. This patch fixes that piece of
code.

(Thanks to Balbir Singh for pointing this out to me)

Signed-off-by : Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>

---
 kernel/sched.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

Index: current/kernel/sched.c
===================================================================
--- current.orig/kernel/sched.c	2007-06-09 15:07:17.000000000 +0530
+++ current/kernel/sched.c	2007-06-09 15:07:32.000000000 +0530
@@ -4624,7 +4624,7 @@
 static int __migrate_task(struct task_struct *p, int src_cpu, int dest_cpu)
 {
 	struct rq *rq_dest, *rq_src;
-	int ret = 0;
+	int ret = 0, on_rq;
 
 	if (unlikely(cpu_is_offline(dest_cpu)))
 		return ret;
@@ -4640,9 +4640,11 @@
 	if (!cpu_isset(dest_cpu, p->cpus_allowed))
 		goto out;
 
-	set_task_cpu(p, dest_cpu);
-	if (p->se.on_rq) {
+	on_rq = p->se.on_rq;
+	if (on_rq)
 		deactivate_task(rq_src, p, 0);
+	set_task_cpu(p, dest_cpu);
+	if (on_rq) {
 		activate_task(rq_dest, p, 0);
 		check_preempt_curr(rq_dest, p);
 	}
-- 
Regards,
vatsa
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC][PATCH 0/6] Add group fairness to CFS - v1, Srivatsa Vaddagiri, (Mon Jun 11, 8:47 am)
[RFC][PATCH 1/6] Introduce struct sched_entity and struct lrq, Srivatsa Vaddagiri, (Mon Jun 11, 8:50 am)
[RFC][PATCH 2/6] task's cpu information needs to be always ..., Srivatsa Vaddagiri, (Mon Jun 11, 8:52 am)
[RFC][PATCH 3/6] core changes in CFS, Srivatsa Vaddagiri, (Mon Jun 11, 8:53 am)
[RFC][PATCH 4/6] Fix (bad?) interactions between SCHED_RT ..., Srivatsa Vaddagiri, (Mon Jun 11, 8:55 am)
[RFC][PATCH 5/6] core changes for group fairness, Srivatsa Vaddagiri, (Mon Jun 11, 8:56 am)
[RFC][PATCH 6/6] Hook up to container infrastructure, Srivatsa Vaddagiri, (Mon Jun 11, 8:58 am)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Srivatsa Vaddagiri, (Mon Jun 11, 9:02 am)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Ingo Molnar, (Mon Jun 11, 12:37 pm)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Ingo Molnar, (Mon Jun 11, 12:39 pm)
Re: [RFC][PATCH 3/6] core changes in CFS, Balbir Singh, (Mon Jun 11, 7:29 pm)
Re: [ckrm-tech] [RFC][PATCH 1/6] Introduce struct sched_en ..., Srivatsa Vaddagiri, (Mon Jun 11, 8:52 pm)
Re: [RFC][PATCH 3/6] core changes in CFS, Srivatsa Vaddagiri, (Mon Jun 11, 9:22 pm)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Srivatsa Vaddagiri, (Mon Jun 11, 10:50 pm)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Ingo Molnar, (Mon Jun 11, 11:26 pm)
Re: [RFC][PATCH 4/6] Fix (bad?) interactions between SCHED ..., Srivatsa Vaddagiri, (Tue Jun 12, 3:26 am)
Re: [RFC][PATCH 4/6] Fix (bad?) interactions between SCHED ..., Srivatsa Vaddagiri, (Tue Jun 12, 6:30 am)
Re: [RFC][PATCH 4/6] Fix (bad?) interactions between SCHED ..., Srivatsa Vaddagiri, (Tue Jun 12, 8:43 am)
Re: [RFC][PATCH 5/6] core changes for group fairness, Dmitry Adamushko, (Wed Jun 13, 1:56 pm)
Re: [RFC][PATCH 5/6] core changes for group fairness, Srivatsa Vaddagiri, (Thu Jun 14, 5:06 am)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Kirill Korotaev, (Fri Jun 15, 5:46 am)
Re: [RFC][PATCH 0/6] Add group fairness to CFS - v1, Srivatsa Vaddagiri, (Fri Jun 15, 7:06 am)