Close donated files if containerManager.Start() fails

PiperOrigin-RevId: 220869535
Change-Id: I9917e5daf02499f7aab6e2aa4051c54ff4461b9a
This commit is contained in:
Fabricio Voznika
2018-11-09 14:54:34 -08:00
committed by Shentubot
parent 33089561b1
commit d97ccfa346
2 changed files with 8 additions and 2 deletions
+6
View File
@@ -213,6 +213,12 @@ type StartArgs struct {
func (cm *containerManager) Start(args *StartArgs, _ *struct{}) error {
log.Debugf("containerManager.Start: %+v", args)
defer func() {
for _, f := range args.FilePayload.Files {
f.Close()
}
}()
// Validate arguments.
if args == nil {
return errors.New("start missing arguments")
+2 -2
View File
@@ -515,7 +515,8 @@ func (l *Loader) createContainer(cid string) error {
}
// startContainer starts a child container. It returns the thread group ID of
// the newly created process.
// the newly created process. Caller owns 'files' and may close them after
// this method returns.
func (l *Loader) startContainer(k *kernel.Kernel, spec *specs.Spec, conf *Config, cid string, files []*os.File) error {
// Create capabilities.
caps, err := specutils.Capabilities(spec.Process.Capabilities)
@@ -553,7 +554,6 @@ func (l *Loader) startContainer(k *kernel.Kernel, spec *specs.Spec, conf *Config
if err != nil {
return fmt.Errorf("failed to dup file: %v", err)
}
f.Close()
ioFDs = append(ioFDs, fd)
}