diff --git a/pkg/sentry/fsimpl/sys/sys.go b/pkg/sentry/fsimpl/sys/sys.go index b7f4dea335..e81784b3f1 100644 --- a/pkg/sentry/fsimpl/sys/sys.go +++ b/pkg/sentry/fsimpl/sys/sys.go @@ -192,10 +192,13 @@ func (fsType FilesystemType) GetFilesystem(ctx context.Context, vfsObj *vfs.Virt }) } root := fs.newDir(ctx, creds, defaultSysDirMode, map[string]kernfs.Inode{ - "block": fs.newDir(ctx, creds, defaultSysDirMode, nil), - "bus": fs.newDir(ctx, creds, defaultSysDirMode, busSub), - "class": fs.newDir(ctx, creds, defaultSysDirMode, classSub), - "dev": fs.newDir(ctx, creds, defaultSysDirMode, nil), + "block": fs.newDir(ctx, creds, defaultSysDirMode, nil), + "bus": fs.newDir(ctx, creds, defaultSysDirMode, busSub), + "class": fs.newDir(ctx, creds, defaultSysDirMode, classSub), + "dev": fs.newDir(ctx, creds, defaultSysDirMode, map[string]kernfs.Inode{ + "block": fs.newDir(ctx, creds, defaultSysDirMode, nil), + "char": fs.newDir(ctx, creds, defaultSysDirMode, nil), + }), "devices": fs.newDir(ctx, creds, defaultSysDirMode, devicesSub), "firmware": fs.newDir(ctx, creds, defaultSysDirMode, nil), "fs": fs.newDir(ctx, creds, defaultSysDirMode, fsDirChildren), diff --git a/pkg/sentry/fsimpl/sys/sys_integration_test.go b/pkg/sentry/fsimpl/sys/sys_integration_test.go index 0b7d547f6c..8978563324 100644 --- a/pkg/sentry/fsimpl/sys/sys_integration_test.go +++ b/pkg/sentry/fsimpl/sys/sys_integration_test.go @@ -103,6 +103,16 @@ func TestSysRootContainsExpectedEntries(t *testing.T) { }) } +func TestSysDevContainsBlockAndChar(t *testing.T) { + s := newTestSystem(t, "" /*pciTestDir*/) + defer s.Destroy() + pop := s.PathOpAtRoot("/dev") + s.AssertAllDirentTypes(s.ListDirents(pop), map[string]testutil.DirentType{ + "block": linux.DT_DIR, + "char": linux.DT_DIR, + }) +} + func TestCgroupMountpointExists(t *testing.T) { // Note: The mountpoint is only created if cgroups are available. s := newTestSystem(t, "" /*pciTestDir*/)