summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2021-10-27 00:04:06 +0000
committergVisor bot <gvisor-bot@google.com>2021-10-27 00:04:06 +0000
commit4a42e7524518af56e34a922ddc717e963594f9a3 (patch)
tree3eeeb3418cae706f2d0989ecf5e09634f0781c74
parent1295a9562a49567c519b5115afd836297a0a73f0 (diff)
parent7b8f19dc76a9fecbf4d2e5f43a47c6d47d53e100 (diff)
Merge release-20211019.0-44-g7b8f19dc7 (automated)
-rw-r--r--pkg/sentry/fsimpl/mqfs/registry.go5
-rw-r--r--pkg/sentry/fsimpl/overlay/overlay.go5
-rw-r--r--pkg/sentry/kernel/kernel.go17
-rw-r--r--pkg/sentry/vfs/mount.go8
-rw-r--r--pkg/sentry/vfs/vfs.go7
-rw-r--r--runsc/boot/loader.go6
-rw-r--r--runsc/boot/vfs.go5
7 files changed, 11 insertions, 42 deletions
diff --git a/pkg/sentry/fsimpl/mqfs/registry.go b/pkg/sentry/fsimpl/mqfs/registry.go
index e470ffadc..69182965c 100644
--- a/pkg/sentry/fsimpl/mqfs/registry.go
+++ b/pkg/sentry/fsimpl/mqfs/registry.go
@@ -71,10 +71,7 @@ func NewRegistryImpl(ctx context.Context, vfsObj *vfs.VirtualFilesystem, creds *
var dentry kernfs.Dentry
dentry.InitRoot(&fs.Filesystem, fs.newRootInode(ctx, creds))
- mount, err := vfsObj.NewDisconnectedMount(vfsfs, dentry.VFSDentry(), &vfs.MountOptions{})
- if err != nil {
- return nil, err
- }
+ mount := vfsObj.NewDisconnectedMount(vfsfs, dentry.VFSDentry(), &vfs.MountOptions{})
return &RegistryImpl{
root: &dentry,
diff --git a/pkg/sentry/fsimpl/overlay/overlay.go b/pkg/sentry/fsimpl/overlay/overlay.go
index 46d9f1f1d..327c37477 100644
--- a/pkg/sentry/fsimpl/overlay/overlay.go
+++ b/pkg/sentry/fsimpl/overlay/overlay.go
@@ -314,10 +314,7 @@ func clonePrivateMount(vfsObj *vfs.VirtualFilesystem, vd vfs.VirtualDentry, forc
if forceReadOnly {
opts.ReadOnly = true
}
- newmnt, err := vfsObj.NewDisconnectedMount(oldmnt.Filesystem(), vd.Dentry(), &opts)
- if err != nil {
- return vfs.VirtualDentry{}, err
- }
+ newmnt := vfsObj.NewDisconnectedMount(oldmnt.Filesystem(), vd.Dentry(), &opts)
// Take a reference on the dentry which will be owned by the returned
// VirtualDentry.
d := vd.Dentry()
diff --git a/pkg/sentry/kernel/kernel.go b/pkg/sentry/kernel/kernel.go
index d4851ccda..83299a9fb 100644
--- a/pkg/sentry/kernel/kernel.go
+++ b/pkg/sentry/kernel/kernel.go
@@ -418,10 +418,7 @@ func (k *Kernel) Init(args InitKernelArgs) error {
return fmt.Errorf("failed to create pipefs filesystem: %v", err)
}
defer pipeFilesystem.DecRef(ctx)
- pipeMount, err := k.vfs.NewDisconnectedMount(pipeFilesystem, nil, &vfs.MountOptions{})
- if err != nil {
- return fmt.Errorf("failed to create pipefs mount: %v", err)
- }
+ pipeMount := k.vfs.NewDisconnectedMount(pipeFilesystem, nil, &vfs.MountOptions{})
k.pipeMount = pipeMount
tmpfsFilesystem, tmpfsRoot, err := tmpfs.NewFilesystem(ctx, &k.vfs, auth.NewRootCredentials(k.rootUserNamespace))
@@ -430,22 +427,14 @@ func (k *Kernel) Init(args InitKernelArgs) error {
}
defer tmpfsFilesystem.DecRef(ctx)
defer tmpfsRoot.DecRef(ctx)
- shmMount, err := k.vfs.NewDisconnectedMount(tmpfsFilesystem, tmpfsRoot, &vfs.MountOptions{})
- if err != nil {
- return fmt.Errorf("failed to create tmpfs mount: %v", err)
- }
- k.shmMount = shmMount
+ k.shmMount = k.vfs.NewDisconnectedMount(tmpfsFilesystem, tmpfsRoot, &vfs.MountOptions{})
socketFilesystem, err := sockfs.NewFilesystem(&k.vfs)
if err != nil {
return fmt.Errorf("failed to create sockfs filesystem: %v", err)
}
defer socketFilesystem.DecRef(ctx)
- socketMount, err := k.vfs.NewDisconnectedMount(socketFilesystem, nil, &vfs.MountOptions{})
- if err != nil {
- return fmt.Errorf("failed to create sockfs mount: %v", err)
- }
- k.socketMount = socketMount
+ k.socketMount = k.vfs.NewDisconnectedMount(socketFilesystem, nil, &vfs.MountOptions{})
k.socketsVFS2 = make(map[*vfs.FileDescription]*SocketRecord)
diff --git a/pkg/sentry/vfs/mount.go b/pkg/sentry/vfs/mount.go
index 05a416775..9ab9a8fca 100644
--- a/pkg/sentry/vfs/mount.go
+++ b/pkg/sentry/vfs/mount.go
@@ -178,12 +178,12 @@ func (vfs *VirtualFilesystem) NewMountNamespace(ctx context.Context, creds *auth
// (which may be nil). The new Mount is not associated with any MountNamespace
// and is not connected to any other Mounts. References are taken on fs and
// root.
-func (vfs *VirtualFilesystem) NewDisconnectedMount(fs *Filesystem, root *Dentry, opts *MountOptions) (*Mount, error) {
+func (vfs *VirtualFilesystem) NewDisconnectedMount(fs *Filesystem, root *Dentry, opts *MountOptions) *Mount {
fs.IncRef()
if root != nil {
root.IncRef()
}
- return newMount(vfs, fs, root, nil /* mntns */, opts), nil
+ return newMount(vfs, fs, root, nil /* mntns */, opts)
}
// MountDisconnected creates a Filesystem configured by the given arguments,
@@ -201,9 +201,7 @@ func (vfs *VirtualFilesystem) MountDisconnected(ctx context.Context, creds *auth
if err != nil {
return nil, err
}
- defer root.DecRef(ctx)
- defer fs.DecRef(ctx)
- return vfs.NewDisconnectedMount(fs, root, opts)
+ return newMount(vfs, fs, root, nil /* mntns */, opts), nil
}
// ConnectMountAt connects mnt at the path represented by target.
diff --git a/pkg/sentry/vfs/vfs.go b/pkg/sentry/vfs/vfs.go
index 1b2a668c0..9c1ee549a 100644
--- a/pkg/sentry/vfs/vfs.go
+++ b/pkg/sentry/vfs/vfs.go
@@ -150,12 +150,7 @@ func (vfs *VirtualFilesystem) Init(ctx context.Context) error {
}
anonfs.vfsfs.Init(vfs, &anonFilesystemType{}, &anonfs)
defer anonfs.vfsfs.DecRef(ctx)
- anonMount, err := vfs.NewDisconnectedMount(&anonfs.vfsfs, nil, &MountOptions{})
- if err != nil {
- // We should not be passing any MountOptions that would cause
- // construction of this mount to fail.
- panic(fmt.Sprintf("VirtualFilesystem.Init: anonfs mount failed: %v", err))
- }
+ anonMount := vfs.NewDisconnectedMount(&anonfs.vfsfs, nil, &MountOptions{})
vfs.anonMount = anonMount
return nil
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go
index dbb02fdf4..247f0d54a 100644
--- a/runsc/boot/loader.go
+++ b/runsc/boot/loader.go
@@ -411,11 +411,7 @@ func New(args Args) (*Loader, error) {
return nil, fmt.Errorf("failed to create hostfs filesystem: %w", err)
}
defer hostFilesystem.DecRef(k.SupervisorContext())
- hostMount, err := k.VFS().NewDisconnectedMount(hostFilesystem, nil, &vfs.MountOptions{})
- if err != nil {
- return nil, fmt.Errorf("failed to create hostfs mount: %w", err)
- }
- k.SetHostMount(hostMount)
+ k.SetHostMount(k.VFS().NewDisconnectedMount(hostFilesystem, nil, &vfs.MountOptions{}))
}
eid := execID{cid: args.ID}
diff --git a/runsc/boot/vfs.go b/runsc/boot/vfs.go
index 9f0d1ae36..4d0cfc94a 100644
--- a/runsc/boot/vfs.go
+++ b/runsc/boot/vfs.go
@@ -769,10 +769,7 @@ func (c *containerMounter) mountSharedSubmountVFS2(ctx context.Context, conf *co
if err != nil {
return nil, err
}
- newMnt, err := c.k.VFS().NewDisconnectedMount(source.vfsMount.Filesystem(), source.vfsMount.Root(), opts)
- if err != nil {
- return nil, err
- }
+ newMnt := c.k.VFS().NewDisconnectedMount(source.vfsMount.Filesystem(), source.vfsMount.Root(), opts)
defer newMnt.DecRef(ctx)
root := mns.Root()