From be9ca0d58b2b777beda02f59e443c1dc67d0b5f7 Mon Sep 17 00:00:00 2001 From: Christophe de Dinechin Date: Mon, 29 Jun 2020 01:19:18 -0700 Subject: [PATCH] qemu: Don't leak file descriptors in case of error [ port from runtime commit 7b269ff7aa2d62fe12593ff7040798e6c9bd5d65 ] If we take one of the error paths from setupVirtiofsd() after opening the fd variable, the fd.Close() function is not called. Signed-off-by: Christophe de Dinechin Signed-off-by: Peng Tao --- src/runtime/virtcontainers/qemu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 33992e7b05..df3208354a 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -663,6 +663,7 @@ func (q *qemu) setupVirtiofsd() (err error) { if err != nil { return err } + defer fd.Close() const sockFd = 3 // Cmd.ExtraFiles[] fds are numbered starting from 3 cmd := exec.Command(q.config.VirtioFSDaemon, q.virtiofsdArgs(sockFd)...) @@ -677,7 +678,6 @@ func (q *qemu) setupVirtiofsd() (err error) { return fmt.Errorf("virtiofs daemon %v returned with error: %v", q.config.VirtioFSDaemon, err) } q.state.VirtiofsdPid = cmd.Process.Pid - fd.Close() // Monitor virtiofsd's stderr and stop sandbox if virtiofsd quits go func() {