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 -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html