mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Update to runc v 1.0.3
fix GetStats for unsupported hugetlb needed to run on RaspberryPi4 with non-hugetlb compiled kernel (standard). This includes the https://github.com/opencontainers/runc/pull/3233 Used commands from hack folder to generate the new dependency: ``` hack/pin-dependency.sh github.com/opencontainers/runc v1.0.3 hack/update-vendor.sh hack/lint-dependencies.sh ```
This commit is contained in:
		
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@@ -60,7 +60,7 @@ require (
 | 
				
			|||||||
	github.com/mvdan/xurls v1.1.0
 | 
						github.com/mvdan/xurls v1.1.0
 | 
				
			||||||
	github.com/onsi/ginkgo v1.14.0
 | 
						github.com/onsi/ginkgo v1.14.0
 | 
				
			||||||
	github.com/onsi/gomega v1.10.1
 | 
						github.com/onsi/gomega v1.10.1
 | 
				
			||||||
	github.com/opencontainers/runc v1.0.2
 | 
						github.com/opencontainers/runc v1.0.3
 | 
				
			||||||
	github.com/opencontainers/selinux v1.8.2
 | 
						github.com/opencontainers/selinux v1.8.2
 | 
				
			||||||
	github.com/pkg/errors v0.9.1
 | 
						github.com/pkg/errors v0.9.1
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0
 | 
						github.com/pmezard/go-difflib v1.0.0
 | 
				
			||||||
@@ -364,7 +364,7 @@ replace (
 | 
				
			|||||||
	github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
 | 
						github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
 | 
				
			||||||
	github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
 | 
						github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
 | 
				
			||||||
	github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
 | 
						github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
 | 
				
			||||||
	github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.2
 | 
						github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.3
 | 
				
			||||||
	github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
 | 
						github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
 | 
				
			||||||
	github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.8.2
 | 
						github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.8.2
 | 
				
			||||||
	github.com/opentracing/opentracing-go => github.com/opentracing/opentracing-go v1.1.0
 | 
						github.com/opentracing/opentracing-go => github.com/opentracing/opentracing-go v1.1.0
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							@@ -374,8 +374,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
 | 
				
			|||||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
 | 
					github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
 | 
				
			||||||
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
 | 
					github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
 | 
				
			||||||
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
 | 
					github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
 | 
				
			||||||
github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg=
 | 
					github.com/opencontainers/runc v1.0.3 h1:1hbqejyQWCJBvtKAfdO0b1FmaEf2z/bxnjqbARass5k=
 | 
				
			||||||
github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
 | 
					github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
 | 
				
			||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=
 | 
					github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=
 | 
				
			||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 | 
					github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 | 
				
			||||||
github.com/opencontainers/selinux v1.8.2 h1:c4ca10UMgRcvZ6h0K4HtS15UaVSBEaE+iln2LVpAuGc=
 | 
					github.com/opencontainers/selinux v1.8.2 h1:c4ca10UMgRcvZ6h0K4HtS15UaVSBEaE+iln2LVpAuGc=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -30,10 +30,7 @@ func setHugeTlb(dirPath string, r *configs.Resources) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func statHugeTlb(dirPath string, stats *cgroups.Stats) error {
 | 
					func statHugeTlb(dirPath string, stats *cgroups.Stats) error {
 | 
				
			||||||
	hugePageSizes, err := cgroups.GetHugePageSize()
 | 
						hugePageSizes, _ := cgroups.GetHugePageSize()
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return errors.Wrap(err, "failed to fetch hugetlb info")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	hugetlbStats := cgroups.HugetlbStats{}
 | 
						hugetlbStats := cgroups.HugetlbStats{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, pagesize := range hugePageSizes {
 | 
						for _, pagesize := range hugePageSizes {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -4,6 +4,7 @@ package systemd
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	systemdDbus "github.com/coreos/go-systemd/v22/dbus"
 | 
						systemdDbus "github.com/coreos/go-systemd/v22/dbus"
 | 
				
			||||||
@@ -54,7 +55,10 @@ func (d *dbusConnManager) getConnection() (*systemdDbus.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	conn, err := d.newConnection()
 | 
						conn, err := d.newConnection()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							// When dbus-user-session is not installed, we can't detect whether we should try to connect to user dbus or system dbus, so d.dbusRootless is set to false.
 | 
				
			||||||
 | 
							// This may fail with a cryptic error "read unix @->/run/systemd/private: read: connection reset by peer: unknown."
 | 
				
			||||||
 | 
							// https://github.com/moby/moby/issues/42793
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("failed to connect to dbus (hint: for rootless containers, maybe you need to install dbus-user-session package, see https://github.com/opencontainers/runc/blob/master/docs/cgroup-v2.md): %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dbusC = conn
 | 
						dbusC = conn
 | 
				
			||||||
	return conn, nil
 | 
						return conn, nil
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -5,7 +5,6 @@ package systemd
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
@@ -307,9 +306,10 @@ func (m *unifiedManager) Destroy() error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// XXX this is probably not needed, systemd should handle it
 | 
						// systemd 239 do not remove sub-cgroups.
 | 
				
			||||||
	err := os.Remove(m.path)
 | 
						err := cgroups.RemovePath(m.path)
 | 
				
			||||||
	if err != nil && !os.IsNotExist(err) {
 | 
						// cgroups.RemovePath has handled ErrNotExist
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2028,16 +2028,34 @@ func encodeIDMapping(idMap []configs.IDMap) ([]byte, error) {
 | 
				
			|||||||
	return data.Bytes(), nil
 | 
						return data.Bytes(), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// netlinkError is an error wrapper type for use by custom netlink message
 | 
				
			||||||
 | 
					// types. Panics with errors are wrapped in netlinkError so that the recover
 | 
				
			||||||
 | 
					// in bootstrapData can distinguish intentional panics.
 | 
				
			||||||
 | 
					type netlinkError struct{ error }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// bootstrapData encodes the necessary data in netlink binary format
 | 
					// bootstrapData encodes the necessary data in netlink binary format
 | 
				
			||||||
// as a io.Reader.
 | 
					// as a io.Reader.
 | 
				
			||||||
// Consumer can write the data to a bootstrap program
 | 
					// Consumer can write the data to a bootstrap program
 | 
				
			||||||
// such as one that uses nsenter package to bootstrap the container's
 | 
					// such as one that uses nsenter package to bootstrap the container's
 | 
				
			||||||
// init process correctly, i.e. with correct namespaces, uid/gid
 | 
					// init process correctly, i.e. with correct namespaces, uid/gid
 | 
				
			||||||
// mapping etc.
 | 
					// mapping etc.
 | 
				
			||||||
func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.NamespaceType]string) (io.Reader, error) {
 | 
					func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.NamespaceType]string) (_ io.Reader, Err error) {
 | 
				
			||||||
	// create the netlink message
 | 
						// create the netlink message
 | 
				
			||||||
	r := nl.NewNetlinkRequest(int(InitMsg), 0)
 | 
						r := nl.NewNetlinkRequest(int(InitMsg), 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Our custom messages cannot bubble up an error using returns, instead
 | 
				
			||||||
 | 
						// they will panic with the specific error type, netlinkError. In that
 | 
				
			||||||
 | 
						// case, recover from the panic and return that as an error.
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if r := recover(); r != nil {
 | 
				
			||||||
 | 
								if e, ok := r.(netlinkError); ok {
 | 
				
			||||||
 | 
									Err = e.error
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									panic(r)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// write cloneFlags
 | 
						// write cloneFlags
 | 
				
			||||||
	r.AddData(&Int32msg{
 | 
						r.AddData(&Int32msg{
 | 
				
			||||||
		Type:  CloneFlagsAttr,
 | 
							Type:  CloneFlagsAttr,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								vendor/github.com/opencontainers/runc/libcontainer/message_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/opencontainers/runc/libcontainer/message_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,9 @@
 | 
				
			|||||||
package libcontainer
 | 
					package libcontainer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/vishvananda/netlink/nl"
 | 
						"github.com/vishvananda/netlink/nl"
 | 
				
			||||||
	"golang.org/x/sys/unix"
 | 
						"golang.org/x/sys/unix"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -54,6 +57,12 @@ type Bytemsg struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (msg *Bytemsg) Serialize() []byte {
 | 
					func (msg *Bytemsg) Serialize() []byte {
 | 
				
			||||||
	l := msg.Len()
 | 
						l := msg.Len()
 | 
				
			||||||
 | 
						if l > math.MaxUint16 {
 | 
				
			||||||
 | 
							// We cannot return nil nor an error here, so we panic with
 | 
				
			||||||
 | 
							// a specific type instead, which is handled via recover in
 | 
				
			||||||
 | 
							// bootstrapData.
 | 
				
			||||||
 | 
							panic(netlinkError{fmt.Errorf("netlink: cannot serialize bytemsg of length %d (larger than UINT16_MAX)", l)})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	buf := make([]byte, (l+unix.NLA_ALIGNTO-1) & ^(unix.NLA_ALIGNTO-1))
 | 
						buf := make([]byte, (l+unix.NLA_ALIGNTO-1) & ^(unix.NLA_ALIGNTO-1))
 | 
				
			||||||
	native := nl.NativeEndian()
 | 
						native := nl.NativeEndian()
 | 
				
			||||||
	native.PutUint16(buf[0:2], uint16(l))
 | 
						native.PutUint16(buf[0:2], uint16(l))
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										45
									
								
								vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,7 +22,6 @@ import (
 | 
				
			|||||||
	"github.com/opencontainers/runc/libcontainer/devices"
 | 
						"github.com/opencontainers/runc/libcontainer/devices"
 | 
				
			||||||
	"github.com/opencontainers/runc/libcontainer/userns"
 | 
						"github.com/opencontainers/runc/libcontainer/userns"
 | 
				
			||||||
	"github.com/opencontainers/runc/libcontainer/utils"
 | 
						"github.com/opencontainers/runc/libcontainer/utils"
 | 
				
			||||||
	libcontainerUtils "github.com/opencontainers/runc/libcontainer/utils"
 | 
					 | 
				
			||||||
	"github.com/opencontainers/runtime-spec/specs-go"
 | 
						"github.com/opencontainers/runtime-spec/specs-go"
 | 
				
			||||||
	"github.com/opencontainers/selinux/go-selinux/label"
 | 
						"github.com/opencontainers/selinux/go-selinux/label"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
@@ -42,7 +41,7 @@ type mountConfig struct {
 | 
				
			|||||||
// needsSetupDev returns true if /dev needs to be set up.
 | 
					// needsSetupDev returns true if /dev needs to be set up.
 | 
				
			||||||
func needsSetupDev(config *configs.Config) bool {
 | 
					func needsSetupDev(config *configs.Config) bool {
 | 
				
			||||||
	for _, m := range config.Mounts {
 | 
						for _, m := range config.Mounts {
 | 
				
			||||||
		if m.Device == "bind" && libcontainerUtils.CleanPath(m.Destination) == "/dev" {
 | 
							if m.Device == "bind" && utils.CleanPath(m.Destination) == "/dev" {
 | 
				
			||||||
			return false
 | 
								return false
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -154,16 +153,17 @@ func prepareRootfs(pipe io.ReadWriter, iConfig *initConfig) (err error) {
 | 
				
			|||||||
// finalizeRootfs sets anything to ro if necessary. You must call
 | 
					// finalizeRootfs sets anything to ro if necessary. You must call
 | 
				
			||||||
// prepareRootfs first.
 | 
					// prepareRootfs first.
 | 
				
			||||||
func finalizeRootfs(config *configs.Config) (err error) {
 | 
					func finalizeRootfs(config *configs.Config) (err error) {
 | 
				
			||||||
	// remount dev as ro if specified
 | 
						// All tmpfs mounts and /dev were previously mounted as rw
 | 
				
			||||||
 | 
						// by mountPropagate. Remount them read-only as requested.
 | 
				
			||||||
	for _, m := range config.Mounts {
 | 
						for _, m := range config.Mounts {
 | 
				
			||||||
		if libcontainerUtils.CleanPath(m.Destination) == "/dev" {
 | 
							if m.Flags&unix.MS_RDONLY != unix.MS_RDONLY {
 | 
				
			||||||
			if m.Flags&unix.MS_RDONLY == unix.MS_RDONLY {
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if m.Device == "tmpfs" || utils.CleanPath(m.Destination) == "/dev" {
 | 
				
			||||||
			if err := remountReadonly(m); err != nil {
 | 
								if err := remountReadonly(m); err != nil {
 | 
				
			||||||
				return newSystemErrorWithCausef(err, "remounting %q as readonly", m.Destination)
 | 
									return newSystemErrorWithCausef(err, "remounting %q as readonly", m.Destination)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
			break
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// set rootfs ( / ) as readonly
 | 
						// set rootfs ( / ) as readonly
 | 
				
			||||||
@@ -432,12 +432,6 @@ func mountToRootfs(m *configs.Mount, c *mountConfig) error {
 | 
				
			|||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Initially mounted rw in mountPropagate, remount to ro if flag set.
 | 
					 | 
				
			||||||
		if m.Flags&unix.MS_RDONLY != 0 {
 | 
					 | 
				
			||||||
			if err := remount(m, rootfs); err != nil {
 | 
					 | 
				
			||||||
				return err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	case "bind":
 | 
						case "bind":
 | 
				
			||||||
		if err := prepareBindMount(m, rootfs); err != nil {
 | 
							if err := prepareBindMount(m, rootfs); err != nil {
 | 
				
			||||||
@@ -1035,7 +1029,22 @@ func writeSystemProperty(key, value string) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func remount(m *configs.Mount, rootfs string) error {
 | 
					func remount(m *configs.Mount, rootfs string) error {
 | 
				
			||||||
	return utils.WithProcfd(rootfs, m.Destination, func(procfd string) error {
 | 
						return utils.WithProcfd(rootfs, m.Destination, func(procfd string) error {
 | 
				
			||||||
		return unix.Mount(m.Source, procfd, m.Device, uintptr(m.Flags|unix.MS_REMOUNT), "")
 | 
							flags := uintptr(m.Flags | unix.MS_REMOUNT)
 | 
				
			||||||
 | 
							err := unix.Mount(m.Source, procfd, m.Device, flags, "")
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// Check if the source has ro flag...
 | 
				
			||||||
 | 
							var s unix.Statfs_t
 | 
				
			||||||
 | 
							if err := unix.Statfs(m.Source, &s); err != nil {
 | 
				
			||||||
 | 
								return &os.PathError{Op: "statfs", Path: m.Source, Err: err}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if s.Flags&unix.MS_RDONLY != unix.MS_RDONLY {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// ... and retry the mount with ro flag set.
 | 
				
			||||||
 | 
							flags |= unix.MS_RDONLY
 | 
				
			||||||
 | 
							return unix.Mount(m.Source, procfd, m.Device, flags, "")
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1047,10 +1056,10 @@ func mountPropagate(m *configs.Mount, rootfs string, mountLabel string) error {
 | 
				
			|||||||
		flags = m.Flags
 | 
							flags = m.Flags
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	// Delay mounting the filesystem read-only if we need to do further
 | 
						// Delay mounting the filesystem read-only if we need to do further
 | 
				
			||||||
	// operations on it. We need to set up files in "/dev" and tmpfs mounts may
 | 
						// operations on it. We need to set up files in "/dev", and other tmpfs
 | 
				
			||||||
	// need to be chmod-ed after mounting. The mount will be remounted ro later
 | 
						// mounts may need to be chmod-ed after mounting. These mounts will be
 | 
				
			||||||
	// in finalizeRootfs() if necessary.
 | 
						// remounted ro later in finalizeRootfs(), if necessary.
 | 
				
			||||||
	if libcontainerUtils.CleanPath(m.Destination) == "/dev" || m.Device == "tmpfs" {
 | 
						if m.Device == "tmpfs" || utils.CleanPath(m.Destination) == "/dev" {
 | 
				
			||||||
		flags &= ^unix.MS_RDONLY
 | 
							flags &= ^unix.MS_RDONLY
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							@@ -593,7 +593,7 @@ github.com/onsi/gomega/matchers/support/goraph/util
 | 
				
			|||||||
github.com/onsi/gomega/types
 | 
					github.com/onsi/gomega/types
 | 
				
			||||||
# github.com/opencontainers/go-digest v1.0.0 => github.com/opencontainers/go-digest v1.0.0
 | 
					# github.com/opencontainers/go-digest v1.0.0 => github.com/opencontainers/go-digest v1.0.0
 | 
				
			||||||
github.com/opencontainers/go-digest
 | 
					github.com/opencontainers/go-digest
 | 
				
			||||||
# github.com/opencontainers/runc v1.0.2 => github.com/opencontainers/runc v1.0.2
 | 
					# github.com/opencontainers/runc v1.0.3 => github.com/opencontainers/runc v1.0.3
 | 
				
			||||||
## explicit
 | 
					## explicit
 | 
				
			||||||
github.com/opencontainers/runc/libcontainer
 | 
					github.com/opencontainers/runc/libcontainer
 | 
				
			||||||
github.com/opencontainers/runc/libcontainer/apparmor
 | 
					github.com/opencontainers/runc/libcontainer/apparmor
 | 
				
			||||||
@@ -2633,7 +2633,7 @@ sigs.k8s.io/yaml
 | 
				
			|||||||
# github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
 | 
					# github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
 | 
				
			||||||
# github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
 | 
					# github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
 | 
				
			||||||
# github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
 | 
					# github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
 | 
				
			||||||
# github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.2
 | 
					# github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.3
 | 
				
			||||||
# github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
 | 
					# github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
 | 
				
			||||||
# github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.8.2
 | 
					# github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.8.2
 | 
				
			||||||
# github.com/opentracing/opentracing-go => github.com/opentracing/opentracing-go v1.1.0
 | 
					# github.com/opentracing/opentracing-go => github.com/opentracing/opentracing-go v1.1.0
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user