diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-08-17 00:50:20 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-08-17 00:50:20 +0200 |
commit | 3b661a96effa96d211676181aa5206d1a6e42113 (patch) | |
tree | b6c9fbf5051d09c37e6d6af0423be16cd16158e0 /sys/src/9/port/devproc.c | |
parent | 0bc51a90b0e9903ede7edb4750c415e9d6f422c7 (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.c | 33 |
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) { |