Fix select(2) exceptfds handling of FIFOs and pipes
authorvisa <visa@openbsd.org>
Wed, 8 Dec 2021 13:03:52 +0000 (13:03 +0000)
committervisa <visa@openbsd.org>
Wed, 8 Dec 2021 13:03:52 +0000 (13:03 +0000)
commit8013d39c8f498beee8b0526f6f29524dac34cca7
treebc7b506f7717d1f2f3fc7513a1df09344316b0b9
parent968fd139a8b38970f24d7b9a2f8e332d5963dab9
Fix select(2) exceptfds handling of FIFOs and pipes

Prevent select(2) from indicating an exceptional condition when the
other end of a FIFO or pipe is closed.

Originally, select(2) returned an exceptfds event only with a pty or
socket that has out-of-band data pending. millert@ says that OpenBSD
diverged from this by accident when poll(2) and select(2) were changed
to use the same backend code in year 2003.

OK millert@
sys/kern/sys_generic.c
sys/kern/sys_pipe.c
sys/miscfs/fifofs/fifo_vnops.c
sys/sys/event.h