On Wed, Apr 8, 2015 at 4:00 AM, Kernel Apprentice <kernelapprentice@gmail.com> wrote:
Hello,
Hello,
Now that we have O_TMPFILE and O_BENEATH added to the openat flags, there is no space left to add more flags since the flags variable is a 32 bit int. How does one resolve this issue and extend this? A new syscall with a 64bit wide flags support?
Maybe I'm missing something, but a signed 32 bit integer variable holds a maximum value of
2,147,483,647
The highest value for the O_BENEATH flag that i could spot in the patch you linked is
0x4000000
which equals
67,108,864
so there should be plenty of room for more flags?
If the limit would be reached though I guess one could adjust the flag arguments to unsigned int types. I haven't reasearched the implications of this though. But OR'ing them for checks shouldn't yield any side effects.
By the way there's - as far as I can tell - an invalid flag value defined in octal notation:
diff --git a/arch/parisc/include/uapi/asm/fcntl.h b/arch/parisc/include/uapi/asm/fcntl.h index 34a46cbc76ed..3adadf72f929 100644 --- a/arch/parisc/include/uapi/asm/fcntl.h +++ b/arch/parisc/include/uapi/asm/fcntl.h @@ -21,6 +21,7 @@
#define O_PATH 020000000 #define __O_TMPFILE 040000000 +#define O_BENEATH 080000000 /* no / or .. in openat path */
#define F_GETLK64 8 #define F_SETLK64 9
I guess this should be 0100000000?
That value overflows an int of size 4 bytes. The important one to look at is the asm-generic one which covers most platforms where the last available value was used. diff --git a/include/uapi/asm-generic/fcntl.h b/include/uapi/asm-generic/fcntl.h index e063effe0cc1..4542bc6a2950 100644 --- a/include/uapi/asm-generic/fcntl.h +++ b/include/uapi/asm-generic/fcntl.h @@ -92,6 +92,10 @@ #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT) +#ifndef O_BENEATH +#define O_BENEATH 040000000 /* no / or .. in openat path */ +#endif + #ifndef O_NDELAY #define O_NDELAY O_NONBLOCK #endif
http://www.spinics.net/lists/fstests/msg01064.html
Thanks
David
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies