[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200806235920.vy6ngjb7h55hg5w4@yavin.dot.cyphar.com>
Date: Fri, 7 Aug 2020 09:59:20 +1000
From: Aleksa Sarai <cyphar@...har.com>
To: Eric Biggers <ebiggers@...nel.org>
Cc: Lokesh Gidra <lokeshgidra@...gle.com>, viro@...iv.linux.org.uk,
stephen.smalley.work@...il.com, casey@...aufler-ca.com,
jmorris@...ei.org, kaleshsingh@...gle.com, dancol@...col.org,
surenb@...gle.com, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, nnk@...gle.com, jeffv@...gle.com,
calin@...gle.com, kernel-team@...roid.com, yanfei.xu@...driver.com,
syzbot+75867c44841cb6373570@...kaller.appspotmail.com
Subject: Re: [PATCH] Userfaultfd: Avoid double free of userfault_ctx and
remove O_CLOEXEC
On 2020-08-04, Eric Biggers <ebiggers@...nel.org> wrote:
> On Wed, Aug 05, 2020 at 01:47:58PM +1000, Aleksa Sarai wrote:
> > On 2020-08-04, Lokesh Gidra <lokeshgidra@...gle.com> wrote:
> > > when get_unused_fd_flags returns error, ctx will be freed by
> > > userfaultfd's release function, which is indirectly called by fput().
> > > Also, if anon_inode_getfile_secure() returns an error, then
> > > userfaultfd_ctx_put() is called, which calls mmdrop() and frees ctx.
> > >
> > > Also, the O_CLOEXEC was inadvertently added to the call to
> > > get_unused_fd_flags() [1].
> >
> > I disagree that it is "wrong" to do O_CLOEXEC-by-default (after all,
> > it's trivial to disable O_CLOEXEC, but it's non-trivial to enable it on
> > an existing file descriptor because it's possible for another thread to
> > exec() before you set the flag). Several new syscalls and fd-returning
> > facilities are O_CLOEXEC-by-default now (the most obvious being pidfds
> > and seccomp notifier fds).
>
> Sure, O_CLOEXEC *should* be the default, but this is an existing syscall so it
> has to keep the existing behavior.
Ah, I missed that this was a UAPI breakage. :P
> > At the very least there should be a new flag added that sets O_CLOEXEC.
>
> There already is one (but these patches broke it).
--
Aleksa Sarai
Senior Software Engineer (Containers)
SUSE Linux GmbH
<https://www.cyphar.com/>
Download attachment "signature.asc" of type "application/pgp-signature" (229 bytes)
Powered by blists - more mailing lists