diff options
-rw-r--r-- | sys/alpha/osf1/osf1_misc.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/sys/alpha/osf1/osf1_misc.c b/sys/alpha/osf1/osf1_misc.c index d6f9518..13c835b 100644 --- a/sys/alpha/osf1/osf1_misc.c +++ b/sys/alpha/osf1/osf1_misc.c @@ -1066,35 +1066,26 @@ osf1_setuid(p, uap) register struct pcred *pc; uid = SCARG(uap, uid); - PROC_LOCK(p); pc = p->p_cred; if ((error = suser(p)) != 0 && - uid != pc->p_ruid && uid != pc->p_svuid) { - PROC_UNLOCK(p); + uid != pc->p_ruid && uid != pc->p_svuid) return (error); - } if (error == 0) { if (uid != pc->p_ruid) { - PROC_UNLOCK(p); change_ruid(p, uid); setsugid(p); - PROC_LOCK(p); } if (pc->p_svuid != uid) { - PROC_UNLOCK(p); pc->p_svuid = uid; setsugid(p); - PROC_LOCK(p); } } if (pc->pc_ucred->cr_uid != uid) { - PROC_UNLOCK(p); change_euid(p, uid); setsugid(p); - } else - PROC_UNLOCK(p); + } return (0); } @@ -1116,14 +1107,11 @@ osf1_setgid(p, uap) register struct pcred *pc; gid = SCARG(uap, gid); - PROC_LOCK(p); pc = p->p_cred; if (((error = suser(p)) != 0 ) && - gid != pc->p_rgid && gid != pc->p_svgid) { - PROC_UNLOCK(p); + gid != pc->p_rgid && gid != pc->p_svgid) return (error); - } pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_gid = gid; @@ -1131,7 +1119,6 @@ osf1_setgid(p, uap) pc->p_rgid = gid; pc->p_svgid = gid; } - PROC_UNLOCK(p); setsugid(p); return (0); } |