lkml.org 
[lkml]   [2007]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC][PATCH 2/6] task's cpu information needs to be always correct
    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
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-06-11 17:47    [W:0.048 / U:61.772 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site