From 322c0ca0412eb9ab9a2623e9e5a3e726b12d8531 Mon Sep 17 00:00:00 2001 From: Shailend Chand Date: Tue, 5 May 2026 23:57:10 -0700 Subject: [PATCH] pidfds: Return EINVAL for fasync Matches latest Linux behavior. The native pidfd test has also been deflaked. PiperOrigin-RevId: 911141375 --- pkg/sentry/kernel/pidfd.go | 2 +- test/syscalls/linux/pidfd_test.cc | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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