diff options
author | kolya <kolya> | 2008-10-15 17:42:56 +0000 |
---|---|---|
committer | kolya <kolya> | 2008-10-15 17:42:56 +0000 |
commit | e670a4835858b48e1568742dbe939800e2d44c13 (patch) | |
tree | 5d3fc854a2d9e3a79b7c3f8e733d77ce5e2501bf | |
parent | deca9fef83450fa9659b750497d46e7887064aa5 (diff) | |
download | xv6-labs-e670a4835858b48e1568742dbe939800e2d44c13.tar.gz xv6-labs-e670a4835858b48e1568742dbe939800e2d44c13.tar.bz2 xv6-labs-e670a4835858b48e1568742dbe939800e2d44c13.zip |
as rtm noticed, avoid doubly-freeing pipe page
-rw-r--r-- | pipe.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -69,10 +69,11 @@ pipeclose(struct pipe *p, int writable) p->readopen = 0; wakeup(&p->writep); } - release(&p->lock); - - if(p->readopen == 0 && p->writeopen == 0) + if(p->readopen == 0 && p->writeopen == 0) { + release(&p->lock); kfree((char*)p, PAGE); + } else + release(&p->lock); } //PAGEBREAK: 30 |