Fix several places to ignore processes that are not yet fully constructed.
MFC after: 1 week
This commit is contained in:
parent
ae1f5a71f2
commit
e806d352d2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=220390
@ -201,6 +201,10 @@ deadlkres(void)
|
||||
tryl = 0;
|
||||
FOREACH_PROC_IN_SYSTEM(p) {
|
||||
PROC_LOCK(p);
|
||||
if (p->p_state == PRS_NEW) {
|
||||
PROC_UNLOCK(p);
|
||||
continue;
|
||||
}
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
|
||||
/*
|
||||
|
@ -882,7 +882,8 @@ ktrace(td, uap)
|
||||
nfound = 0;
|
||||
LIST_FOREACH(p, &pg->pg_members, p_pglist) {
|
||||
PROC_LOCK(p);
|
||||
if (p_cansee(td, p) != 0) {
|
||||
if (p->p_state == PRS_NEW ||
|
||||
p_cansee(td, p) != 0) {
|
||||
PROC_UNLOCK(p);
|
||||
continue;
|
||||
}
|
||||
|
@ -129,7 +129,8 @@ getpriority(td, uap)
|
||||
sx_sunlock(&proctree_lock);
|
||||
LIST_FOREACH(p, &pg->pg_members, p_pglist) {
|
||||
PROC_LOCK(p);
|
||||
if (p_cansee(td, p) == 0) {
|
||||
if (p->p_state == PRS_NORMAL &&
|
||||
p_cansee(td, p) == 0) {
|
||||
if (p->p_nice < low)
|
||||
low = p->p_nice;
|
||||
}
|
||||
@ -215,7 +216,8 @@ setpriority(td, uap)
|
||||
sx_sunlock(&proctree_lock);
|
||||
LIST_FOREACH(p, &pg->pg_members, p_pglist) {
|
||||
PROC_LOCK(p);
|
||||
if (p_cansee(td, p) == 0) {
|
||||
if (p->p_state == PRS_NORMAL &&
|
||||
p_cansee(td, p) == 0) {
|
||||
error = donice(td, p, uap->prio);
|
||||
found++;
|
||||
}
|
||||
@ -230,7 +232,8 @@ setpriority(td, uap)
|
||||
sx_slock(&allproc_lock);
|
||||
FOREACH_PROC_IN_SYSTEM(p) {
|
||||
PROC_LOCK(p);
|
||||
if (p->p_ucred->cr_uid == uap->who &&
|
||||
if (p->p_state == PRS_NORMAL &&
|
||||
p->p_ucred->cr_uid == uap->who &&
|
||||
p_cansee(td, p) == 0) {
|
||||
error = donice(td, p, uap->prio);
|
||||
found++;
|
||||
|
@ -1799,7 +1799,8 @@ pgsignal(struct pgrp *pgrp, int sig, int checkctty, ksiginfo_t *ksi)
|
||||
PGRP_LOCK_ASSERT(pgrp, MA_OWNED);
|
||||
LIST_FOREACH(p, &pgrp->pg_members, p_pglist) {
|
||||
PROC_LOCK(p);
|
||||
if (checkctty == 0 || p->p_flag & P_CONTROLT)
|
||||
if (p->p_state == PRS_NORMAL &&
|
||||
(checkctty == 0 || p->p_flag & P_CONTROLT))
|
||||
pksignal(p, sig, ksi);
|
||||
PROC_UNLOCK(p);
|
||||
}
|
||||
@ -3313,7 +3314,8 @@ pgsigio(sigiop, sig, checkctty)
|
||||
PGRP_LOCK(sigio->sio_pgrp);
|
||||
LIST_FOREACH(p, &sigio->sio_pgrp->pg_members, p_pglist) {
|
||||
PROC_LOCK(p);
|
||||
if (CANSIGIO(sigio->sio_ucred, p->p_ucred) &&
|
||||
if (p->p_state == PRS_NORMAL &&
|
||||
CANSIGIO(sigio->sio_ucred, p->p_ucred) &&
|
||||
(checkctty == 0 || (p->p_flag & P_CONTROLT)))
|
||||
psignal(p, sig);
|
||||
PROC_UNLOCK(p);
|
||||
|
@ -463,6 +463,10 @@ schedcpu(void)
|
||||
sx_slock(&allproc_lock);
|
||||
FOREACH_PROC_IN_SYSTEM(p) {
|
||||
PROC_LOCK(p);
|
||||
if (p->p_state == PRS_NEW) {
|
||||
PROC_UNLOCK(p);
|
||||
continue;
|
||||
}
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
awake = 0;
|
||||
thread_lock(td);
|
||||
|
@ -747,7 +747,8 @@ scheduler(dummy)
|
||||
sx_slock(&allproc_lock);
|
||||
FOREACH_PROC_IN_SYSTEM(p) {
|
||||
PROC_LOCK(p);
|
||||
if (p->p_flag & (P_SWAPPINGOUT | P_SWAPPINGIN | P_INMEM)) {
|
||||
if (p->p_state == PRS_NEW ||
|
||||
p->p_flag & (P_SWAPPINGOUT | P_SWAPPINGIN | P_INMEM)) {
|
||||
PROC_UNLOCK(p);
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user