Regular files are always ready for I/O, no need to poll on them.
diff --git a/server/fd.c b/server/fd.c
index 8e9237c..c4c4445 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -1347,9 +1347,13 @@
/* default signaled() routine for objects that poll() on an fd */
int default_fd_signaled( struct object *obj, struct thread *thread )
{
+ int events, ret;
struct fd *fd = get_obj_fd( obj );
- int events = fd->fd_ops->get_poll_events( fd );
- int ret = check_fd_events( fd, events ) != 0;
+
+ if (fd->inode) return 1; /* regular files are always signaled */
+
+ events = fd->fd_ops->get_poll_events( fd );
+ ret = check_fd_events( fd, events ) != 0;
if (ret)
set_fd_events( fd, 0 ); /* stop waiting on select() if we are signaled */