linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/3] vfs: Define new syscall umask2 [formerly getumask]
@ 2016-04-13 19:05 Richard W.M. Jones
  2016-04-13 19:05 ` [PATCH v4 1/3] vfs: Define new syscall umask2 Richard W.M. Jones
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Richard W.M. Jones @ 2016-04-13 19:05 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: tglx-hfZtesqFncYOwBW4kG4KsQ, mingo-H+wXaHxf7aLQT0dZR+AlfA,
	hpa-YMNOUZJC4hwAvxtiuMwx3w, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
	luto-DgEjT+Ai2ygdnm+yROfE0A,
	viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn,
	mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w,
	zab-H+wXaHxf7aLQT0dZR+AlfA, emunson-JqFfY2XvxFXQT0dZR+AlfA,
	paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8,
	aarcange-H+wXaHxf7aLQT0dZR+AlfA, josh-iaAMLnmF4UmaiuxdJuQwMA,
	xemul-bzQdu9zFT3WakBO8gow8eQ, sfr-3FnU+UHB4dNDw9hX6IcOSA,
	milosz-B5zB6C1i6pkAvxtiuMwx3w, rostedt-nx8X9YLhiw1AfugRpC6u6w,
	arnd-r2nGTMty4D4, ebiederm-aS9lmoZGLiVWk0Htik3J/w,
	gorcunov-GEFAQzZX7r8dnm+yROfE0A,
	iulia.manda21-Re5JQEeQqe8AvxtiuMwx3w,
	dave.hansen-VuQAYsv1563Yd54FQh9/CA, mguzik-H+wXaHxf7aLQT0dZR+AlfA,
	adobriyan-Re5JQEeQqe8AvxtiuMwx3w, dave-h16yJtLeMjHk1uMJSBkQmQ,
	linux-api-u79uwXL29TY76Z2rM5mHXA, gorcunov-Re5JQEeQqe8AvxtiuMwx3w,
	fw-d32yF4oPJVt0XxTmqZlbVQ, walters-gPq2gbYjIk8dnm+yROfE0A

v3 -> v4:

 - Rename the syscall: getumask becomes umask2.

 - Add flags parameter, with one flag (UMASK_GET_MASK).

 - Expand the rationale for this change in the first commit message.

 - Add a selftest.

 - Retest everything.

--------------------

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 new system call "umask2".  This adds a flags
parameter.  Specifying flags=UMASK_GET_MASK allows the umask of the
current process to be read without modifying it.

This leaves open the possibility in future of adding a per-thread
umask, set or read with other flags.  This is not implemented.

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.

Rich.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-04-14  9:15 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-13 19:05 [PATCH v4 0/3] vfs: Define new syscall umask2 [formerly getumask] Richard W.M. Jones
2016-04-13 19:05 ` [PATCH v4 1/3] vfs: Define new syscall umask2 Richard W.M. Jones
2016-04-13 19:05 ` [PATCH v4 2/3] x86: Wire up new umask2 system call on x86 Richard W.M. Jones
     [not found]   ` <1460574336-18930-3-git-send-email-rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-13 19:57     ` kbuild test robot
2016-04-13 19:05 ` [PATCH v4 3/3] vfs: selftests: Add test for umask2 system call Richard W.M. Jones
     [not found] ` <1460574336-18930-1-git-send-email-rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-13 19:29   ` umask2 man page (was: Re: [PATCH v4 0/3] vfs: Define new syscall umask2 [formerly getumask]) Richard W.M. Jones
2016-04-13 23:09   ` [PATCH v4 0/3] vfs: Define new syscall umask2 [formerly getumask] Stephen Rothwell
2016-04-14  9:15     ` Richard W.M. Jones
2016-04-13 19:37 ` H. Peter Anvin
     [not found]   ` <570EA006.5010608-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2016-04-13 20:45     ` Florian Weimer
     [not found]       ` <87shypck6m.fsf-ZqZwdwZz9NfTBotR3TxKnbNAH6kLmebB@public.gmane.org>
2016-04-13 20:53         ` Richard W.M. Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).