From d0bc148fe065a94ba4b10e719afe7f623f0be175 Mon Sep 17 00:00:00 2001 From: bin Date: Wed, 14 Jul 2021 17:20:53 +0800 Subject: [PATCH] runtime: Register defer function at early stage Register defer function at early stage ensure that it can be called if the startSandbox fails. Fixes: #2230 Signed-off-by: bin --- src/runtime/virtcontainers/sandbox.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 0348dc783c..77078c86fc 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1008,6 +1008,12 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { s.cw = consoleWatcher } + defer func() { + if err != nil { + s.hypervisor.stopSandbox(ctx, false) + } + }() + if err := s.network.Run(ctx, s.networkNS.NetNsPath, func() error { if s.factory != nil { vm, err := s.factory.GetVM(ctx, VMConfig{ @@ -1027,12 +1033,6 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { return err } - defer func() { - if err != nil { - s.hypervisor.stopSandbox(ctx, false) - } - }() - // In case of vm factory, network interfaces are hotplugged // after vm is started. if s.factory != nil {