All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
To: "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
Cc: Colin Walters <walters-gPq2gbYjIk8dnm+yROfE0A@public.gmane.org>,
	"Richard W.M. Jones"
	<rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
	mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	luto-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org,
	mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org,
	zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	emunson-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org,
	paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
	aarcange-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	xemul-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org,
	sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org,
	milosz-B5zB6C1i6pkAvxtiuMwx3w@public.gmane.org,
	rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org,
	arnd-r2nGTMty4D4@public.gmane.org,
	ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
	gorcunov-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org,
	iulia.manda21-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	dave.hansen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	mguzik-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	dave-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	gorcunov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	fw-d32yF4oPJVt0XxTmqZlbVQ@public.gmane.org
Subject: Re: [PATCH v2 0/2] vfs: Define new syscall getumask.
Date: Sun, 17 Apr 2016 18:57:36 -0700	[thread overview]
Message-ID: <20160418015736.GA16600@x> (raw)
In-Reply-To: <57143B74.3070302-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>

On Sun, Apr 17, 2016 at 06:42:12PM -0700, H. Peter Anvin wrote:
> On 04/13/16 08:41, Colin Walters wrote:
> > On Wed, Apr 13, 2016, at 08:57 AM, Richard W.M. Jones wrote:
> > 
> >> 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.
> > 
> > I assume you just want to do this from a shared library so you can
> > determine whether or not you need to call fchown() after making files
> > and the like?  If that's the case it'd be good to note it in the commit
> > message.
> > 
> > BTW...it might be a good idea to add a flags argument:
> > https://lwn.net/Articles/585415/
> > 
> > Did you consider calling this `umask2`, having the initial version only support
> > retrieving it via a UMASK_GET flag, and lay the groundwork to support
> > setting a threadsafe umask with a UMASK_SET_THREAD flag?
> > 
> 
> The comments on that article also list a number of problems with this
> approach, related to how undefined flags are handled.
> 
> In fact, if it wasn't for this exact problem then umask(-1) would have
> been the logical way to deal with this, but because umask(2) is defined
> to have an internal & 07777 it becomes infeasible at least in theory.
> In practice it might work...
> 
> However, see previous discussions about making this available in /proc.
>  Also, I really think there is something to be said for a O_NOUMASK
> option...

O_NOUMASK seems potentially useful to support implementation of umask
entirely in userspace, which also addresses thread-safety.  A program
could read its process umask out at startup, handle umask entirely in
userspace (including for threads), and only interact with the system
umask after fork and before exec.

- Josh Triplett

WARNING: multiple messages have this Message-ID (diff)
From: Josh Triplett <josh@joshtriplett.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Colin Walters <walters@verbum.org>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	linux-kernel@vger.kernel.org, tglx@linutronix.de,
	mingo@redhat.com, akpm@linux-foundation.org, luto@kernel.org,
	viro@zeniv.linux.org.uk, mathieu.desnoyers@efficios.com,
	zab@redhat.com, emunson@akamai.com, paulmck@linux.vnet.ibm.com,
	aarcange@redhat.com, xemul@parallels.com, sfr@canb.auug.org.au,
	milosz@adfin.com, rostedt@goodmis.org, arnd@arndb.de,
	ebiederm@xmission.com, gorcunov@openvz.org,
	iulia.manda21@gmail.com, dave.hansen@linux.intel.com,
	mguzik@redhat.com, adobriyan@gmail.com, dave@stgolabs.net,
	linux-api@vger.kernel.org, gorcunov@gmail.com, fw@deneb.enyo.de
Subject: Re: [PATCH v2 0/2] vfs: Define new syscall getumask.
Date: Sun, 17 Apr 2016 18:57:36 -0700	[thread overview]
Message-ID: <20160418015736.GA16600@x> (raw)
In-Reply-To: <57143B74.3070302@zytor.com>

On Sun, Apr 17, 2016 at 06:42:12PM -0700, H. Peter Anvin wrote:
> On 04/13/16 08:41, Colin Walters wrote:
> > On Wed, Apr 13, 2016, at 08:57 AM, Richard W.M. Jones wrote:
> > 
> >> 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.
> > 
> > I assume you just want to do this from a shared library so you can
> > determine whether or not you need to call fchown() after making files
> > and the like?  If that's the case it'd be good to note it in the commit
> > message.
> > 
> > BTW...it might be a good idea to add a flags argument:
> > https://lwn.net/Articles/585415/
> > 
> > Did you consider calling this `umask2`, having the initial version only support
> > retrieving it via a UMASK_GET flag, and lay the groundwork to support
> > setting a threadsafe umask with a UMASK_SET_THREAD flag?
> > 
> 
> The comments on that article also list a number of problems with this
> approach, related to how undefined flags are handled.
> 
> In fact, if it wasn't for this exact problem then umask(-1) would have
> been the logical way to deal with this, but because umask(2) is defined
> to have an internal & 07777 it becomes infeasible at least in theory.
> In practice it might work...
> 
> However, see previous discussions about making this available in /proc.
>  Also, I really think there is something to be said for a O_NOUMASK
> option...

