Re: - binfmt_elf-bss-padding-fix.patch removed from -mm tree

From: Coywolf Qi Hunt
Date: Tue Oct 11 2005 - 19:56:04 EST


On 10/12/05, akpm@xxxxxxxx <akpm@xxxxxxxx> 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 <tzachar@xxxxxxxxxxxx> 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 <roland@xxxxxxxxxx>
> Cc: Daniel Jacobowitz <dan@xxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
> ---
>
> 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/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/