diff --git a/src/cmd/linuxkit/run_hyperkit.go b/src/cmd/linuxkit/run_hyperkit.go index 047c35406..404d80fbf 100644 --- a/src/cmd/linuxkit/run_hyperkit.go +++ b/src/cmd/linuxkit/run_hyperkit.go @@ -240,14 +240,10 @@ func runHyperKit(args []string) { if err != nil { log.Fatalln("Unable to start vpnkit: ", err) } - defer func() { - if vpnkitProcess != nil { - err := vpnkitProcess.Kill() - if err != nil { - log.Println(err) - } - } - }() + defer shutdownVPNKit(vpnkitProcess) + log.RegisterExitHandler(func() { + shutdownVPNKit(vpnkitProcess) + }) // The guest will use this 9P mount to configure which ports to forward h.Sockets9P = []hyperkit.Socket9P{{Path: vpnkitPortSocket, Tag: "port"}} // VSOCK port 62373 is used to pass traffic from host->guest @@ -306,6 +302,16 @@ func runHyperKit(args []string) { } } +func shutdownVPNKit(process *os.Process) { + if process == nil { + return + } + + if err := process.Kill(); err != nil { + log.Println(err) + } +} + // createListenSocket creates a new unix domain socket and returns the open file func createListenSocket(path string) (*os.File, error) { os.Remove(path)