[kernel] r13338 - in dists/etch-security/linux-2.6.24/debian/patches: bugfix/all/CVE-2009-0029 series

Dann Frazier dannf at alioth.debian.org
Mon Apr 6 02:53:17 UTC 2009


Author: dannf
Date: Mon Apr  6 02:53:15 2009
New Revision: 13338

Log:
additional CVE-2009-0029 fixes

Added:
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch
      - copied, changed from r13320, dists/sid/linux-2.6/debian/patches/bugfix/mips/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch
      - copied unchanged from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch
      - copied unchanged from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch
      - copied, changed from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch
      - copied, changed from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch
Deleted:
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-finish-fixing-CVE-2009-0029.patch
   dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-wire-up-o32-syscall-to-the-right-function.patch
Modified:
   dists/etch-security/linux-2.6.24/debian/patches/series/6~etchnhalf.8etch1

Copied and modified: dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch (from r13320, dists/sid/linux-2.6/debian/patches/bugfix/mips/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch)
==============================================================================
--- dists/sid/linux-2.6/debian/patches/bugfix/mips/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch	Sat Apr  4 00:29:16 2009	(r13320, copy source)
+++ dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch	Mon Apr  6 02:53:15 2009	(r13338)
@@ -11,12 +11,13 @@
     
     Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
 
-diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
-index 2a47271..6242bc6 100644
---- a/arch/mips/kernel/linux32.c
-+++ b/arch/mips/kernel/linux32.c
-@@ -133,9 +133,9 @@ SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy,
- 	return sys_ftruncate(fd, merge_64(a2, a3));
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+
+diff -urpN a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
+--- a/arch/mips/kernel/linux32.c	2009-04-05 20:01:58.000000000 -0600
++++ b/arch/mips/kernel/linux32.c	2009-04-05 20:46:41.000000000 -0600
+@@ -273,9 +273,9 @@ sys32_settimeofday(struct compat_timeval
+ 	return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
  }
  
 -SYSCALL_DEFINE5(32_llseek, unsigned long, fd, unsigned long, offset_high,

Copied: dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch (from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch	Mon Apr  6 02:53:15 2009	(r13338, copy of r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/fix-uml-compile.patch)
@@ -0,0 +1,83 @@
+commit 6c5979631b4b03c9288776562c18036765e398c1
+Author: Heiko Carstens <heiko.carstens at de.ibm.com>
+Date:   Wed Feb 11 13:04:38 2009 -0800
+
+    syscall define: fix uml compile bug
+    
+    With the new system call defines we get this on uml:
+    
+    arch/um/sys-i386/built-in.o: In function `sys_call_table':
+    (.rodata+0x308): undefined reference to `sys_sigprocmask'
+    
+    Reason for this is that uml passes the preprocessor option
+    -Dsigprocmask=kernel_sigprocmask to gcc when compiling the kernel.
+    This causes SYSCALL_DEFINE3(sigprocmask, ...) to be expanded to
+    SYSCALL_DEFINEx(3, kernel_sigprocmask, ...) and finally to a system
+    call named sys_kernel_sigprocmask.  However sys_sigprocmask is missing
+    because of this.
+    
+    To avoid macro expansion for the system call name just concatenate the
+    name at first define instead of carrying it through severel levels.
+    This was pointed out by Al Viro.
+    
+    Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
+    Cc: Geert Uytterhoeven <geert at linux-m68k.org>
+    Cc: Al Viro <viro at zeniv.linux.org.uk>
+    Reviewed-by: WANG Cong <wangcong at zeuux.org>
+    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+
+diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
+index 0eda02f..f9f900c 100644
+--- a/include/linux/syscalls.h
++++ b/include/linux/syscalls.h
+@@ -95,13 +95,13 @@ struct old_linux_dirent;
+ #define __SC_TEST5(t5, a5, ...)	__SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
+ #define __SC_TEST6(t6, a6, ...)	__SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
+ 
+-#define SYSCALL_DEFINE0(name)   asmlinkage long sys_##name(void)
+-#define SYSCALL_DEFINE1(...)    SYSCALL_DEFINEx(1, __VA_ARGS__)
+-#define SYSCALL_DEFINE2(...)    SYSCALL_DEFINEx(2, __VA_ARGS__)
+-#define SYSCALL_DEFINE3(...)    SYSCALL_DEFINEx(3, __VA_ARGS__)
+-#define SYSCALL_DEFINE4(...)    SYSCALL_DEFINEx(4, __VA_ARGS__)
+-#define SYSCALL_DEFINE5(...)    SYSCALL_DEFINEx(5, __VA_ARGS__)
+-#define SYSCALL_DEFINE6(...)    SYSCALL_DEFINEx(6, __VA_ARGS__)
++#define SYSCALL_DEFINE0(name)	   asmlinkage long sys_##name(void)
++#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
++#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
++#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
++#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
++#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
++#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
+ 
+ #ifdef CONFIG_PPC64
+ #define SYSCALL_ALIAS(alias, name)					\
+@@ -121,21 +121,21 @@ struct old_linux_dirent;
+ 
+ #define SYSCALL_DEFINE(name) static inline long SYSC_##name
+ #define SYSCALL_DEFINEx(x, name, ...)					\
+-	asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__));		\
+-	static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__));	\
+-	asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__))		\
++	asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__));		\
++	static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__));	\
++	asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__))		\
+ 	{								\
+ 		__SC_TEST##x(__VA_ARGS__);				\
+-		return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__));	\
++		return (long) SYSC##name(__SC_CAST##x(__VA_ARGS__));	\
+ 	}								\
+-	SYSCALL_ALIAS(sys_##name, SyS_##name);				\
+-	static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
++	SYSCALL_ALIAS(sys##name, SyS##name);				\
++	static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__))
+ 
+ #else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
+ 
+ #define SYSCALL_DEFINE(name) asmlinkage long sys_##name
+ #define SYSCALL_DEFINEx(x, name, ...)					\
+-	asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
++	asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__))
+ 
+ #endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
+ 

