mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
cleanup: extract the kernel from context
Change-Id: I94704a90beebb53164325e0cce1fcb9a0b97d65c PiperOrigin-RevId: 230817308
This commit is contained in:
@@ -21,7 +21,6 @@ go_library(
|
||||
"//pkg/sentry/fs",
|
||||
"//pkg/sentry/fs/fsutil",
|
||||
"//pkg/sentry/fs/tmpfs",
|
||||
"//pkg/sentry/kernel",
|
||||
"//pkg/sentry/kernel/time",
|
||||
"//pkg/sentry/memmap",
|
||||
"//pkg/sentry/platform",
|
||||
|
||||
@@ -23,7 +23,6 @@ import (
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs/fsutil"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs/tmpfs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/memmap"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/usage"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/usermem"
|
||||
@@ -114,11 +113,7 @@ func (a *Area) ConfigureMMap(ctx context.Context, file *fs.File, opts *memmap.MM
|
||||
opts.MaxPerms = opts.MaxPerms.Intersect(a.perms)
|
||||
|
||||
if a.tmpfsFile == nil {
|
||||
k := kernel.KernelFromContext(ctx)
|
||||
if k == nil {
|
||||
return syserror.ENOMEM
|
||||
}
|
||||
tmpfsInodeOps := tmpfs.NewInMemoryFile(ctx, usage.Tmpfs, fs.UnstableAttr{}, k)
|
||||
tmpfsInodeOps := tmpfs.NewInMemoryFile(ctx, usage.Tmpfs, fs.UnstableAttr{})
|
||||
tmpfsInode := fs.NewInode(tmpfsInodeOps, fs.NewPseudoMountSource(), fs.StableAttr{})
|
||||
dirent := fs.NewDirent(tmpfsInode, namePrefix+"/"+a.name)
|
||||
tmpfsFile, err := tmpfsInode.GetFile(ctx, dirent, fs.FileFlags{Read: true, Write: true})
|
||||
|
||||
@@ -25,7 +25,6 @@ go_library(
|
||||
"//pkg/sentry/fs/fsutil",
|
||||
"//pkg/sentry/fs/ramfs",
|
||||
"//pkg/sentry/fs/tmpfs",
|
||||
"//pkg/sentry/kernel",
|
||||
"//pkg/sentry/memmap",
|
||||
"//pkg/sentry/mm",
|
||||
"//pkg/sentry/platform",
|
||||
|
||||
@@ -24,7 +24,6 @@ import (
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs/binder"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs/ramfs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs/tmpfs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/usermem"
|
||||
)
|
||||
|
||||
@@ -77,7 +76,7 @@ func New(ctx context.Context, msrc *fs.MountSource, binderEnabled bool, ashmemEn
|
||||
"random": newCharacterDevice(newRandomDevice(ctx, fs.RootOwner, 0444), msrc),
|
||||
"urandom": newCharacterDevice(newRandomDevice(ctx, fs.RootOwner, 0444), msrc),
|
||||
|
||||
"shm": tmpfs.NewDir(ctx, nil, fs.RootOwner, fs.FilePermsFromMode(0777), msrc, kernel.KernelFromContext(ctx)),
|
||||
"shm": tmpfs.NewDir(ctx, nil, fs.RootOwner, fs.FilePermsFromMode(0777), msrc),
|
||||
|
||||
// A devpts is typically mounted at /dev/pts to provide
|
||||
// pseudoterminal support. Place an empty directory there for
|
||||
|
||||
@@ -42,7 +42,6 @@ go_test(
|
||||
deps = [
|
||||
"//pkg/sentry/context",
|
||||
"//pkg/sentry/fs",
|
||||
"//pkg/sentry/kernel",
|
||||
"//pkg/sentry/kernel/contexttest",
|
||||
"//pkg/sentry/usage",
|
||||
"//pkg/sentry/usermem",
|
||||
|
||||
@@ -20,7 +20,6 @@ import (
|
||||
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/context"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel/contexttest"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/usage"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/usermem"
|
||||
@@ -28,7 +27,7 @@ import (
|
||||
|
||||
func newFileInode(ctx context.Context) *fs.Inode {
|
||||
m := fs.NewCachingMountSource(&Filesystem{}, fs.MountSourceFlags{})
|
||||
iops := NewInMemoryFile(ctx, usage.Tmpfs, fs.WithCurrentTime(ctx, fs.UnstableAttr{}), kernel.KernelFromContext(ctx))
|
||||
iops := NewInMemoryFile(ctx, usage.Tmpfs, fs.WithCurrentTime(ctx, fs.UnstableAttr{}))
|
||||
return fs.NewInode(iops, m, fs.StableAttr{
|
||||
DeviceID: tmpfsDevice.DeviceID(),
|
||||
InodeID: tmpfsDevice.NextIno(),
|
||||
|
||||
@@ -21,7 +21,6 @@ import (
|
||||
"gvisor.googlesource.com/gvisor/pkg/abi/linux"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/context"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/fs"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel"
|
||||
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel/auth"
|
||||
)
|
||||
|
||||
@@ -133,5 +132,5 @@ func (f *Filesystem) Mount(ctx context.Context, device string, flags fs.MountSou
|
||||
msrc := fs.NewCachingMountSource(f, flags)
|
||||
|
||||
// Construct the tmpfs root.
|
||||
return NewDir(ctx, nil, owner, perms, msrc, kernel.KernelFromContext(ctx)), nil
|
||||
return NewDir(ctx, nil, owner, perms, msrc), nil
|
||||
}
|
||||
|
||||
@@ -89,10 +89,10 @@ type fileInodeOperations struct {
|
||||
var _ fs.InodeOperations = (*fileInodeOperations)(nil)
|
||||
|
||||
// NewInMemoryFile returns a new file backed by p.Memory().
|
||||
func NewInMemoryFile(ctx context.Context, usage usage.MemoryKind, uattr fs.UnstableAttr, k *kernel.Kernel) fs.InodeOperations {
|
||||
func NewInMemoryFile(ctx context.Context, usage usage.MemoryKind, uattr fs.UnstableAttr) fs.InodeOperations {
|
||||
return &fileInodeOperations{
|
||||
attr: uattr,
|
||||
kernel: k,
|
||||
kernel: kernel.KernelFromContext(ctx),
|
||||
memUsage: usage,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,10 +81,10 @@ type Dir struct {
|
||||
var _ fs.InodeOperations = (*Dir)(nil)
|
||||
|
||||
// NewDir returns a new directory.
|
||||
func NewDir(ctx context.Context, contents map[string]*fs.Inode, owner fs.FileOwner, perms fs.FilePermissions, msrc *fs.MountSource, kernel *kernel.Kernel) *fs.Inode {
|
||||
func NewDir(ctx context.Context, contents map[string]*fs.Inode, owner fs.FileOwner, perms fs.FilePermissions, msrc *fs.MountSource) *fs.Inode {
|
||||
d := &Dir{
|
||||
ramfsDir: ramfs.NewDir(ctx, contents, owner, perms),
|
||||
kernel: kernel,
|
||||
kernel: kernel.KernelFromContext(ctx),
|
||||
}
|
||||
|
||||
// Manually set the CreateOps.
|
||||
@@ -208,7 +208,7 @@ func (d *Dir) SetTimestamps(ctx context.Context, i *fs.Inode, ts fs.TimeSpec) er
|
||||
func (d *Dir) newCreateOps() *ramfs.CreateOps {
|
||||
return &ramfs.CreateOps{
|
||||
NewDir: func(ctx context.Context, dir *fs.Inode, perms fs.FilePermissions) (*fs.Inode, error) {
|
||||
return NewDir(ctx, nil, fs.FileOwnerFromContext(ctx), perms, dir.MountSource, d.kernel), nil
|
||||
return NewDir(ctx, nil, fs.FileOwnerFromContext(ctx), perms, dir.MountSource), nil
|
||||
},
|
||||
NewFile: func(ctx context.Context, dir *fs.Inode, perms fs.FilePermissions) (*fs.Inode, error) {
|
||||
uattr := fs.WithCurrentTime(ctx, fs.UnstableAttr{
|
||||
@@ -217,7 +217,7 @@ func (d *Dir) newCreateOps() *ramfs.CreateOps {
|
||||
// Always start unlinked.
|
||||
Links: 0,
|
||||
})
|
||||
iops := NewInMemoryFile(ctx, usage.Tmpfs, uattr, d.kernel)
|
||||
iops := NewInMemoryFile(ctx, usage.Tmpfs, uattr)
|
||||
return fs.NewInode(iops, dir.MountSource, fs.StableAttr{
|
||||
DeviceID: tmpfsDevice.DeviceID(),
|
||||
InodeID: tmpfsDevice.NextIno(),
|
||||
|
||||
Reference in New Issue
Block a user