On Wed, Apr 8, 2015 at 4:00 AM, Kernel Apprentice <kernelapprentice@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies