diff options
-rw-r--r-- | pkg/sentry/syscalls/linux/linux64.go | 2 | ||||
-rw-r--r-- | test/syscalls/linux/stat.cc | 14 |
2 files changed, 10 insertions, 6 deletions
diff --git a/pkg/sentry/syscalls/linux/linux64.go b/pkg/sentry/syscalls/linux/linux64.go index 2a41e8176..7f18b1ac8 100644 --- a/pkg/sentry/syscalls/linux/linux64.go +++ b/pkg/sentry/syscalls/linux/linux64.go @@ -379,7 +379,7 @@ var AMD64 = &kernel.SyscallTable{ 326: syscalls.ErrorWithEvent("copy_file_range", syscall.ENOSYS, "", nil), 327: syscalls.Undocumented("preadv2", Preadv2), 328: syscalls.Undocumented("pwritev2", Pwritev2), - 397: syscalls.Undocumented("statx", Statx), + 332: syscalls.Supported("statx", Statx), }, Emulate: map[usermem.Addr]uintptr{ diff --git a/test/syscalls/linux/stat.cc b/test/syscalls/linux/stat.cc index 0e914215d..510f7bee5 100644 --- a/test/syscalls/linux/stat.cc +++ b/test/syscalls/linux/stat.cc @@ -558,7 +558,7 @@ TEST(SimpleStatTest, AnonDeviceAllocatesUniqueInodesAcrossSaveRestore) { #ifndef SYS_statx #if defined(__x86_64__) -#define SYS_statx 397 +#define SYS_statx 332 #else #error "Unknown architecture" #endif @@ -607,7 +607,8 @@ int statx(int dirfd, const char *pathname, int flags, unsigned int mask, } TEST_F(StatTest, StatxAbsPath) { - SKIP_IF(statx(-1, nullptr, 0, 0, 0) < 0 && errno == ENOSYS); + SKIP_IF(!IsRunningOnGvisor() && statx(-1, nullptr, 0, 0, 0) < 0 && + errno == ENOSYS); struct kernel_statx stx; EXPECT_THAT(statx(-1, test_file_name_.c_str(), 0, STATX_ALL, &stx), @@ -616,7 +617,8 @@ TEST_F(StatTest, StatxAbsPath) { } TEST_F(StatTest, StatxRelPathDirFD) { - SKIP_IF(statx(-1, nullptr, 0, 0, 0) < 0 && errno == ENOSYS); + SKIP_IF(!IsRunningOnGvisor() && statx(-1, nullptr, 0, 0, 0) < 0 && + errno == ENOSYS); struct kernel_statx stx; auto const dirfd = @@ -629,7 +631,8 @@ TEST_F(StatTest, StatxRelPathDirFD) { } TEST_F(StatTest, StatxRelPathCwd) { - SKIP_IF(statx(-1, nullptr, 0, 0, 0) < 0 && errno == ENOSYS); + SKIP_IF(!IsRunningOnGvisor() && statx(-1, nullptr, 0, 0, 0) < 0 && + errno == ENOSYS); ASSERT_THAT(chdir(GetAbsoluteTestTmpdir().c_str()), SyscallSucceeds()); auto filename = std::string(Basename(test_file_name_)); @@ -640,7 +643,8 @@ TEST_F(StatTest, StatxRelPathCwd) { } TEST_F(StatTest, StatxEmptyPath) { - SKIP_IF(statx(-1, nullptr, 0, 0, 0) < 0 && errno == ENOSYS); + SKIP_IF(!IsRunningOnGvisor() && statx(-1, nullptr, 0, 0, 0) < 0 && + errno == ENOSYS); const auto fd = ASSERT_NO_ERRNO_AND_VALUE(Open(test_file_name_, O_RDONLY)); struct kernel_statx stx; |