Re: [patch/rfc] Make poll/select report error (POLLNVAL and EBADF)for unsupported files

From: Eric Dumazet
Date: Mon Feb 15 2010 - 12:42:49 EST


Le dimanche 14 fÃvrier 2010 Ã 14:27 -0800, Davide Libenzi a Ãcrit :
> Currently poll and select consider a non poll-supported file as one with
> full event mask set, instead of reporting proper error to the caller.
> This behavior can fool the caller of proper functionality being returned,
> while instead no valid event was processed/read from the device.
> This came out linked to this bug report:
>
> http://bugzilla.kernel.org/show_bug.cgi?id=15272
>
> IMHO, it'd be more adequate to report proper error code, for files that do
> not support f_op->poll(), but then I am also not sure how much breakage
> can this bring to existing (already broken "in just the right way")
> applications.
> Untested, discussion-only, patch.
>
>
> Signed-off-by: Davide Libenzi <davidel@xxxxxxxxxxxxxxx>
>
>
> - Davide

Hmm, according to POSIX :

The poll() function shall support regular files, terminal and
pseudo-terminal devices, FIFOs, pipes, sockets ...

Regular files shall always poll TRUE for reading and writing.


So unless I missed something, this patch could break some conformant
applications.

In particular, if an application is polling() on stdin (usually a tty),
and other 'files', what's happening if we do :

cat replay_file | application

Either it wont read stdin, or application exits without reading its
input.



--
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/