diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2000-12-06 01:45:20 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2000-12-06 01:45:20 +0000 |
| commit | f3a16450d01983343c03232124e6100c84effbd0 (patch) | |
| tree | fa4d1c9ae8a7c4c229207e26daa0ce4f68f5deb0 /sys/coda/coda_psdev.c | |
| parent | a263238c86db701b3ed957d317e5a37acf739de9 (diff) | |
Notes
Diffstat (limited to 'sys/coda/coda_psdev.c')
| -rw-r--r-- | sys/coda/coda_psdev.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/coda/coda_psdev.c b/sys/coda/coda_psdev.c index 7d31eb8438c0..18fda00447a0 100644 --- a/sys/coda/coda_psdev.c +++ b/sys/coda/coda_psdev.c @@ -488,7 +488,7 @@ coda_call(mntinfo, inSize, outSize, buffer) int error; #ifdef CTL_C struct proc *p = curproc; - sigset_t psig_omask = p->p_sigmask; + sigset_t psig_omask; sigset_t tempset; int i; #endif @@ -544,8 +544,10 @@ coda_call(mntinfo, inSize, outSize, buffer) can not do this. A better solution is necessary. */ i = 0; + PROC_LOCK(p); + psig_omask = p->p_sigmask; do { - error = tsleep(&vmp->vm_sleep, + error = msleep(&vmp->vm_sleep, &p->p_mtx, (coda_call_sleep|coda_pcatch), "coda_call", hz*2); if (error == 0) @@ -597,6 +599,7 @@ coda_call(mntinfo, inSize, outSize, buffer) } } while (error && i++ < 128 && VC_OPEN(vcp)); p->p_sigmask = psig_omask; + PROC_UNLOCK(p); #else (void) tsleep(&vmp->vm_sleep, coda_call_sleep, "coda_call", 0); #endif |
