libpod: unlock the thread if possible

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2024-06-20 11:37:19 +02:00
parent 9ffac33178
commit 094bc673ef
No known key found for this signature in database
GPG Key ID: 67E38F7A8BA21772
1 changed files with 7 additions and 2 deletions

View File

@ -45,8 +45,13 @@ func (r *ConmonOCIRuntime) createRootlessContainer(ctr *Container, restoreOption
return 0, err
}
defer func() {
if err := unix.Setns(int(fd.Fd()), unix.CLONE_NEWNS); err != nil {
logrus.Errorf("Unable to clone new namespace: %q", err)
err := unix.Setns(int(fd.Fd()), unix.CLONE_NEWNS)
if err == nil {
// If we are able to reset the previous mount namespace, unlock the thread and reuse it
runtime.UnlockOSThread()
} else {
// otherwise, leave the thread locked and the Go runtime will terminate it
logrus.Errorf("Unable to reset the previous mount namespace: %q", err)
}
}()