Initialize MountNamespace before calling methods that depend on it.

PiperOrigin-RevId: 477281632
This commit is contained in:
Nicolas Lacasse
2022-09-27 14:56:09 -07:00
committed by gVisor bot
parent f18c6daa56
commit 6f20a7c12c
+11 -11
View File
@@ -249,6 +249,17 @@ func (l *Lifecycle) StartContainer(args *StartContainerArgs, _ *uint32) error {
}
initArgs.FDTable = fdTable
// VFS2 is supported in multi-container mode by default.
l.mu.RLock()
mntns, ok := l.MountNamespacesMap[initArgs.ContainerID]
if !ok {
l.mu.RUnlock()
return fmt.Errorf("mount namespace is nil for %s", initArgs.ContainerID)
}
initArgs.MountNamespaceVFS2 = mntns
l.mu.RUnlock()
initArgs.MountNamespaceVFS2.IncRef()
if args.ResolveBinaryPath {
resolved, err := user.ResolveExecutablePath(ctx, &initArgs)
if err != nil {
@@ -265,17 +276,6 @@ func (l *Lifecycle) StartContainer(args *StartContainerArgs, _ *uint32) error {
initArgs.Envv = envVars
}
// VFS2 is supported in multi-container mode by default.
l.mu.RLock()
mntns, ok := l.MountNamespacesMap[initArgs.ContainerID]
if !ok {
l.mu.RUnlock()
return fmt.Errorf("mount namespace is nil for %s", initArgs.ContainerID)
}
initArgs.MountNamespaceVFS2 = mntns
l.mu.RUnlock()
initArgs.MountNamespaceVFS2.IncRef()
fds, err := fd.NewFromFiles(args.Files)
if err != nil {
return fmt.Errorf("duplicating payload files: %w", err)