mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Close donated files if containerManager.Start() fails
PiperOrigin-RevId: 220869535 Change-Id: I9917e5daf02499f7aab6e2aa4051c54ff4461b9a
This commit is contained in:
committed by
Shentubot
parent
33089561b1
commit
d97ccfa346
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user