From: Josh Triplett <josh@joshtriplett.org>
To: "Dmitry V. Levin" <ldv@altlinux.org>
Cc: io-uring@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, mtk.manpages@gmail.com,
Alexander Viro <viro@zeniv.linux.org.uk>,
Arnd Bergmann <arnd@arndb.de>, Jens Axboe <axboe@kernel.dk>,
Aleksa Sarai <cyphar@cyphar.com>,
linux-man@vger.kernel.org, Linux API <linux-api@vger.kernel.org>
Subject: Re: [PATCH v5 1/3] fs: Support setting a minimum fd for "lowest available fd" allocation
Date: Wed, 22 Apr 2020 21:51:12 -0700 [thread overview]
Message-ID: <20200423045112.GI161058@localhost> (raw)
In-Reply-To: <20200423011253.GA18957@altlinux.org>
On Thu, Apr 23, 2020 at 04:12:53AM +0300, Dmitry V. Levin wrote:
> On Tue, Apr 21, 2020 at 10:19:49PM -0700, Josh Triplett wrote:
> > Some applications want to prevent the usual "lowest available fd"
> > allocation from allocating certain file descriptors. For instance, they
> > may want to prevent allocation of a closed fd 0, 1, or 2 other than via
> > dup2/dup3, or reserve some low file descriptors for other purposes.
> >
> > Add a prctl to increase the minimum fd and return the previous minimum.
> >
> > System calls that allocate a specific file descriptor, such as
> > dup2/dup3, ignore this minimum.
> >
> > exec resets the minimum fd, to prevent one program from interfering with
> > another program's expectations about fd allocation.
>
> Please make this aspect properly documented in "Effect on process
> attributes" section of execve(2) manual page.
Done. I'll include updated manpage patches in v6.
> > +unsigned int increase_min_fd(unsigned int num)
> > +{
> > + struct files_struct *files = current->files;
> > + unsigned int old_min_fd;
> > +
> > + spin_lock(&files->file_lock);
> > + old_min_fd = files->min_fd;
> > + files->min_fd += num;
> > + spin_unlock(&files->file_lock);
> > + return old_min_fd;
> > +}
>
> If it's "increase", there should be an overflow check.
> Otherwise it's "assign" rather than "increase".
I'll add a check in v6, to make sure that the value cannot overflow into
the errno range. (Note that this is not security-sensitive, it's just
providing a footgun-resistant interface. It should absolutely check,
though.)
- Josh Triplett
next prev parent reply other threads:[~2020-04-23 4:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 5:19 [PATCH v5 0/3] Support userspace-selected fds Josh Triplett
2020-04-22 5:19 ` [PATCH v5 1/3] fs: Support setting a minimum fd for "lowest available fd" allocation Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-23 1:12 ` Dmitry V. Levin
2020-04-23 4:51 ` Josh Triplett [this message]
2020-04-23 9:24 ` Arnd Bergmann
2020-04-22 5:20 ` [PATCH v5 2/3] fs: openat2: Extend open_how to allow userspace-selected fds Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-22 7:55 ` Miklos Szeredi
2020-04-23 0:48 ` Josh Triplett
2020-04-23 4:24 ` Miklos Szeredi
2020-04-23 4:42 ` Josh Triplett
2020-04-23 6:04 ` Miklos Szeredi
2020-04-23 7:33 ` Josh Triplett
2020-04-23 7:45 ` Miklos Szeredi
2020-04-23 7:57 ` Miklos Szeredi
2020-04-23 9:20 ` Miklos Szeredi
2020-04-23 9:46 ` Miklos Szeredi
2020-04-23 8:06 ` Josh Triplett
2020-04-22 5:20 ` [PATCH v5 3/3] fs: pipe2: Support O_SPECIFIC_FD Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-22 15:44 ` Florian Weimer
2020-04-23 0:44 ` Josh Triplett
2020-04-22 6:05 ` [PATCH v5 0/3] Support userspace-selected fds Michael Kerrisk (man-pages)
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=20200423045112.GI161058@localhost \
--to=josh@joshtriplett.org \
--cc=arnd@arndb.de \
--cc=axboe@kernel.dk \
--cc=cyphar@cyphar.com \
--cc=io-uring@vger.kernel.org \
--cc=ldv@altlinux.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=viro@zeniv.linux.org.uk \
/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.