mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-28 16:27:50 +00:00
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 <dinechin@redhat.com> Signed-off-by: Peng Tao <bergwolf@hyper.sh>
This commit is contained in:
parent
60606647de
commit
be9ca0d58b
@ -663,6 +663,7 @@ func (q *qemu) setupVirtiofsd() (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer fd.Close()
|
||||||
|
|
||||||
const sockFd = 3 // Cmd.ExtraFiles[] fds are numbered starting from 3
|
const sockFd = 3 // Cmd.ExtraFiles[] fds are numbered starting from 3
|
||||||
cmd := exec.Command(q.config.VirtioFSDaemon, q.virtiofsdArgs(sockFd)...)
|
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)
|
return fmt.Errorf("virtiofs daemon %v returned with error: %v", q.config.VirtioFSDaemon, err)
|
||||||
}
|
}
|
||||||
q.state.VirtiofsdPid = cmd.Process.Pid
|
q.state.VirtiofsdPid = cmd.Process.Pid
|
||||||
fd.Close()
|
|
||||||
|
|
||||||
// Monitor virtiofsd's stderr and stop sandbox if virtiofsd quits
|
// Monitor virtiofsd's stderr and stop sandbox if virtiofsd quits
|
||||||
go func() {
|
go func() {
|
||||||
|
Loading…
Reference in New Issue
Block a user