aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-09-20 11:27:46 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-09-20 14:54:03 +0200
commit23db2ea6f9c5346f2fd3a408f259dd629e69ff36 (patch)
tree6dd05bedfe922b41c219cbf5bfd04c7f2af4f215
parent88f20b7bcc1efa00cb8e88f426cbea7ef4c3dd6e (diff)
vm/vmm: fix fd leaks
Close pipe fd's on failure paths. Don't close outr because OutputMerger closes all passed in fd's.
-rw-r--r--vm/vmm/vmm.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/vm/vmm/vmm.go b/vm/vmm/vmm.go
index 93ee45583..128f15604 100644
--- a/vm/vmm/vmm.go
+++ b/vm/vmm/vmm.go
@@ -301,6 +301,8 @@ func (inst *instance) console() error {
}
inr, inw, err := osutil.LongPipe()
if err != nil {
+ outr.Close()
+ outw.Close()
return err
}
@@ -309,6 +311,10 @@ func (inst *instance) console() error {
cmd.Stdout = outw
cmd.Stderr = outw
if err := cmd.Start(); err != nil {
+ outr.Close()
+ outw.Close()
+ inr.Close()
+ inw.Close()
return err
}
outw.Close()
@@ -340,7 +346,6 @@ func (inst *instance) console() error {
_, err = cmd.Process.Wait()
inw.Close()
- outr.Close()
stopDiagnose <- true
stopProcess <- true
}()