2005-10-12 00:42:33

by Coywolf Qi Hunt

[permalink] [raw]
Subject: Re: - binfmt_elf-bss-padding-fix.patch removed from -mm tree

On 10/12/05, [email protected] <[email protected]> wrote:
>
> The patch titled
>
> binfmt_elf bss padding fix
>
> has been removed from the -mm tree. Its filename is
>
> binfmt_elf-bss-padding-fix.patch
>
> This patch was probably dropped from -mm because
> it has already been merged into a subsystem tree
> or into Linus's tree
>
>
>
> Nir Tzachar <[email protected]> points out that if an ELF file specifies a
> zero-length bss at a whacky address, we cannot load that binary because
> padzero() tries to zero out the end of the page at the whacky address, and
> that may not be writeable.
>
> See also http://bugzilla.kernel.org/show_bug.cgi?id=5411
>
> So teach load_elf_binary() to skip the bss settng altogether if the elf file
> has a zero-length bss segment.
>
> Cc: Roland McGrath <[email protected]>
> Cc: Daniel Jacobowitz <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> ---
>
> fs/binfmt_elf.c | 2 +-
> 1 files changed, 1 insertion(+), 1 deletion(-)
>
> diff -puN fs/binfmt_elf.c~binfmt_elf-bss-padding-fix fs/binfmt_elf.c
> --- devel/fs/binfmt_elf.c~binfmt_elf-bss-padding-fix 2005-10-11 08:15:14.000000000 -0700
> +++ devel-akpm/fs/binfmt_elf.c 2005-10-11 08:15:14.000000000 -0700
> @@ -905,7 +905,7 @@ static int load_elf_binary(struct linux_
> send_sig(SIGKILL, current, 0);
> goto out_free_dentry;
> }
> - if (padzero(elf_bss)) {
> + if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
> send_sig(SIGSEGV, current, 0);
> retval = -EFAULT; /* Nobody gets to see this, but.. */
> goto out_free_dentry;
> _


This is simply not complete. load_elf_binary() is fixed.
load_elf_library() need to be fixed too. And theoretically
load_elf_interp() too.
--
Coywolf Qi Hunt
http://sosdg.org/~coywolf/


2005-10-12 01:03:21

by Daniel Jacobowitz

[permalink] [raw]
Subject: Re: - binfmt_elf-bss-padding-fix.patch removed from -mm tree

On Wed, Oct 12, 2005 at 08:42:31AM +0800, Coywolf Qi Hunt wrote:
> This is simply not complete. load_elf_binary() is fixed.
> load_elf_library() need to be fixed too. And theoretically
> load_elf_interp() too.

Hardly: one would require a wacky ELF interpreter to trigger, which is
your own fault, and the other is only reachable from sys_uselib and
deserves death.

--
Daniel Jacobowitz
CodeSourcery, LLC