summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRidwan Sharif <ridwanmsharif@google.com>2020-06-23 14:25:38 -0400
committerRidwan Sharif <ridwanmsharif@google.com>2020-06-25 15:46:30 -0400
commit2828806fb015bbbec0f4a48670d1eb048f21099a (patch)
tree303d4edf717f3cf69f5aa44a4289675b08f62bab
parenta63db7d90303280de9431f369e5a9c8db351a9e8 (diff)
Test that the fuse device can be opened
-rw-r--r--runsc/boot/vfs.go5
-rw-r--r--test/syscalls/linux/dev.cc29
2 files changed, 11 insertions, 23 deletions
diff --git a/runsc/boot/vfs.go b/runsc/boot/vfs.go
index 0f5ad1e05..b68117867 100644
--- a/runsc/boot/vfs.go
+++ b/runsc/boot/vfs.go
@@ -80,9 +80,10 @@ func registerFilesystems(ctx context.Context, vfsObj *vfs.VirtualFilesystem, cre
}
if err := ttydev.Register(vfsObj); err != nil {
return fmt.Errorf("registering ttydev: %w", err)
+ }
if err := fuse.Register(vfsObj); err != nil {
- return fmt.Errorf("registering /dev/fuse: %w", err)
+ return fmt.Errorf("registering fusedev: %w", err)
}
if err := tundev.Register(vfsObj); err != nil {
return fmt.Errorf("registering tundev: %v", err)
@@ -106,7 +107,7 @@ func registerFilesystems(ctx context.Context, vfsObj *vfs.VirtualFilesystem, cre
return fmt.Errorf("creating tundev devtmpfs files: %v", err)
}
if err := fuse.CreateDevtmpfsFile(ctx, a); err != nil {
- return fmt.Errorf("creating devtmpfs fuse device file: %w", err)
+ return fmt.Errorf("creating fusedev devtmpfs files: %w", err)
}
return nil
}
diff --git a/test/syscalls/linux/dev.cc b/test/syscalls/linux/dev.cc
index 6be173c14..3c88c4cbd 100644
--- a/test/syscalls/linux/dev.cc
+++ b/test/syscalls/linux/dev.cc
@@ -146,34 +146,21 @@ TEST(DevTest, WriteDevFull) {
EXPECT_THAT(WriteFd(fd.get(), "a", 1), SyscallFailsWithErrno(ENOSPC));
}
-TEST(DevTest, ReadDevFuse) {
- SKIP_IF(IsRunningWithVFS1());
-
- const FileDescriptor fd =
- ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_RDONLY));
- std::vector<char> buf(1);
- EXPECT_THAT(ReadFd(fd.get(), buf.data(), sizeof(buf)), SyscallFailsWithErrno(ENOSYS));
-}
-
-TEST(DevTest, WriteDevFuse) {
- SKIP_IF(IsRunningWithVFS1());
-
- const FileDescriptor fd =
- ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_WRONLY));
- const char* testStr = "test";
- EXPECT_THAT(WriteFd(fd.get(), testStr, sizeof(testStr)), SyscallFailsWithErrno(ENOSYS));
-}
-
TEST(DevTest, TTYExists) {
- // Run test if running on VFS1 or on Linux.
- SKIP_IF(!IsRunningWithVFS1() && IsRunningOnGvisor());
-
struct stat statbuf = {};
ASSERT_THAT(stat("/dev/tty", &statbuf), SyscallSucceeds());
// Check that it's a character device with rw-rw-rw- permissions.
EXPECT_EQ(statbuf.st_mode, S_IFCHR | 0666);
}
+TEST(DevTest, OpenDevFuse) {
+ // Note(gvisor.dev/issue/3076) This won't work in the sentry until the new
+ // device registration is complete.
+ SKIP_IF(IsRunningWithVFS1() || IsRunningOnGvisor());
+
+ ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_RDONLY));
+}
+
} // namespace
} // namespace testing