|
Message-ID: <CAGXu5jKcuV7jfPotd1y6GNWk=jyvvb2xqYGS8hMx8qD9de=uzA@mail.gmail.com> Date: Fri, 2 Jun 2017 12:27:44 -0700 From: Kees Cook <keescook@...omium.org> To: Rik van Riel <riel@...hat.com> Cc: LKML <linux-kernel@...r.kernel.org>, "kernel-hardening@...ts.openwall.com" <kernel-hardening@...ts.openwall.com>, Andrew Morton <akpm@...ux-foundation.org>, Ingo Molnar <mingo@...nel.org>, Oleg Nesterov <oleg@...hat.com>, Larry Woodman <lwoodman@...hat.com>, mhocko@...e.de, Daniel Micay <danielmicay@...il.com>, Will Deacon <will.deacon@....com>, "benh@...nel.crashing.org" <benh@...nel.crashing.org> Subject: Re: [PATCH 1/6] binfmt_elf: document load_bias a little bit On Fri, Jun 2, 2017 at 8:20 AM, <riel@...hat.com> wrote: > From: Rik van Riel <riel@...hat.com> > > After me and another unnamed developer got confused by the subtraction > of vaddr in this branch of the code, followed by adding vaddr back in > a little bit later, for the third time, maybe it is time to document > this quirky bit of code. > > Signed-off-by: Rik van Riel <riel@...hat.com> Acked-by: Kees Cook <keescook@...omium.org> Any and all improvements to this code and its documentation are welcome. :) -Kees > --- > fs/binfmt_elf.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c > index 5075fd5c62c8..8c3f4dbc7603 100644 > --- a/fs/binfmt_elf.c > +++ b/fs/binfmt_elf.c > @@ -930,10 +930,16 @@ static int load_elf_binary(struct linux_binprm *bprm) > if (loc->elf_ex.e_type == ET_EXEC || load_addr_set) { > elf_flags |= MAP_FIXED; > } else if (loc->elf_ex.e_type == ET_DYN) { > - /* Try and get dynamic programs out of the way of the > + /* > + * Try and get dynamic programs out of the way of the > * default mmap base, as well as whatever program they > * might try to exec. This is because the brk will > - * follow the loader, and is not movable. */ > + * follow the loader, and is not movable. > + * > + * The load_bias is the difference between the address > + * in the elf header and the address where the binary > + * is mmapped. > + */ > load_bias = ELF_ET_DYN_BASE - vaddr; > if (current->flags & PF_RANDOMIZE) > load_bias += arch_mmap_rnd(); > -- > 2.9.3 > -- Kees Cook Pixel Security
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.