Copied: dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch (from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch	Mon Apr  6 02:53:15 2009	(r13338, copy of r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch)
@@ -0,0 +1,13 @@
+diff -urpN a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
+--- a/arch/mips/mm/cache.c	2009-03-09 10:37:50.000000000 -0600
++++ b/arch/mips/mm/cache.c	2009-03-09 10:43:31.000000000 -0600
+@@ -13,7 +13,9 @@
+ #include <linux/linkage.h>
+ #include <linux/module.h>
+ #include <linux/sched.h>
++#ifndef __GENKSYMS__
+ #include <linux/syscalls.h>
++#endif
+ #include <linux/mm.h>
+ 
+ #include <asm/cacheflush.h>

Copied and modified: dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch (from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch)
==============================================================================
--- dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch	Sat Apr  4 00:49:23 2009	(r13322, copy source)
+++ dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch	Mon Apr  6 02:53:15 2009	(r13338)
@@ -9,12 +9,12 @@
     Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
     Signed-off-by: David Daney <ddaney at caviumnetworks.com>
 
-Backported to Debian's 2.6.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
 
 diff -urpN a/arch/mips/Kconfig b/arch/mips/Kconfig
---- a/arch/mips/Kconfig	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/Kconfig	2009-03-08 13:16:31.000000000 -0600
-@@ -1385,6 +1385,7 @@ config 32BIT
+--- a/arch/mips/Kconfig	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/mips/Kconfig	2009-04-05 19:55:04.000000000 -0600
+@@ -1344,6 +1344,7 @@ config 32BIT
  config 64BIT
  	bool "64-bit kernel"
  	depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
@@ -23,8 +23,8 @@
  	  Select this option if you want to build a 64-bit kernel.
  
 diff -urpN a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
---- a/arch/mips/kernel/linux32.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/kernel/linux32.c	2009-03-08 13:18:00.000000000 -0600
+--- a/arch/mips/kernel/linux32.c	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/mips/kernel/linux32.c	2009-04-05 20:01:58.000000000 -0600
 @@ -33,6 +33,7 @@
  #include <linux/module.h>
  #include <linux/binfmts.h>
@@ -46,26 +46,41 @@
  {
  	struct file * file = NULL;
  	unsigned long error;
-@@ -174,14 +175,14 @@ struct rlimit32 {
- 	int	rlim_max;
+@@ -175,12 +176,12 @@ struct rlimit32 {
  };
  
--asmlinkage long sys32_truncate64(const char __user * path,
--	unsigned long __dummy, int a2, int a3)
+ #ifdef __MIPSEB__
+-asmlinkage long sys32_truncate64(const char __user * path, unsigned long __dummy,
+-	int length_hi, int length_lo)
 +SYSCALL_DEFINE4(32_truncate64, const char __user *, path,
-+	unsigned long, __dummy, unsigned long, a2, unsigned long, a3)
++	unsigned long, __dummy, int, length_hi, int, length_lo)
+ #endif
+ #ifdef __MIPSEL__
+-asmlinkage long sys32_truncate64(const char __user * path, unsigned long __dummy,
+-	int length_lo, int length_hi)
++SYSCALL_DEFINE4(32_truncate64, const char __user *, path,
++	unsigned long, __dummy, int, length_lo, int, length_hi)
+ #endif
  {
- 	return sys_truncate(path, merge_64(a2, a3));
+ 	loff_t length;
+@@ -191,12 +192,12 @@ asmlinkage long sys32_truncate64(const c
  }
  
+ #ifdef __MIPSEB__
+-asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long __dummy,
+-	int length_hi, int length_lo)
++SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy,
++	int, length_hi, int, length_lo)
+ #endif
+ #ifdef __MIPSEL__
 -asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long __dummy,
--	int a2, int a3)
+-	int length_lo, int length_hi)
 +SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy,
