From 23db2ea6f9c5346f2fd3a408f259dd629e69ff36 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 20 Sep 2018 11:27:46 +0200 Subject: vm/vmm: fix fd leaks Close pipe fd's on failure paths. Don't close outr because OutputMerger closes all passed in fd's. --- vm/vmm/vmm.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 }() -- cgit mrf-deployment