Don't eat error from epoll_ctl EPOLL_CTL_ADD

Docker maps stdin to `/dev/null` which doesn't support epoll. Host FD
was ignoring the error and suceeding the epoll_ctl call from the
container, giving false impressing that epoll would be notified.

This required plumbing failure to all waiter.Waitable.EventRegister
callers and implementers.

Closes #6795

PiperOrigin-RevId: 414797621
This commit is contained in:
Fabricio Voznika
2021-12-07 12:36:00 -08:00
committed by gVisor bot
parent d62190f8b5
commit 9768009a79
54 changed files with 359 additions and 141 deletions
+2 -1
View File
@@ -103,8 +103,9 @@ func (mfd *masterFileDescription) Release(ctx context.Context) {
}
// EventRegister implements waiter.Waitable.EventRegister.
func (mfd *masterFileDescription) EventRegister(e *waiter.Entry) {
func (mfd *masterFileDescription) EventRegister(e *waiter.Entry) error {
mfd.t.ld.masterWaiter.EventRegister(e)
return nil
}
// EventUnregister implements waiter.Waitable.EventUnregister.
+2 -1
View File
@@ -112,8 +112,9 @@ var _ vfs.FileDescriptionImpl = (*replicaFileDescription)(nil)
func (rfd *replicaFileDescription) Release(ctx context.Context) {}
// EventRegister implements waiter.Waitable.EventRegister.
func (rfd *replicaFileDescription) EventRegister(e *waiter.Entry) {
func (rfd *replicaFileDescription) EventRegister(e *waiter.Entry) error {
rfd.inode.t.ld.replicaWaiter.EventRegister(e)
return nil
}
// EventUnregister implements waiter.Waitable.EventUnregister.