Re: UDP recvmsg blocks after select(), 2.6 bug?

From: David S. Miller
Date: Thu Oct 07 2004 - 20:46:25 EST


On Thu, 07 Oct 2004 15:49:17 -0600
Chris Friesen <cfriesen@xxxxxxxxxxxxxxxxxx> wrote:

> In this case, select() returns with the socket readable, we call recvmsg() and
> discover the message is corrupt. At this point we throw away the corrupt
> message, so we now have no data waiting to be received. We return EAGAIN, and
> userspace goes merrily on its way, handling anything else in its loop, then
> going back to select().

Incorrect. When the user specifies blocking on the file descriptor
we must give it what it asked for. -EAGAIN on a blocking file descriptor
is always a bug, in all situations, that's what this code used to do and we
fixed it because it's a bug.

It goes "merrily on its way" if it marks the file descriptor as non-blocking.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/