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 | 
