[PATCH] 2.4-ac: migration_thread locking fix

Robert Love (rml@tech9.net)
11 May 2002 09:40:34 -0700


--=-XsQR5K08oc8aFbvOy3e9
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Alan,

Anton Blanchard reported a lock vs. interrupt-off ordering bug in
migration_thread. The bug is already fixed in 2.5. A patch is attached
to fix O(1) in your tree.

See the comments above double_rq_lock and double_rq_unlock (which,
sadly, I wrote)! Without this patch there is a possibility to hang,
which Anton observed.

Patch is against 2.4.19-pre8-ac1, please apply.

Robert Love

--=-XsQR5K08oc8aFbvOy3e9
Content-Disposition: attachment; filename=sched-irq-fix-rml-2.4.19-pre8-ac1-1.patch
Content-Transfer-Encoding: quoted-printable
Content-Type: text/x-patch; name=sched-irq-fix-rml-2.4.19-pre8-ac1-1.patch;
charset=ISO-8859-1

diff -urN linux-2.4.19-pre8-ac1/kernel/sched.c linux/kernel/sched.c
--- linux-2.4.19-pre8-ac1/kernel/sched.c Wed May 8 12:03:14 2002
+++ linux/kernel/sched.c Sat May 11 09:29:55 2002
@@ -1640,8 +1640,8 @@
local_irq_save(flags);
double_rq_lock(rq_src, rq_dest);
if (p->cpu !=3D cpu_src) {
- local_irq_restore(flags);
double_rq_unlock(rq_src, rq_dest);
+ local_irq_restore(flags);
goto repeat;
}
if (rq_src =3D=3D rq) {
@@ -1651,8 +1651,8 @@
activate_task(p, rq_dest);
}
}
- local_irq_restore(flags);
double_rq_unlock(rq_src, rq_dest);
+ local_irq_restore(flags);
=20
up(&req->sem);
}

--=-XsQR5K08oc8aFbvOy3e9--

-
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/