diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-09-20 11:27:46 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-09-20 14:54:03 +0200 |
| commit | 23db2ea6f9c5346f2fd3a408f259dd629e69ff36 (patch) | |
| tree | 6dd05bedfe922b41c219cbf5bfd04c7f2af4f215 /vm/vmm/vmm.go | |
| parent | 88f20b7bcc1efa00cb8e88f426cbea7ef4c3dd6e (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.
Diffstat (limited to 'vm/vmm/vmm.go')
| -rw-r--r-- | vm/vmm/vmm.go | 7 |
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 }() |
