]> Devi Nivas Git - cs3210-lab0.git/commitdiff
as rtm noticed, avoid doubly-freeing pipe page
authorkolya <kolya>
Wed, 15 Oct 2008 17:42:56 +0000 (17:42 +0000)
committerkolya <kolya>
Wed, 15 Oct 2008 17:42:56 +0000 (17:42 +0000)
pipe.c

diff --git a/pipe.c b/pipe.c
index fda3788a488232ffcc7aa6fa39e426d33aa172a4..8a580f95e63e5c536174fc9d06cf22aab13e3d16 100644 (file)
--- a/pipe.c
+++ b/pipe.c
@@ -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