Re: [PATCH v2 4/8] exec: Allow load_misc_binary to call prepare_binfmt unconditionally

From: Kees Cook
Date: Tue May 19 2020 - 15:17:57 EST


On Tue, May 19, 2020 at 02:08:34PM -0500, Eric W. Biederman wrote:
> Kees Cook <keescook@xxxxxxxxxxxx> writes:
>
> > On Mon, May 18, 2020 at 07:31:51PM -0500, Eric W. Biederman wrote:
> >> [...]
> >> diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
> >> index 8605ab4a0f89..dbb5614d62a2 100644
> >> --- a/include/linux/binfmts.h
> >> +++ b/include/linux/binfmts.h
> >> @@ -26,6 +26,8 @@ struct linux_binprm {
> >> unsigned long p; /* current top of mem */
> >> unsigned long argmin; /* rlimit marker for copy_strings() */
> >> unsigned int
> >> + /* It is safe to use the creds of a script (see binfmt_misc) */
> >> + preserve_creds:1,
> >
> > How about:
> >
> > /*
> > * A binfmt handler will set this to True before calling
> > * prepare_binprm() if it is safe to reuse the previous
> > * credentials, based on bprm->file (see binfmt_misc).
> > */
>
> I think that is more words saying less.
>
> While I agree it might be better. I don't see what your comment adds to
> the understanding. What do you see my comment not saying that is important?

I think your comment is aimed at the consumer of preserve_creds (i.e.
the fs/exec.c code), whereas I think the comment should be directed at
a binfmt author, who wants to answer the question "why would I set this
flag?" Though I strongly hope we never have new binfmts. ;)

--
Kees Cook