-/* kern_proc.c 4.18 82/01/19 */
+/* kern_proc.c 4.25 82/04/02 */
#include "../h/param.h"
#include "../h/systm.h"
char cfname[DIRSIZ];
char cfarg[SHSIZE];
- if ((ip = namei(uchar, 0)) == NULL)
+ if ((ip = namei(uchar, 0, 1)) == NULL)
return;
bno = 0;
bp = 0;
bcopy((caddr_t)u.u_dbuf, (caddr_t)cfname, DIRSIZ);
indir = 1;
iput(ip);
- ip = namei(schar, 0);
+ ip = namei(schar, 0, 1);
if (ip == NULL)
return;
goto again;
u.u_uid = uid;
u.u_procp->p_uid = uid;
u.u_gid = gid;
+ u.u_grps[gid/(sizeof(int)*8)] |= 1 << (gid%(sizeof(int)*8));
} else
psignal(u.u_procp, SIGTRAP);
u.u_tsize = ts;
register i;
long sigmask;
- for (rp = &u.u_signal[0], sigmask = 1L; rp < &u.u_signal[NSIG];
+ for (rp = &u.u_signal[1], sigmask = 1L; rp < &u.u_signal[NSIG];
sigmask <<= 1, rp++) {
switch (*rp) {
if ((int)*rp & 1)
u.u_procp->p_siga0 |= sigmask;
else
- u.u_procp->p_siga1 &= ~sigmask;
+ u.u_procp->p_siga0 &= ~sigmask;
if ((int)*rp & 2)
u.u_procp->p_siga1 |= sigmask;
else
acct();
vrelpt(u.u_procp);
vrelu(u.u_procp, 0);
+ (void) spl5(); /* hack for mem alloc race XXX */
multprog--;
p->p_stat = SZOMB;
noproc = 1;
}
/*
* Protect this process from future
- * tty signals, clear TSTP/TTIN/TTOU if pending,
- * and set SDETACH bit on procs.
+ * tty signals, clear TSTP/TTIN/TTOU if pending.
*/
(void) spgrp(q, -1);
}
- wakeup((caddr_t)p->p_pptr);
psignal(p->p_pptr, SIGCHLD);
+ wakeup((caddr_t)p->p_pptr);
swtch();
}