Re: [PATCH v2 0/2] vfs: Define new syscall getumask.

From: Greg KH
Date: Wed Apr 13 2016 - 10:00:25 EST


On Wed, Apr 13, 2016 at 01:57:50PM +0100, Richard W.M. Jones wrote:
> v1 -> v2:
>
> - Use current_umask() instead of current->fs->umask.
>
> - Retested it.
>
> ----------------------------------------------------------------------
>
> It's not possible to read the process umask without also modifying it,
> which is what umask(2) does. A library cannot read umask safely,
> especially if the main program might be multithreaded.
>
> This patch series adds a trivial system call "getumask" which returns
> the umask of the current process.
>
> Another approach to this has been attempted before, adding something
> to /proc, although it didn't go anywhere. See:
>
> http://comments.gmane.org/gmane.linux.kernel/1292109
>
> Another way to solve this would be to add a thread-safe getumask to
> glibc. Since glibc could own the mutex, this would permit libraries
> linked to this glibc to read umask safely.
>
> I should also note that man-pages documents getumask(3), but no
> version of glibc has ever implemented it.
>
> Typical test script:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <linux/unistd.h>
> #include <sys/syscall.h>
>
> int main(int argc, char *argv[])
> {
> int r = syscall(329);
> if (r == -1) {
> perror("getumask");
> exit(1);
> }
> printf("umask = %o\n", r);
> exit(0);
> }

Why not add this to the ktest infrastructure, we strongly encourage that
for new syscalls, along with a man page patch.

thanks,

greg k-h