From 8540497c50ec413cd0dcfe2aa8d3f9caf1e09d14 Mon Sep 17 00:00:00 2001 From: Julian Elischer Date: Sat, 29 Jun 2002 23:58:50 +0000 Subject: [PATCH] Fix reverse ordering of locks. add a comment about locks on some platforms. Submitted by: jhb@freebsd.org --- sys/alpha/alpha/trap.c | 2 +- sys/amd64/amd64/trap.c | 2 +- sys/i386/i386/trap.c | 2 +- sys/ia64/ia64/trap.c | 2 +- sys/sparc64/sparc64/trap.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/alpha/alpha/trap.c b/sys/alpha/alpha/trap.c index 17dcb1491ea..f4af4bab97c 100644 --- a/sys/alpha/alpha/trap.c +++ b/sys/alpha/alpha/trap.c @@ -301,8 +301,8 @@ trap(a0, a1, a2, entry, framep) if (td->td_ucred != p->p_ucred) cred_update_thread(td); if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) { - mtx_lock_spin(&sched_lock); PROC_LOCK(p); + mtx_lock_spin(&sched_lock); thread_exit(); /* NOTREACHED */ } diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 8282416b8ea..fddb5176b36 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -273,8 +273,8 @@ trap(frame) * But check if we are the single thread first! */ if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) { + PROC_LOCK(p); /* check if thisis really needed */ mtx_lock_spin(&sched_lock); - PROC_LOCK(p); thread_exit(); /* NOTREACHED */ } diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c index 8282416b8ea..fddb5176b36 100644 --- a/sys/i386/i386/trap.c +++ b/sys/i386/i386/trap.c @@ -273,8 +273,8 @@ trap(frame) * But check if we are the single thread first! */ if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) { + PROC_LOCK(p); /* check if thisis really needed */ mtx_lock_spin(&sched_lock); - PROC_LOCK(p); thread_exit(); /* NOTREACHED */ } diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index 09d824f9a81..74dfebff7a4 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -337,7 +337,7 @@ trap(int vector, int imm, struct trapframe *framep) cred_update_thread(td); if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) { mtx_lock_spin(&sched_lock); - thread_exit(); + thread_exit(); /* XXXKSE need proc lock? */ /* NOTREACHED */ } } else { diff --git a/sys/sparc64/sparc64/trap.c b/sys/sparc64/sparc64/trap.c index f39d2f6a4c5..2fe9bb38fee 100644 --- a/sys/sparc64/sparc64/trap.c +++ b/sys/sparc64/sparc64/trap.c @@ -193,7 +193,7 @@ trap(struct trapframe *tf) cred_update_thread(td); if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) { mtx_lock_spin(&sched_lock); - thread_exit(); + thread_exit(); /* XXXKSE need proc lock? */ /* NOTREACHED */ } } else {