Messages in this thread | | | Date | Wed, 21 May 2008 19:54:34 +0200 | Subject | Re: [RFC] correct flags to f_mode conversion in __dentry_open | From | Michael Kerrisk <> |
| |
Christoph Hellwig wrote: > On Sat, Mar 15, 2008 at 05:59:52PM -0400, Alan Cox wrote: >>> does 11 really mean and should it really always be mapped to (FMODE_READ >>> | FMODE_WRITE) or should it continue to get mapped to 'no permission?' >> We've always mapped 3 to "no permission" to read or write. It's a linuxism > > I've tripped over this recently aswell. It would for sure be useful > to add a sumbolic O_FOO constant for this magic value '3' and document > it in the manpage.
Late follow-up to this thread (http://thread.gmane.org/gmane.linux.kernel/653123): I propose to add the following text to the open(2) man page.
Unlike the other values that can be specified in flags, the access mode values O_RDONLY, O_WRONLY, and O_RDWR, do not specify individual bits. Rather, they define the low order two bits of flags, and are defined respectively as 0, 1, and 2. In other words, the combination O_RDONLY | O_WRONLY is a logical error, and certainly does not have the same meaning as O_RDWR. Linux reserves the special, non-standard access mode 3 (binary 11) in flags to mean: check for read and write permission on the file and return a descriptor that can't be used for reading or writing. This non-standard access mode is used by some Linux drivers to return a descriptor that is only to be used for device-specific ioctl(2) operations.
Seem okay?
Cheers,
Michael
-- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
| |