Re: [RFC][PATCH 0/4] Check O_* flags set with fcntl() on anon_inodefiles.

From: Al Viro
Date: Sat Feb 13 2010 - 22:55:36 EST


On Sat, Feb 13, 2010 at 04:27:43PM -0800, Matt Helsley wrote:
> anon_inode interfaces often do not support flags that can be set
> by fcntl(). Right now using fcntl() to set these flags falsely
> reports success for things like O_ASYNC yet SIGIO is not delivered.
>
> I relied on the flags allowed by the syscalls that create
> these files to determine the flags that are allowed to be set by
> fcntl().
>
> Each patch checks flags for one anonymous inode interface:
>
> [PATCH 1/4] signalfd
> [PATCH 2/4] timerfd
> [PATCH 3/4] epoll
> [PATCH 4/4] eventfd
>
> I did not check the perf, kvm-vm, or kvm-vcpu uses of anon_inodes.

Er... O_ASYNC is silently ignored for regular files as well, so any
userland code that tries to rely on fcntl() rejecting it is and always
had been badly b0rken.
--
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/