Out of openat flag space

Kernel Apprentice kernelapprentice at gmail.com
Wed Apr 8 04:00:15 EDT 2015


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?

> 
> http://www.spinics.net/lists/fstests/msg01064.html
> 
> Thanks
> 
> David
> 
> 
> 
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> 



More information about the Kernelnewbies mailing list