diff options
-rw-r--r-- | sys/i386/linux/linux_ptrace.c | 24 | ||||
-rw-r--r-- | sys/kern/sys_process.c | 3 | ||||
-rw-r--r-- | sys/vm/vm_fault.c | 7 |
3 files changed, 13 insertions, 21 deletions
diff --git a/sys/i386/linux/linux_ptrace.c b/sys/i386/linux/linux_ptrace.c index adfe3df..3ead237 100644 --- a/sys/i386/linux/linux_ptrace.c +++ b/sys/i386/linux/linux_ptrace.c @@ -222,31 +222,23 @@ struct linux_pt_fpxreg { static int linux_proc_read_fpxregs(struct thread *td, struct linux_pt_fpxreg *fpxregs) { - int error; - error = 0; - mtx_lock_spin(&sched_lock); + PROC_LOCK_ASSERT(td->td_proc, MA_OWNED); if (cpu_fxsr == 0 || (td->td_proc->p_sflag & PS_INMEM) == 0) - error = EIO; - else - bcopy(&td->td_pcb->pcb_save.sv_xmm, fpxregs, sizeof(*fpxregs)); - mtx_unlock_spin(&sched_lock); - return (error); + return (EIO); + bcopy(&td->td_pcb->pcb_save.sv_xmm, fpxregs, sizeof(*fpxregs)); + return (0); } static int linux_proc_write_fpxregs(struct thread *td, struct linux_pt_fpxreg *fpxregs) { - int error; - error = 0; - mtx_lock_spin(&sched_lock); + PROC_LOCK_ASSERT(td->td_proc, MA_OWNED); if (cpu_fxsr == 0 || (td->td_proc->p_sflag & PS_INMEM) == 0) - error = EIO; - else - bcopy(fpxregs, &td->td_pcb->pcb_save.sv_xmm, sizeof(*fpxregs)); - mtx_unlock_spin(&sched_lock); - return (error); + return (EIO); + bcopy(fpxregs, &td->td_pcb->pcb_save.sv_xmm, sizeof(*fpxregs)); + return (0); } #endif diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index eed2329..b12d8a1 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -82,12 +82,11 @@ #define PROC_ACTION(action) do { \ int error; \ \ - mtx_lock_spin(&sched_lock); \ + PROC_LOCK_ASSERT(td->td_proc, MA_OWNED); \ if ((td->td_proc->p_sflag & PS_INMEM) == 0) \ error = EIO; \ else \ error = (action); \ - mtx_unlock_spin(&sched_lock); \ return (error); \ } while(0) diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index d2d7372..d8f2409 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -917,15 +917,16 @@ readrest: } vm_page_wakeup(fs.m); vm_page_unlock_queues(); - mtx_lock_spin(&sched_lock); - if (curproc && (curproc->p_sflag & PS_INMEM) && curproc->p_stats) { + + PROC_LOCK(curproc); + if ((curproc->p_sflag & PS_INMEM) && curproc->p_stats) { if (hardfault) { curproc->p_stats->p_ru.ru_majflt++; } else { curproc->p_stats->p_ru.ru_minflt++; } } - mtx_unlock_spin(&sched_lock); + PROC_UNLOCK(curproc); /* * Unlock everything, and return |