Jelajahi Sumber

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 <derek@mcgstyle.net> (github: dmcgowan)
(cherry picked from commit ad4b3e11fe41080d66ac1780b455246ae18bdc35)
Derek McGowan 9 tahun lalu
induk
melakukan
07bd7b0128
1 mengubah file dengan 4 tambahan dan 7 penghapusan
  1. 4 7
      daemon/graphdriver/overlay2/mount.go

+ 4 - 7
daemon/graphdriver/overlay2/mount.go

@@ -32,12 +32,6 @@ type mountOptions struct {
 }
 }
 
 
 func mountFrom(dir, device, target, mType, label string) error {
 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{
 	options := &mountOptions{
 		Device: device,
 		Device: device,
 		Target: target,
 		Target: target,
@@ -47,7 +41,10 @@ func mountFrom(dir, device, target, mType, label string) error {
 	}
 	}
 
 
 	cmd := reexec.Command("docker-mountfrom", dir)
 	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)
 	output := bytes.NewBuffer(nil)
 	cmd.Stdout = output
 	cmd.Stdout = output