mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	Bump runc to d5b4a3e
This fixes a race condition in runc/systemd at container creation time opencontainers/runc#1683 Signed-off-by: vikaschoudhary16 <vichoudh@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 vikaschoudhary16
						vikaschoudhary16
					
				
			
			
				
	
			
			
			
						parent
						
							81192eafd5
						
					
				
				
					commit
					4711bccd05
				
			
							
								
								
									
										77
									
								
								vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										77
									
								
								vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -11,13 +11,13 @@ import ( | ||||
| 	"runtime/debug" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"github.com/docker/docker/pkg/mount" | ||||
| 	"github.com/opencontainers/runc/libcontainer/cgroups" | ||||
| 	"github.com/opencontainers/runc/libcontainer/cgroups/fs" | ||||
| 	"github.com/opencontainers/runc/libcontainer/cgroups/rootless" | ||||
| 	"github.com/opencontainers/runc/libcontainer/cgroups/systemd" | ||||
| 	"github.com/opencontainers/runc/libcontainer/configs" | ||||
| 	"github.com/opencontainers/runc/libcontainer/configs/validate" | ||||
| 	"github.com/opencontainers/runc/libcontainer/intelrdt" | ||||
| 	"github.com/opencontainers/runc/libcontainer/mount" | ||||
| 	"github.com/opencontainers/runc/libcontainer/utils" | ||||
|  | ||||
| 	"golang.org/x/sys/unix" | ||||
| @@ -72,15 +72,15 @@ func Cgroupfs(l *LinuxFactory) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // RootlessCgroups is an options func to configure a LinuxFactory to | ||||
| // return containers that use the "rootless" cgroup manager, which will | ||||
| // fail to do any operations not possible to do with an unprivileged user. | ||||
| // It should only be used in conjunction with rootless containers. | ||||
| func RootlessCgroups(l *LinuxFactory) error { | ||||
| 	l.NewCgroupsManager = func(config *configs.Cgroup, paths map[string]string) cgroups.Manager { | ||||
| 		return &rootless.Manager{ | ||||
| 			Cgroups: config, | ||||
| 			Paths:   paths, | ||||
| // IntelRdtfs is an options func to configure a LinuxFactory to return | ||||
| // containers that use the Intel RDT "resource control" filesystem to | ||||
| // create and manage Intel Xeon platform shared resources (e.g., L3 cache). | ||||
| func IntelRdtFs(l *LinuxFactory) error { | ||||
| 	l.NewIntelRdtManager = func(config *configs.Config, id string, path string) intelrdt.Manager { | ||||
| 		return &intelrdt.IntelRdtManager{ | ||||
| 			Config: config, | ||||
| 			Id:     id, | ||||
| 			Path:   path, | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| @@ -119,12 +119,16 @@ func New(root string, options ...func(*LinuxFactory) error) (Factory, error) { | ||||
| 	} | ||||
| 	l := &LinuxFactory{ | ||||
| 		Root:      root, | ||||
| 		InitArgs:  []string{"/proc/self/exe", "init"}, | ||||
| 		InitPath:  "/proc/self/exe", | ||||
| 		InitArgs:  []string{os.Args[0], "init"}, | ||||
| 		Validator: validate.New(), | ||||
| 		CriuPath:  "criu", | ||||
| 	} | ||||
| 	Cgroupfs(l) | ||||
| 	for _, opt := range options { | ||||
| 		if opt == nil { | ||||
| 			continue | ||||
| 		} | ||||
| 		if err := opt(l); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @@ -137,6 +141,10 @@ type LinuxFactory struct { | ||||
| 	// Root directory for the factory to store state. | ||||
| 	Root string | ||||
|  | ||||
| 	// InitPath is the path for calling the init responsibilities for spawning | ||||
| 	// a container. | ||||
| 	InitPath string | ||||
|  | ||||
| 	// InitArgs are arguments for calling the init responsibilities for spawning | ||||
| 	// a container. | ||||
| 	InitArgs []string | ||||
| @@ -145,11 +153,19 @@ type LinuxFactory struct { | ||||
| 	// containers. | ||||
| 	CriuPath string | ||||
|  | ||||
| 	// New{u,g}uidmapPath is the path to the binaries used for mapping with | ||||
| 	// rootless containers. | ||||
| 	NewuidmapPath string | ||||
| 	NewgidmapPath string | ||||
|  | ||||
| 	// Validator provides validation to container configurations. | ||||
| 	Validator validate.Validator | ||||
|  | ||||
| 	// NewCgroupsManager returns an initialized cgroups manager for a single container. | ||||
| 	NewCgroupsManager func(config *configs.Cgroup, paths map[string]string) cgroups.Manager | ||||
|  | ||||
| 	// NewIntelRdtManager returns an initialized Intel RDT manager for a single container. | ||||
| 	NewIntelRdtManager func(config *configs.Config, id string, path string) intelrdt.Manager | ||||
| } | ||||
|  | ||||
| func (l *LinuxFactory) Create(id string, config *configs.Config) (Container, error) { | ||||
| @@ -174,17 +190,20 @@ func (l *LinuxFactory) Create(id string, config *configs.Config) (Container, err | ||||
| 	if err := os.Chown(containerRoot, unix.Geteuid(), unix.Getegid()); err != nil { | ||||
| 		return nil, newGenericError(err, SystemError) | ||||
| 	} | ||||
| 	if config.Rootless { | ||||
| 		RootlessCgroups(l) | ||||
| 	} | ||||
| 	c := &linuxContainer{ | ||||
| 		id:            id, | ||||
| 		root:          containerRoot, | ||||
| 		config:        config, | ||||
| 		initPath:      l.InitPath, | ||||
| 		initArgs:      l.InitArgs, | ||||
| 		criuPath:      l.CriuPath, | ||||
| 		newuidmapPath: l.NewuidmapPath, | ||||
| 		newgidmapPath: l.NewgidmapPath, | ||||
| 		cgroupManager: l.NewCgroupsManager(config.Cgroups, nil), | ||||
| 	} | ||||
| 	if intelrdt.IsEnabled() { | ||||
| 		c.intelRdtManager = l.NewIntelRdtManager(config, id, "") | ||||
| 	} | ||||
| 	c.state = &stoppedState{c: c} | ||||
| 	return c, nil | ||||
| } | ||||
| @@ -203,17 +222,16 @@ func (l *LinuxFactory) Load(id string) (Container, error) { | ||||
| 		processStartTime: state.InitProcessStartTime, | ||||
| 		fds:              state.ExternalDescriptors, | ||||
| 	} | ||||
| 	// We have to use the RootlessManager. | ||||
| 	if state.Rootless { | ||||
| 		RootlessCgroups(l) | ||||
| 	} | ||||
| 	c := &linuxContainer{ | ||||
| 		initProcess:          r, | ||||
| 		initProcessStartTime: state.InitProcessStartTime, | ||||
| 		id:                   id, | ||||
| 		config:               &state.Config, | ||||
| 		initPath:             l.InitPath, | ||||
| 		initArgs:             l.InitArgs, | ||||
| 		criuPath:             l.CriuPath, | ||||
| 		newuidmapPath:        l.NewuidmapPath, | ||||
| 		newgidmapPath:        l.NewgidmapPath, | ||||
| 		cgroupManager:        l.NewCgroupsManager(state.Config.Cgroups, state.CgroupPaths), | ||||
| 		root:                 containerRoot, | ||||
| 		created:              state.Created, | ||||
| @@ -222,6 +240,9 @@ func (l *LinuxFactory) Load(id string) (Container, error) { | ||||
| 	if err := c.refreshState(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if intelrdt.IsEnabled() { | ||||
| 		c.intelRdtManager = l.NewIntelRdtManager(&state.Config, id, state.IntelRdtPath) | ||||
| 	} | ||||
| 	return c, nil | ||||
| } | ||||
|  | ||||
| @@ -323,3 +344,21 @@ func (l *LinuxFactory) validateID(id string) error { | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // NewuidmapPath returns an option func to configure a LinuxFactory with the | ||||
| // provided .. | ||||
| func NewuidmapPath(newuidmapPath string) func(*LinuxFactory) error { | ||||
| 	return func(l *LinuxFactory) error { | ||||
| 		l.NewuidmapPath = newuidmapPath | ||||
| 		return nil | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // NewgidmapPath returns an option func to configure a LinuxFactory with the | ||||
| // provided .. | ||||
| func NewgidmapPath(newgidmapPath string) func(*LinuxFactory) error { | ||||
| 	return func(l *LinuxFactory) error { | ||||
| 		l.NewgidmapPath = newgidmapPath | ||||
| 		return nil | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user