summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devproc.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-08-17 00:50:20 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-08-17 00:50:20 +0200
commit3b661a96effa96d211676181aa5206d1a6e42113 (patch)
treeb6c9fbf5051d09c37e6d6af0423be16cd16158e0 /sys/src/9/port/devproc.c
parent0bc51a90b0e9903ede7edb4750c415e9d6f422c7 (diff)
kernel: make noswap flag exclude processes from killbig() if not eve, reset noswap flag on exec
Diffstat (limited to 'sys/src/9/port/devproc.c')
-rw-r--r--sys/src/9/port/devproc.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/sys/src/9/port/devproc.c b/sys/src/9/port/devproc.c
index 6a6affde2..42aa5bb12 100644
--- a/sys/src/9/port/devproc.c
+++ b/sys/src/9/port/devproc.c
@@ -492,7 +492,7 @@ procwstat(Chan *c, uchar *db, int n)
if(p->pid != PID(c->qid))
error(Eprocdied);
- if(strcmp(up->user, p->user) != 0 && strcmp(up->user, eve) != 0)
+ if(strcmp(up->user, p->user) != 0 && !iseve())
error(Eperm);
d = smalloc(sizeof(Dir)+n);
@@ -500,10 +500,9 @@ procwstat(Chan *c, uchar *db, int n)
if(n == 0)
error(Eshortstat);
if(!emptystr(d->uid) && strcmp(d->uid, p->user) != 0){
- if(strcmp(up->user, eve) != 0)
+ if(!iseve())
error(Eperm);
- else
- kstrdup(&p->user, d->uid);
+ kstrdup(&p->user, d->uid);
}
/* p->procmode determines default mode for files in /proc */
if(d->mode != ~0UL)
@@ -1530,32 +1529,6 @@ procstopped(void *a)
return ((Proc*)a)->state == Stopped;
}
-ulong
-procpagecount(Proc *p)
-{
- Segment *s;
- ulong pages;
- int i;
-
- eqlock(&p->seglock);
- if(waserror()){
- qunlock(&p->seglock);
- nexterror();
- }
- pages = 0;
- for(i=0; i<NSEG; i++){
- if((s = p->seg[i]) != nil){
- eqlock(s);
- pages += mcountseg(s);
- qunlock(s);
- }
- }
- qunlock(&p->seglock);
- poperror();
-
- return pages;
-}
-
int
procctlmemio(Proc *p, uintptr offset, int n, void *va, int read)
{