diff options
author | tanimura <tanimura@FreeBSD.org> | 2002-03-11 07:53:13 +0000 |
---|---|---|
committer | tanimura <tanimura@FreeBSD.org> | 2002-03-11 07:53:13 +0000 |
commit | 22c75bf1c95925ca749760aa92580541ac2e6196 (patch) | |
tree | 67cbceb5f52dfde68f8a75843701d4ce255820e6 /sys/kern | |
parent | b9e49bfcc91fc2e10b17f9bec70d4d4cfb27ad51 (diff) | |
download | FreeBSD-src-22c75bf1c95925ca749760aa92580541ac2e6196.zip FreeBSD-src-22c75bf1c95925ca749760aa92580541ac2e6196.tar.gz |
Stop abusing the pgrpsess_lock.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_prot.c | 2 | ||||
-rw-r--r-- | sys/kern/subr_prf.c | 6 | ||||
-rw-r--r-- | sys/kern/tty.c | 6 | ||||
-rw-r--r-- | sys/kern/vfs_vnops.c | 6 |
4 files changed, 8 insertions, 12 deletions
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index cfcef0a..90f5196 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1862,14 +1862,12 @@ setlogin(td, uap) if (error == ENAMETOOLONG) error = EINVAL; else if (!error) { - PGRPSESS_XLOCK(); PROC_LOCK(p); SESS_LOCK(p->p_session); (void) memcpy(p->p_session->s_login, logintmp, sizeof(logintmp)); SESS_UNLOCK(p->p_session); PROC_UNLOCK(p); - PGRPSESS_XUNLOCK(); } done2: mtx_unlock(&Giant); diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index 034a63c..5b2078b 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -157,7 +157,6 @@ tprintf(struct proc *p, int pri, const char *fmt, ...) if (pri != -1) flags |= TOLOG; if (p != NULL) { - PGRPSESS_XLOCK(); PROC_LOCK(p); if (p->p_flag & P_CONTROLT && p->p_session->s_ttyvp) { SESS_LOCK(p->p_session); @@ -172,7 +171,6 @@ tprintf(struct proc *p, int pri, const char *fmt, ...) tp = NULL; } else PROC_UNLOCK(p); - PGRPSESS_XUNLOCK(); } pca.pri = pri; pca.tty = tp; @@ -181,11 +179,11 @@ tprintf(struct proc *p, int pri, const char *fmt, ...) retval = kvprintf(fmt, putchar, &pca, 10, ap); va_end(ap); if (shld) { - PGRPSESS_XLOCK(); + PROC_LOCK(p); SESS_LOCK(p->p_session); SESSRELE(p->p_session); SESS_UNLOCK(p->p_session); - PGRPSESS_XUNLOCK(); + PROC_UNLOCK(p); } msgbuftrigger = 1; } diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 1d5ecdb..923923a 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -1041,11 +1041,11 @@ ttioctl(tp, cmd, data, flag) break; case TIOCSCTTY: /* become controlling tty */ /* Session ctty vnode pointer set in vnode layer. */ - PGRPSESS_XLOCK(); + PGRPSESS_SLOCK(); if (!SESS_LEADER(p) || ((p->p_session->s_ttyvp || tp->t_session) && (tp->t_session != p->p_session))) { - PGRPSESS_XUNLOCK(); + PGRPSESS_SUNLOCK(); return (EPERM); } tp->t_session = p->p_session; @@ -1056,7 +1056,7 @@ ttioctl(tp, cmd, data, flag) PROC_LOCK(p); p->p_flag |= P_CONTROLT; PROC_UNLOCK(p); - PGRPSESS_XUNLOCK(); + PGRPSESS_SUNLOCK(); break; case TIOCSPGRP: { /* set pgrp of tty */ register struct pgrp *pgrp; diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 6300fe2..461cb1e 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -660,9 +660,9 @@ vn_ioctl(fp, com, data, td) if (error == 0 && com == TIOCSCTTY) { /* Do nothing if reassigning same control tty */ - PGRPSESS_XLOCK(); + PGRPSESS_SLOCK(); if (td->td_proc->p_session->s_ttyvp == vp) { - PGRPSESS_XUNLOCK(); + PGRPSESS_SUNLOCK(); return (0); } @@ -672,7 +672,7 @@ vn_ioctl(fp, com, data, td) td->td_proc->p_session->s_ttyvp = vp; SESS_UNLOCK(td->td_proc->p_session); - PGRPSESS_XUNLOCK(); + PGRPSESS_SUNLOCK(); /* Get rid of reference to old control tty */ if (vpold) |