lkml.org 
[lkml]   [2009]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
FromKOSAKI Motohiro <>
Subjectpoll never return EBADF?
DateTue, 26 May 2009 18:09:32 +0900 (JST)
Hi

I have one stupid question.

"man poll" describe this error code.

>ERRORS
> EBADF An invalid file descriptor was given in one of the sets.

but current kernel implementation ignore invalid file descriptor,
not return EBADF.


================ cut code ========================================
static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)
{
unsigned int mask;
int fd;
mask = 0;
fd = pollfd->fd;
if (fd >= 0) { //// here
int fput_needed;
struct file * file;
file = fget_light(fd, &fput_needed);
mask = POLLNVAL;
if (file != NULL) { //// and here
mask = DEFAULT_POLLMASK;
if (file->f_op && file->f_op->poll)
mask = file->f_op->poll(file, pwait);
/* Mask out unneeded events. */
mask &= pollfd->events | POLLERR | POLLHUP;
fput_light(file, fput_needed);
}
}
================ end code ========================================
In the other hand, SUSv3 talk about

> POLLNVAL
> The specified fd value is invalid. This flag is only valid in the
> revents member; it shall ignored in the events member.

and

> If the value of fd is less than 0, events shall be ignored, and revents
> shall be set to 0 in that entry on return from poll().

but, no desribe EBADF.
(see http://www.opengroup.org/onlinepubs/009695399/functions/poll.html)

So, I think the implementation is correct.


Why don't we remove EBADF description?





\
 
 \ /
  Last update: 2009-05-26 11:13    [from the cache]
©2003-2010