Re: [PATCH man-pages v2 2/2] openat2.2: document new openat2(2) syscall
From: Michael Kerrisk (man-pages) <hidden>
Date: 2020-03-30 09:36:50
Also in:
linux-fsdevel, linux-man, lkml
On 3/30/20 11:20 AM, Aleksa Sarai wrote:
On 2020-03-30, Michael Kerrisk (man-pages) [off-list ref] wrote:quoted
Hello Aleksa, On 2/2/20 4:19 PM, Aleksa Sarai wrote:quoted
Rather than trying to merge the new syscall documentation into open.2 (which would probably result in the man-page being incomprehensible), instead the new syscall gets its own dedicated page with links between open(2) and openat2(2) to avoid duplicating information such as the list of O_* flags or common errors. In addition to describing all of the key flags, information about the extensibility design is provided so that users can better understand why they need to pass sizeof(struct open_how) and how their programs will work across kernels. After some discussions with David Laight, I also included explicit instructions to zero the structure to avoid issues when recompiling with new headers.> Signed-off-by: Aleksa Sarai <redacted>I'm just editing this page, and have a question on one piece.quoted
+Unlike +.BR openat (2), +it is an error to provide +.BR openat2 () +with a +.I mode +which contains bits other than +.IR 0777 ,This piece appears not to be true, both from my reading of the source code, and from testing (i.e., I wrote a a small program that successfully called openat2() and created a file that had the set-UID, set-GID, and sticky bits set). Is this a bug in the implementation or a bug in the manual page text?My bad -- it's a bug in the manual. The actual check (which does work, there are selftests for this) is: if (how->mode & ~S_IALLUGO) return -EINVAL; But when writing the man page I forgot that S_IALLUGO also includes those bits. Do you want me to send an updated version or would you prefer to clean it up?
I'll clean it up. So, it should say, "bits other than 07777", right? Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/