From 4cb90fceb779dbf33cfd9bcf28c66ffc737537f2 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 4 Jun 2016 23:14:46 +0200 Subject: Do not make io_select return errors on unsupported READ/WRITE mode The descriptor is valid, it is just the mode which is not available. * console-client/kbd-repeat.c (repeater_select): Drop SELECT_URG flag from `type'. Return 0 instead of EINVAL if `type' contains SELECT_WRITE. * console-client/pc-mouse (repeater_select): Likewise. * trans/mtab.c (trivfs_S_io_select): Return 0 instead of EBADF when the openmodes do not match the requested modes in `type'. * trans/new-fifo.c (io_select_common): Likewise. * trans/fifo.c (io_select_common): Likewise. * trans/null.c (trivfs_S_io_select): Likewise. * trans/streamio.c (io_select_common): Likewise. --- console-client/kbd-repeat.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'console-client/kbd-repeat.c') diff --git a/console-client/kbd-repeat.c b/console-client/kbd-repeat.c index d3a39d07..8d8c9ee8 100644 --- a/console-client/kbd-repeat.c +++ b/console-client/kbd-repeat.c @@ -94,8 +94,11 @@ repeater_select (struct protid *cred, mach_port_t reply, if (!cred) return EOPNOTSUPP; + *type &= ~SELECT_URG; + if (*type & ~SELECT_READ) - return EINVAL; + /* Error immediately available... */ + return 0; if (*type == 0) return 0; -- cgit v1.2.3