From 726217c7661f8158a919fa0ed6407cd24ff2bd6a Mon Sep 17 00:00:00 2001 From: Giacomo Tesio Date: Tue, 21 Nov 2017 00:50:26 +0100 Subject: [PATCH] kern: fix proc ref counting in procread --- sys/src/kern/port/devproc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/src/kern/port/devproc.c b/sys/src/kern/port/devproc.c index cb1d129..5f2a76c 100644 --- a/sys/src/kern/port/devproc.c +++ b/sys/src/kern/port/devproc.c @@ -857,6 +857,7 @@ procread(Chan *c, void *va, long n, int64_t off) return n; case Qsyscall: + psdecref(p); return qread(c->aux, va, n); case Qmem: @@ -949,13 +950,18 @@ procread(Chan *c, void *va, long n, int64_t off) rptr = (uint8_t*)&p->fpsave; rsize = sizeof(FPsave); regread: - if(rptr == nil) + if(rptr == nil){ + psdecref(p); error(Enoreg); - if(offset >= rsize) + } + if(offset >= rsize){ + psdecref(p); return 0; + } if(offset+n > rsize) n = rsize - offset; memmove(a, rptr+offset, n); + psdecref(p); return n; case Qstatus: