Skip to content

Commit 5703c1a

Browse files
ayushr2gvisor-bot
authored andcommitted
Fix spec validation to be called on all containers in a Pod.
Earlier, it was being called on a randomly selected container. PiperOrigin-RevId: 831044513
1 parent d7915bc commit 5703c1a

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

runsc/boot/controller.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,6 @@ func (cm *containerManager) RestoreSubcontainer(args *StartArgs, _ *struct{}) er
716716

717717
// All validation passed, logs the spec for debugging.
718718
specutils.LogSpecDebug(args.Spec, args.Conf.OCISeccomp)
719-
timeline.Reached("spec validated")
720719

721720
goferFiles := args.Files
722721
var stdios []*fd.FD

runsc/boot/restore.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ func (r *restorer) restoreContainerInfo(l *Loader, info *containerInfo, containe
163163
if err := specutils.RestoreValidateSpec(r.checkpointedSpecs, l.GetContainerSpecs(), l.root.conf); err != nil {
164164
return fmt.Errorf("failed to handle restore spec validation: %w", err)
165165
}
166+
r.timer.Reached("specs validated")
166167

167168
// Trigger the restore if this is the last container.
168169
return r.restore(l)

runsc/specutils/restore.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,9 @@ func validateSpecs(oldSpecs, newSpecs map[string]*specs.Spec) error {
463463
if !ok {
464464
return fmt.Errorf("checkpoint image does not contain spec for container: %q", cName)
465465
}
466-
return validateSpecForContainer(oldSpec, newSpec, cName)
466+
if err := validateSpecForContainer(oldSpec, newSpec, cName); err != nil {
467+
return fmt.Errorf("failed to validate spec for container %q: %w", cName, err)
468+
}
467469
}
468470

469471
return nil

0 commit comments

Comments
 (0)