O_NOUMASK seems potentially useful to support implementation of umask
entirely in userspace, which also addresses thread-safety.  A program
could read its process umask out at startup, handle umask entirely in
userspace (including for threads), and only interact with the system
umask after fork and before exec.

- Josh Triplett

  parent reply	other threads:[~2016-04-18  1:57 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-13 12:57 [PATCH v2 0/2] vfs: Define new syscall getumask Richard W.M. Jones
2016-04-13 12:57 ` Richard W.M. Jones
2016-04-13 12:57 ` [PATCH v2 1/2] " Richard W.M. Jones
     [not found]   ` <1460552272-15985-2-git-send-email-rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-13 13:20     ` Cyrill Gorcunov
2016-04-13 13:20       ` Cyrill Gorcunov
2016-04-13 13:57       ` Richard W.M. Jones
     [not found]         ` <20160413135708.GG11600-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-13 14:02           ` Christoph Hellwig
2016-04-13 14:02             ` Christoph Hellwig
2016-04-13 15:27           ` Mathieu Desnoyers
2016-04-13 15:27             ` Mathieu Desnoyers
     [not found] ` <1460552272-15985-1-git-send-email-rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-13 12:57   ` [PATCH v2 2/2] x86: Wire up new getumask system call on x86 Richard W.M. Jones
2016-04-13 12:57     ` Richard W.M. Jones
2016-04-13 13:59   ` [PATCH v2 0/2] vfs: Define new syscall getumask Greg KH
2016-04-13 13:59     ` Greg KH
2016-04-14  3:47     ` Steven Rostedt
2016-04-14 19:26       ` Greg KH
2016-04-13 15:39   ` Mathieu Desnoyers
2016-04-13 15:39     ` Mathieu Desnoyers
     [not found]     ` <2143735451.55767.1460561962122.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2016-04-13 21:01       ` Mathieu Desnoyers
2016-04-13 21:01         ` Mathieu Desnoyers
     [not found]         ` <1736004700.56566.1460581285951.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2016-04-14  2:13           ` Theodore Ts'o
2016-04-14  2:13             ` Theodore Ts'o
     [not found]             ` <20160414021348.GB16656-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2016-04-18  0:38               ` H. Peter Anvin
2016-04-18  0:38                 ` H. Peter Anvin
     [not found]                 ` <57142C80.6070005-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2016-04-18  1:09                   ` Greg KH
2016-04-18  1:09                     ` Greg KH
     [not found]                     ` <20160418010925.GA7800-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2016-04-18  2:02                       ` H. Peter Anvin
2016-04-18  2:02                         ` H. Peter Anvin
2016-04-18  2:12                       ` Josh Triplett
2016-04-18  2:12                         ` Josh Triplett
2016-04-18  2:15                         ` H. Peter Anvin
2016-04-18  2:15                           ` H. Peter Anvin
2016-04-18  2:37                           ` Josh Triplett
2016-04-18  2:37                             ` Josh Triplett
2016-04-18  3:00                             ` H. Peter Anvin
2016-04-18  3:00                               ` H. Peter Anvin
     [not found]                               ` <57144DE6.9050409-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2016-04-18 11:39                                 ` Theodore Ts'o
2016-04-18 11:39                                   ` Theodore Ts'o
2016-04-14 17:56           ` Andy Lutomirski
2016-04-14 17:56             ` Andy Lutomirski
2016-04-13 15:41   ` Colin Walters
2016-04-13 15:41     ` Colin Walters
     [not found]     ` <1460562105.353100.577697153.013DF466-2RFepEojUI2N1INw9kWLP6GC3tUn3ZHUQQ4Iyu8u01E@public.gmane.org>
2016-04-13 16:03       ` Richard W.M. Jones
2016-04-13 16:03         ` Richard W.M. Jones
2016-04-18  1:42       ` H. Peter Anvin
2016-04-18  1:42         ` H. Peter Anvin
     [not found]         ` <57143B74.3070302-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2016-04-18  1:57           ` Josh Triplett [this message]
2016-04-18  1:57             ` Josh Triplett
2016-04-18  9:14             ` Richard W.M. Jones
2016-04-18  9:14               ` Richard W.M. Jones
2016-04-18 10:04               ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160418015736.GA16600@x \
    --to=josh-iaamlnmf4umaiuxdjuqwma@public.gmane.org \
    --cc=aarcange-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=dave-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org \
    --cc=dave.hansen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
    --cc=emunson-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org \
    --cc=fw-d32yF4oPJVt0XxTmqZlbVQ@public.gmane.org \
    --cc=gorcunov-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org \
    --cc=gorcunov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
    --cc=iulia.manda21-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=luto-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org \
    --cc=mguzik-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=milosz-B5zB6C1i6pkAvxtiuMwx3w@public.gmane.org \
    --cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=rjones-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org \
    --cc=sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org \
    --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
    --cc=viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org \
    --cc=walters-gPq2gbYjIk8dnm+yROfE0A@public.gmane.org \
    --cc=xemul-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org \
    --cc=zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.