diff --git a/pkg/sentry/kernel/pidfd.go b/pkg/sentry/kernel/pidfd.go index 124d5831b9..1330310003 100644 --- a/pkg/sentry/kernel/pidfd.go +++ b/pkg/sentry/kernel/pidfd.go @@ -88,7 +88,7 @@ func (f *pidFD) Epollable() bool { // RegisterFileAsyncHandler implements vfs.FileDescriptionImpl.RegisterFileAsyncHandler. func (f *pidFD) RegisterFileAsyncHandler(fd *vfs.FileDescription) error { - return linuxerr.ENOTTY + return linuxerr.EINVAL } // UnregisterFileAsyncHandler implements vfs.FileDescriptionImpl.UnregisterFileAsyncHandler. diff --git a/test/syscalls/linux/pidfd_test.cc b/test/syscalls/linux/pidfd_test.cc index f45e725b4b..a9d695d887 100644 --- a/test/syscalls/linux/pidfd_test.cc +++ b/test/syscalls/linux/pidfd_test.cc @@ -1200,8 +1200,16 @@ TEST(PidfdTest, FasyncIsUnsupported) { ASSERT_THAT(fcntl(pidfd.get(), F_SETFL, flags | FASYNC), SyscallSucceeds()); int who = getpid(); + int want_errno = EINVAL; + if (!IsRunningOnGvisor()) { + KernelVersion version = ASSERT_NO_ERRNO_AND_VALUE(GetKernelVersion()); + if (version.major < 6 || (version.major == 6 && version.minor < 9)) { + want_errno = ENOTTY; + } + } + EXPECT_THAT(ioctl(pidfd.get(), FIOSETOWN, &who), - SyscallFailsWithErrno(ENOTTY)); + SyscallFailsWithErrno(want_errno)); } } // namespace