Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

poll never return EBADF?

49 views
Skip to first unread message

KOSAKI Motohiro

unread,
May 26, 2009, 5:09:53 AM5/26/09
to LKML, Michael Kerrisk, linu...@vger.kernel.org, kosaki....@jp.fujitsu.com
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?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Michael Kerrisk

unread,
Jun 2, 2009, 12:51:52 AM6/2/09
to KOSAKI Motohiro, LKML, linu...@vger.kernel.org
Hello Motohiro,

On Tue, May 26, 2009 at 11:09 AM, KOSAKI Motohiro
<kosaki....@jp.fujitsu.com> wrote:
> Hi
>
> I have one stupid question.

It doesn't look stupid to me...

> "man poll" describe this error code.
>
>>ERRORS
>> � � � EBADF �An invalid file descriptor was given in one of the sets.

This text seems to have been added in man-pages-1.39 (around 2000),
but with no explanation or note on authorship. I suspect someone was
confused.

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

Which is what I understand it should do.

Exactly.

> but, no desribe EBADF.
> (see http://www.opengroup.org/onlinepubs/009695399/functions/poll.html)
>
> So, I think the implementation is correct.

Agreed.

> Why don't we remove EBADF description?

Yes, that seems corrrrect for me. I've removed it for the next release (3.22).

Cheers,

Michael


--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html

0 new messages