Messages in this thread |  | | Date | Tue, 7 Apr 2020 09:03:46 -0700 | From | Kees Cook <> | Subject | Re: [PATCH 3/3] exec: Rename the flag called_exec_mmap point_of_no_return |
| |
On Mon, Apr 06, 2020 at 08:32:23PM -0500, Eric W. Biederman wrote: > > Update the comments and make the code easier to understand by > renaming this flag. > > Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
I like it, yes!
Acked-by: Kees Cook <keescook@chromium.org>
-Kees
> --- > fs/exec.c | 12 ++++++------ > include/linux/binfmts.h | 6 +++--- > 2 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/fs/exec.c b/fs/exec.c > index 28c87020da9b..a61987d6dc33 100644 > --- a/fs/exec.c > +++ b/fs/exec.c > @@ -1300,12 +1300,12 @@ int flush_old_exec(struct linux_binprm * bprm) > goto out; > > /* > - * After setting bprm->called_exec_mmap (to mark that current is > - * using the prepared mm now), we have nothing left of the original > - * process. If anything from here on returns an error, the check > - * in search_binary_handler() will SEGV current. > + * With the new mm installed it is completely impossible to > + * fail and return to the original process. If anything from > + * here on returns an error, the check in > + * search_binary_handler() will SEGV current. > */ > - bprm->called_exec_mmap = 1; > + bprm->point_of_no_return = true; > bprm->mm = NULL; > > #ifdef CONFIG_POSIX_TIMERS > @@ -1694,7 +1694,7 @@ int search_binary_handler(struct linux_binprm *bprm) > > read_lock(&binfmt_lock); > put_binfmt(fmt); > - if (retval < 0 && bprm->called_exec_mmap) { > + if (retval < 0 && bprm->point_of_no_return) { > /* we got to flush_old_exec() and failed after it */ > read_unlock(&binfmt_lock); > force_sigsegv(SIGSEGV); > diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h > index 6f564b9ad882..8f479dad7931 100644 > --- a/include/linux/binfmts.h > +++ b/include/linux/binfmts.h > @@ -46,10 +46,10 @@ struct linux_binprm { > */ > secureexec:1, > /* > - * Set by flush_old_exec, when exec_mmap has been called. > - * This is past the point of no return. > + * Set when errors can no longer be returned to the > + * original userspace. > */ > - called_exec_mmap:1; > + point_of_no_return:1; > #ifdef __alpha__ > unsigned int taso:1; > #endif > -- > 2.25.0 >
-- Kees Cook
|  |