Author: pluto                        Date: Tue Oct 11 14:19:03 2005 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- .bss elf fix separated and optimized.

---- Files affected:
SOURCES:
   linux-2.6-binfmt_elf-bss-padding.patch (NONE -> 1.1)  (NEW), 
kernel-hotfixes.patch (1.1.2.63 -> 1.1.2.64) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-binfmt_elf-bss-padding.patch
diff -u /dev/null SOURCES/linux-2.6-binfmt_elf-bss-padding.patch:1.1
--- /dev/null   Tue Oct 11 16:19:03 2005
+++ SOURCES/linux-2.6-binfmt_elf-bss-padding.patch      Tue Oct 11 16:18:58 2005
@@ -0,0 +1,21 @@
+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.
+
+So teach load_elf_binary() to skip the bss settng altogether if the elf file
+has a zero-length bss segment.
+
+Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
+
+--- 25/fs/binfmt_elf.c~binfmt_elf-bss-padding-fix      2005-05-11 
21:15:02.000000000 -0700
++++ 25-akpm/fs/binfmt_elf.c    2005-05-11 21:15:02.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;

================================================================
Index: SOURCES/kernel-hotfixes.patch
diff -u SOURCES/kernel-hotfixes.patch:1.1.2.63 
SOURCES/kernel-hotfixes.patch:1.1.2.64
--- SOURCES/kernel-hotfixes.patch:1.1.2.63      Fri Oct  7 15:05:37 2005
+++ SOURCES/kernel-hotfixes.patch       Tue Oct 11 16:18:58 2005
@@ -153,14 +153,3 @@
          
              /* Point socket buffer at the right VCC before giving to socket 
layer */
              ATM_SKB(skb)->vcc = vcc;
---- a/fs/binfmt_elf.c  2005-09-30 23:17:35.000000000 +0200
-+++ b/fs/binfmt_elf.c  2005-10-07 11:46:27.159874250 +0200
-@@ -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 ((elf_bss != elf_brk) && padzero(elf_bss)) {
-               send_sig(SIGSEGV, current, 0);
-               retval = -EFAULT; /* Nobody gets to see this, but.. */
-               goto out_free_dentry;
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/SOURCES/kernel-hotfixes.patch?r1=1.1.2.63&r2=1.1.2.64&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to