Messages in this thread | | | Date | Tue, 4 Aug 2020 21:08:06 -0700 | From | Eric Biggers <> | Subject | Re: [PATCH] Userfaultfd: Avoid double free of userfault_ctx and remove O_CLOEXEC |
| |
On Wed, Aug 05, 2020 at 01:47:58PM +1000, Aleksa Sarai wrote: > On 2020-08-04, Lokesh Gidra <lokeshgidra@google.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.
> At the very least there should be a new flag added that sets O_CLOEXEC.
There already is one (but these patches broke it).
- Eric
| |