From 38e3696574544053c8f26e8d699bb1951ec61f38 Mon Sep 17 00:00:00 2001 From: Davor Kapsa Date: Tue, 30 Apr 2019 21:11:34 +0200 Subject: [PATCH] Use cancel on errors Signed-off-by: Davor Kapsa --- runtime/v1/linux/proc/io.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/runtime/v1/linux/proc/io.go b/runtime/v1/linux/proc/io.go index 15f6ed8ca..0096db716 100644 --- a/runtime/v1/linux/proc/io.go +++ b/runtime/v1/linux/proc/io.go @@ -271,27 +271,35 @@ func newBinaryIO(ctx context.Context, id string, uri *url.URL) (runc.IO, error) ) out, err := newPipe() if err != nil { + cancel() return nil, err } serr, err := newPipe() if err != nil { + cancel() return nil, err } r, w, err := os.Pipe() if err != nil { + cancel() return nil, err } cmd.ExtraFiles = append(cmd.ExtraFiles, out.r, serr.r, w) // don't need to register this with the reaper or wait when // running inside a shim if err := cmd.Start(); err != nil { + cancel() return nil, err } // close our side of the pipe after start - w.Close() + if err := w.Close(); err != nil { + cancel() + return nil, err + } // wait for the logging binary to be ready b := make([]byte, 1) if _, err := r.Read(b); err != nil && err != io.EOF { + cancel() return nil, err } return &binaryIO{