From 860c6cce0c02fbc01720ee7f9d3f1f1a32126833 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Tue, 28 Jun 2016 13:23:00 -0700 Subject: [PATCH] overlay2: close read end of pipe on mount exec Use StdinPipe to ensure pipe is properly closed after startup Fixes #23686 Signed-off-by: Derek McGowan (github: dmcgowan) Upstream-commit: ad4b3e11fe41080d66ac1780b455246ae18bdc35 Component: engine --- .../engine/daemon/graphdriver/overlay2/mount.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/components/engine/daemon/graphdriver/overlay2/mount.go b/components/engine/daemon/graphdriver/overlay2/mount.go index 493960a5eb..44456bbb67 100644 --- a/components/engine/daemon/graphdriver/overlay2/mount.go +++ b/components/engine/daemon/graphdriver/overlay2/mount.go @@ -32,12 +32,6 @@ type mountOptions struct { } func mountFrom(dir, device, target, mType, label string) error { - - r, w, err := os.Pipe() - if err != nil { - return fmt.Errorf("mountfrom pipe failure: %v", err) - } - options := &mountOptions{ Device: device, Target: target, @@ -47,7 +41,10 @@ func mountFrom(dir, device, target, mType, label string) error { } cmd := reexec.Command("docker-mountfrom", dir) - cmd.Stdin = r + w, err := cmd.StdinPipe() + if err != nil { + return fmt.Errorf("mountfrom error on pipe creation: %v", err) + } output := bytes.NewBuffer(nil) cmd.Stdout = output