From e5fe53f0a921cd0a062edbcb4fe122f86b66c2b9 Mon Sep 17 00:00:00 2001 From: Feng Wang Date: Mon, 27 Sep 2021 21:28:47 -0700 Subject: [PATCH] runtime: fix nil reference in cleanup rootless user It seems the client (crio) can send multiple requests to stop the Kata VM, resulting a nil reference if the uid has already been cleaned up by a different thread. Fixes #2743 Signed-off-by: Feng Wang --- src/runtime/virtcontainers/qemu.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 48252a0b5f..b189245d8f 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -1024,10 +1024,12 @@ func (q *qemu) cleanupVM() error { u, err := user.LookupId(strconv.Itoa(int(q.config.Uid))) if err != nil { q.Logger().WithError(err).WithField("uid", q.config.Uid).Warn("failed to find the user") + return nil } userdelPath, err := pkgUtils.FirstValidExecutable([]string{"/usr/sbin/userdel", "/sbin/userdel", "/bin/userdel"}) if err != nil { q.Logger().WithError(err).WithField("user", u.Username).Warn("failed to delete the user") + return nil } _, err = pkgUtils.RunCommand([]string{userdelPath, "-f", u.Username}) if err != nil {