-+	unsigned long, a2, unsigned long, a3)
++	int, length_lo, int, length_hi)
+ #endif
  {
- 	return sys_ftruncate(fd, merge_64(a2, a3));
- }
-@@ -252,9 +253,9 @@ sys32_settimeofday(struct compat_timeval
+ 	loff_t length;
+@@ -272,9 +273,9 @@ sys32_settimeofday(struct compat_timeval
  	return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
  }
  
@@ -78,7 +93,7 @@
  {
  	return sys_llseek(fd, offset_high, offset_low, result, origin);
  }
-@@ -263,20 +264,20 @@ asmlinkage int sys32_llseek(unsigned int
+@@ -283,20 +284,20 @@ asmlinkage int sys32_llseek(unsigned int
     lseek back to original location.  They fail just like lseek does on
     non-seekable files.  */
  
@@ -105,7 +120,7 @@
  {
  	struct timespec t;
  	int ret;
-@@ -293,8 +294,8 @@ asmlinkage int sys32_sched_rr_get_interv
+@@ -313,8 +314,8 @@ asmlinkage int sys32_sched_rr_get_interv
  
  #ifdef CONFIG_SYSVIPC
  
@@ -116,7 +131,7 @@
  {
  	int version, err;
  
-@@ -352,8 +353,8 @@ sys32_ipc(u32 call, int first, int secon
+@@ -372,8 +373,8 @@ sys32_ipc(u32 call, int first, int secon
  
  #else
  
@@ -127,7 +142,7 @@
  {
  	return -ENOSYS;
  }
-@@ -361,7 +362,7 @@ sys32_ipc(u32 call, int first, int secon
+@@ -381,7 +382,7 @@ sys32_ipc(u32 call, int first, int secon
  #endif /* CONFIG_SYSVIPC */
  
  #ifdef CONFIG_MIPS32_N32
@@ -136,7 +151,7 @@
  {
  	/* compat_sys_semctl expects a pointer to union semun */
  	u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
-@@ -370,13 +371,14 @@ asmlinkage long sysn32_semctl(int semid,
+@@ -390,13 +391,14 @@ asmlinkage long sysn32_semctl(int semid,
  	return compat_sys_semctl(semid, semnum, cmd, uptr);
  }
  
@@ -154,7 +169,7 @@
  {
  	return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
  				 compat_ptr(msgp));
-@@ -396,7 +398,7 @@ struct sysctl_args32
+@@ -416,7 +418,7 @@ struct sysctl_args32
  
  #ifdef CONFIG_SYSCTL_SYSCALL
  
@@ -163,7 +178,7 @@
  {
  	struct sysctl_args32 tmp;
  	int error;
-@@ -435,9 +437,16 @@ asmlinkage long sys32_sysctl(struct sysc
+@@ -455,9 +457,16 @@ asmlinkage long sys32_sysctl(struct sysc
  	return error;
  }
  
@@ -181,7 +196,7 @@
  {
  	int ret = 0;
  
-@@ -453,7 +462,7 @@ asmlinkage long sys32_newuname(struct ne
+@@ -473,7 +482,7 @@ asmlinkage long sys32_newuname(struct ne
  	return ret;
  }
  
@@ -190,7 +205,7 @@
  {
  	int ret;
  	personality &= 0xffffffff;
-@@ -476,7 +485,7 @@ struct ustat32 {
+@@ -496,7 +505,7 @@ struct ustat32 {
  
  extern asmlinkage long sys_ustat(dev_t dev, struct ustat __user * ubuf);
  
@@ -199,7 +214,7 @@
  {
  	int err;
  	struct ustat tmp;
-@@ -500,8 +509,8 @@ out:
+@@ -520,8 +529,8 @@ out:
  	return err;
  }
  
@@ -211,8 +226,8 @@
  	mm_segment_t old_fs = get_fs();
  	int ret;
 diff -urpN a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
---- a/arch/mips/kernel/scall32-o32.S	2009-03-03 22:15:28.000000000 -0700
-+++ b/arch/mips/kernel/scall32-o32.S	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/scall32-o32.S	2009-04-05 19:32:24.000000000 -0600
++++ b/arch/mips/kernel/scall32-o32.S	2009-04-05 19:55:04.000000000 -0600
 @@ -414,7 +414,7 @@ einval:	li	v0, -EINVAL
  	sys	sys_swapon		2
  	sys	sys_reboot		3
@@ -232,8 +247,8 @@
  	sys	sys_ftruncate64		4
  	sys	sys_stat64		2
 diff -urpN a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
---- a/arch/mips/kernel/scall64-64.S	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/kernel/scall64-64.S	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/scall64-64.S	2009-04-05 19:32:24.000000000 -0600
++++ b/arch/mips/kernel/scall64-64.S	2009-04-05 19:55:04.000000000 -0600
 @@ -207,7 +207,7 @@ sys_call_table:
  	PTR	sys_newlstat
  	PTR	sys_poll
@@ -244,8 +259,8 @@
  	PTR	sys_munmap
  	PTR	sys_brk
 diff -urpN a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
---- a/arch/mips/kernel/scall64-n32.S	2009-03-08 13:13:09.000000000 -0600
-+++ b/arch/mips/kernel/scall64-n32.S	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/scall64-n32.S	2009-04-05 19:52:55.000000000 -0600
++++ b/arch/mips/kernel/scall64-n32.S	2009-04-05 19:55:04.000000000 -0600
 @@ -129,12 +129,12 @@ EXPORT(sysn32_call_table)
  	PTR	sys_newlstat
  	PTR	sys_poll
@@ -328,8 +343,8 @@
  	PTR	compat_sys_adjtimex
  	PTR	compat_sys_setrlimit		/* 6155 */
 diff -urpN a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
---- a/arch/mips/kernel/scall64-o32.S	2009-03-08 13:15:39.000000000 -0600
-+++ b/arch/mips/kernel/scall64-o32.S	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/scall64-o32.S	2009-04-05 19:52:55.000000000 -0600
++++ b/arch/mips/kernel/scall64-o32.S	2009-04-05 19:55:04.000000000 -0600
 @@ -265,12 +265,12 @@ sys_call_table:
  	PTR	sys_olduname
  	PTR	sys_umask			/* 4060 */
@@ -447,8 +462,8 @@
  	PTR	sys_add_key			/* 4280 */
  	PTR	sys_request_key
 diff -urpN a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
---- a/arch/mips/kernel/signal32.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/kernel/signal32.c	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/signal32.c	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/mips/kernel/signal32.c	2009-04-05 19:55:04.000000000 -0600
 @@ -349,8 +349,8 @@ asmlinkage int sys32_rt_sigsuspend(nabi_
  	return -ERESTARTNOHAND;
  }
@@ -520,8 +535,8 @@
  	siginfo_t info;
  	struct rusage ru;
 diff -urpN a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
---- a/arch/mips/kernel/signal.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/kernel/signal.c	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/kernel/signal.c	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/mips/kernel/signal.c	2009-04-05 19:55:04.000000000 -0600
 @@ -19,6 +19,7 @@
  #include <linux/ptrace.h>
  #include <linux/unistd.h>
@@ -542,9 +557,9 @@
  	struct k_sigaction new_ka, old_ka;
  	int ret;
 diff -urpN a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
---- a/arch/mips/kernel/syscall.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/kernel/syscall.c	2009-03-08 13:16:31.000000000 -0600
-@@ -146,9 +146,9 @@ out:
+--- a/arch/mips/kernel/syscall.c	2009-04-05 19:32:24.000000000 -0600
++++ b/arch/mips/kernel/syscall.c	2009-04-05 19:55:04.000000000 -0600
+@@ -153,9 +153,9 @@ out:
  	return error;
  }
  
@@ -557,7 +572,7 @@
  {
  	unsigned long result;
  
-@@ -162,9 +162,9 @@ out:
+@@ -169,9 +169,9 @@ out:
  	return result;
  }
  
@@ -570,7 +585,7 @@
  {
  	if (pgoff & (~PAGE_MASK >> 12))
  		return -EINVAL;
-@@ -234,7 +234,7 @@ out:
+@@ -241,7 +241,7 @@ out:
  /*
   * Compacrapability ...
   */
@@ -579,7 +594,7 @@
  {
  	if (name && !copy_to_user(name, utsname(), sizeof (*name)))
  		return 0;
-@@ -244,7 +244,7 @@ asmlinkage int sys_uname(struct old_utsn
+@@ -251,7 +251,7 @@ asmlinkage int sys_uname(struct old_utsn
  /*
   * Compacrapability ...
   */
@@ -588,7 +603,7 @@
  {
  	int error;
  
-@@ -273,7 +273,7 @@ asmlinkage int sys_olduname(struct oldol
+@@ -280,7 +280,7 @@ asmlinkage int sys_olduname(struct oldol
  	return error;
  }
  
@@ -597,7 +612,7 @@
  {
  	struct thread_info *ti = task_thread_info(current);
  
-@@ -284,7 +284,7 @@ asmlinkage int sys_set_thread_area(unsig
+@@ -291,7 +291,7 @@ asmlinkage int sys_set_thread_area(unsig
  	return 0;
  }
  
@@ -606,7 +621,7 @@
  {
  	switch (cmd) {
  	case MIPS_ATOMIC_SET:
-@@ -319,8 +319,8 @@ asmlinkage int _sys_sysmips(int cmd, lon
+@@ -326,8 +326,8 @@ asmlinkage int _sys_sysmips(int cmd, lon
   *
   * This is really horribly ugly.
   */
@@ -617,7 +632,7 @@
  {
  	int version, ret;
  
-@@ -405,7 +405,7 @@ asmlinkage int sys_ipc(unsigned int call
+@@ -412,7 +412,7 @@ asmlinkage int sys_ipc(unsigned int call
  /*
   * No implemented yet ...
   */
@@ -627,8 +642,8 @@
  	return -ENOSYS;
  }
 diff -urpN a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
---- a/arch/mips/mm/cache.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/mips/mm/cache.c	2009-03-08 13:16:31.000000000 -0600
+--- a/arch/mips/mm/cache.c	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/mips/mm/cache.c	2009-04-05 19:55:04.000000000 -0600
 @@ -13,6 +13,7 @@
  #include <linux/linkage.h>
  #include <linux/module.h>
@@ -637,7 +652,7 @@
  #include <linux/mm.h>
  
  #include <asm/cacheflush.h>
-@@ -57,8 +58,8 @@ EXPORT_SYMBOL(_dma_cache_wback_inv);
+@@ -54,8 +55,8 @@ EXPORT_SYMBOL(_dma_cache_wback_inv);
   * We could optimize the case where the cache argument is not BCACHE but
   * that seems very atypical use ...
   */

Copied and modified: dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch (from r13322, dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch)
==============================================================================
--- dists/lenny-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch	Sat Apr  4 00:49:23 2009	(r13322, copy source)
+++ dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch	Mon Apr  6 02:53:15 2009	(r13338)
@@ -6,24 +6,30 @@
     
     Signed-off-by: David S. Miller <davem at davemloft.net>
 
-Backported to Debian's 2.6.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
 
-diff -urpN a/arch/sparc64/kernel/syscalls.S b/arch/sparc64/kernel/syscalls.S
---- a/arch/sparc64/kernel/syscalls.S	2009-03-08 16:12:32.000000000 -0600
-+++ b/arch/sparc64/kernel/syscalls.S	2009-03-08 16:27:44.000000000 -0600
-@@ -21,7 +21,7 @@ execve_merge:
- 
+diff -urpN a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S
+--- a/arch/sparc64/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
++++ b/arch/sparc64/kernel/entry.S	2009-04-05 20:38:10.000000000 -0600
+@@ -1432,12 +1432,12 @@ execve_merge:
+ 	jmpl		%g1, %g0
+ 	 add		%sp, PTREGS_OFF, %o0
+ 
+-	.globl	sys_pipe, sys_sigpause, sys_nis_syscall
++	.globl	sys_sparc_pipe, sys_sigpause, sys_nis_syscall
+ 	.globl	sys_rt_sigreturn
+ 	.globl	sys_ptrace
+ 	.globl	sys_sigaltstack
  	.align	32
- sys_sparc_pipe:
--	ba,pt	%xcc, sparc_pipe
-+	ba,pt	%xcc, sys_sparc_pipe_real
- 	 add	%sp, PTREGS_OFF, %o0
- sys_nis_syscall:
- 	ba,pt	%xcc, c_sys_nis_syscall
+-sys_pipe:	ba,pt		%xcc, sparc_pipe
++sys_sparc_pipe:	ba,pt		%xcc, sys_sparc_pipe_real
+ 		 add		%sp, PTREGS_OFF, %o0
+ sys_nis_syscall:ba,pt		%xcc, c_sys_nis_syscall
+ 		 add		%sp, PTREGS_OFF, %o0
 diff -urpN a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
---- a/arch/sparc64/kernel/sys_sparc.c	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/sparc64/kernel/sys_sparc.c	2009-03-08 16:27:01.000000000 -0600
-@@ -397,7 +397,7 @@ void arch_pick_mmap_layout(struct mm_str
+--- a/arch/sparc64/kernel/sys_sparc.c	2009-04-05 19:32:22.000000000 -0600
++++ b/arch/sparc64/kernel/sys_sparc.c	2009-04-05 20:13:32.000000000 -0600
+@@ -396,7 +396,7 @@ void arch_pick_mmap_layout(struct mm_str
  	}
  }
  
@@ -32,7 +38,7 @@
  {
  	/* People could try to be nasty and use ta 0x6d in 32bit programs */
  	if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32)
-@@ -413,7 +413,7 @@ asmlinkage unsigned long sparc_brk(unsig
+@@ -412,7 +412,7 @@ asmlinkage unsigned long sparc_brk(unsig
   * sys_pipe() is the normal C calling standard for creating
   * a pipe. It's not the way unix traditionally does this, though.
   */
@@ -41,7 +47,7 @@
  {
  	int fd[2];
  	int error;
-@@ -433,8 +433,8 @@ out:
+@@ -432,8 +432,8 @@ out:
   * This is really horribly ugly.
   */
  
@@ -52,7 +58,7 @@
  {
  	long err;
  
-@@ -517,7 +517,7 @@ out:
+@@ -515,7 +515,7 @@ out:
  	return err;
  }
  
@@ -61,7 +67,7 @@
  {
  	int ret = sys_newuname(name);
  	
-@@ -528,7 +528,7 @@ asmlinkage long sparc64_newuname(struct 
+@@ -526,7 +526,7 @@ asmlinkage long sparc64_newuname(struct 
  	return ret;
  }
  
@@ -70,7 +76,7 @@
  {
  	int ret;
  
-@@ -562,9 +562,9 @@ int sparc64_mmap_check(unsigned long add
+@@ -560,9 +560,9 @@ int sparc64_mmap_check(unsigned long add
  }
  
  /* Linux version of mmap */
@@ -83,7 +89,7 @@
  {
  	struct file * file = NULL;
  	unsigned long retval = -EBADF;
-@@ -587,7 +587,7 @@ out:
+@@ -585,7 +585,7 @@ out:
  	return retval;
  }
  
@@ -92,7 +98,7 @@
  {
  	long ret;
  
-@@ -604,9 +604,9 @@ extern unsigned long do_mremap(unsigned 
+@@ -602,9 +602,9 @@ extern unsigned long do_mremap(unsigned 
  	unsigned long old_len, unsigned long new_len,
  	unsigned long flags, unsigned long new_addr);
                  
@@ -105,7 +111,7 @@
  {
  	unsigned long ret = -EINVAL;
  
-@@ -669,7 +669,7 @@ asmlinkage void sparc_breakpoint(struct 
+@@ -667,7 +667,7 @@ asmlinkage void sparc_breakpoint(struct 
  
  extern void check_pending(int signum);
  
@@ -114,9 +120,9 @@
  {
          int nlen, err;
  
-@@ -692,11 +692,10 @@ out:
- 	return err;
+@@ -728,11 +728,10 @@ asmlinkage long sunos_syscall(struct pt_
  }
+ #endif
  
 -asmlinkage long sys_utrap_install(utrap_entry_t type,
 -				  utrap_handler_t new_p,
@@ -130,7 +136,7 @@
  {
  	if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31)
  		return -EINVAL;
-@@ -762,11 +761,9 @@ asmlinkage long sparc_memory_ordering(un
+@@ -797,11 +796,9 @@ long sparc_memory_ordering(unsigned long
  	return 0;
  }
  
@@ -145,7 +151,7 @@
  {
  	struct k_sigaction new_ka, old_ka;
  	int ret;
-@@ -806,7 +803,8 @@ asmlinkage void update_perfctrs(void)
+@@ -841,7 +838,8 @@ asmlinkage void update_perfctrs(void)
  	reset_pic();
  }
  
@@ -155,22 +161,9 @@
  {
  	int err = 0;
  
-diff -urpN a/arch/sparc64/kernel/systbls.h b/arch/sparc64/kernel/systbls.h
---- a/arch/sparc64/kernel/systbls.h	2008-07-13 15:51:29.000000000 -0600
-+++ b/arch/sparc64/kernel/systbls.h	2009-03-08 16:33:16.000000000 -0600
-@@ -16,9 +16,6 @@ extern asmlinkage long sys_ipc(unsigned 
- 			       void __user *ptr, long fifth);
- extern asmlinkage long sparc64_newuname(struct new_utsname __user *name);
- extern asmlinkage long sparc64_personality(unsigned long personality);
--extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len,
--					 unsigned long prot, unsigned long flags,
--					 unsigned long fd, unsigned long off);
- extern asmlinkage long sys64_munmap(unsigned long addr, size_t len);
- extern asmlinkage unsigned long sys64_mremap(unsigned long addr,
- 					     unsigned long old_len,
 diff -urpN a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
---- a/arch/sparc64/kernel/systbls.S	2009-03-08 16:12:32.000000000 -0600
-+++ b/arch/sparc64/kernel/systbls.S	2009-03-08 16:33:04.000000000 -0600
+--- a/arch/sparc64/kernel/systbls.S	2009-04-05 19:32:23.000000000 -0600
++++ b/arch/sparc64/kernel/systbls.S	2009-04-05 20:14:09.000000000 -0600
 @@ -21,7 +21,7 @@ sys_call_table32:
  /*0*/	.word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write
  /*5*/	.word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link
@@ -178,7 +171,7 @@
 -/*15*/	.word sys_chmod, sys32_lchown16, sparc_brk, sys32_perfctr, sys32_lseek
 +/*15*/	.word sys_chmod, sys32_lchown16, sys_sparc_brk, sys32_perfctr, sys32_lseek
  /*20*/	.word sys_getpid, sys_capget, sys_capset, sys32_setuid16, sys32_getuid16
- /*25*/	.word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
+ /*25*/	.word sys32_vmsplice, sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
  /*30*/	.word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
 @@ -55,8 +55,8 @@ sys_call_table32:
  /*170*/	.word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents
@@ -191,7 +184,7 @@
  	.word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask
  /*200*/	.word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
  	.word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64
-@@ -94,7 +94,7 @@ sys_call_table:
+@@ -93,7 +93,7 @@ sys_call_table:
  /*0*/	.word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write
  /*5*/	.word sys_open, sys_close, sys_wait4, sys_creat, sys_link
  /*10*/  .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod
@@ -200,7 +193,7 @@
  /*20*/	.word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid
  /*25*/	.word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
  /*30*/	.word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
-@@ -105,7 +105,7 @@ sys_call_table:
+@@ -104,7 +104,7 @@ sys_call_table:
  	.word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
  /*60*/	.word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
  	.word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall
@@ -209,7 +202,7 @@
  	.word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups
  /*80*/	.word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall
  	.word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall
-@@ -128,8 +128,8 @@ sys_call_table:
+@@ -127,8 +127,8 @@ sys_call_table:
  /*170*/	.word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
  	.word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
  /*180*/	.word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall
@@ -220,7 +213,7 @@
  	.word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask
  /*200*/	.word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall
  	.word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
-@@ -141,7 +141,7 @@ sys_call_table:
+@@ -140,7 +140,7 @@ sys_call_table:
  	.word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
  /*240*/	.word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
  	.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep

Modified: dists/etch-security/linux-2.6.24/debian/patches/series/6~etchnhalf.8etch1
==============================================================================
--- dists/etch-security/linux-2.6.24/debian/patches/series/6~etchnhalf.8etch1	Mon Apr  6 01:50:00 2009	(r13337)
+++ dists/etch-security/linux-2.6.24/debian/patches/series/6~etchnhalf.8etch1	Mon Apr  6 02:53:15 2009	(r13338)
@@ -63,8 +63,11 @@
 + bugfix/hppa/userspace-unwind-crash.patch
 + bugfix/all/net-SO_BSDCOMPAT-leak.patch
 + bugfix/all/net-SO_BSDCOMPAT-leak-2.patch
-+ bugfix/all/CVE-2009-0029/mips-wire-up-o32-syscall-to-the-right-function.patch
-+ bugfix/all/CVE-2009-0029/mips-finish-fixing-CVE-2009-0029.patch
 + bugfix/all/CVE-2009-0029/mips-rename-sys_pipe.patch
 + bugfix/all/CVE-2009-0029/alpha-use-syscall-wrappers.patch
 + bugfix/all/CVE-2009-0029/sparc64-use-syscall-wrappers.patch
++ bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers.patch
++ bugfix/all/CVE-2009-0029/mips-enable-syscall-wrappers-no-abi-change.patch
++ bugfix/all/CVE-2009-0029/sparc64-wrap-arch-specific-syscalls.patch
++ bugfix/all/CVE-2009-0029/fix-uml-compile.patch
++ bugfix/all/CVE-2009-0029/compat-zero-upper-32bits-of-offset_high-and-offset_low.patch



More information about the Kernel-svn-changes mailing list