[kernel] r12734 - in dists/etch-security/linux-2.6/debian/patches: bugfix/all/CVE-2009-0029 features/all/vserver series

Dann Frazier dannf at alioth.debian.org
Mon Feb 9 15:47:56 UTC 2009


Author: dannf
Date: Mon Feb  9 15:47:53 2009
New Revision: 12734

Log:
Initial CVE-2009-0029 backport for 2.6.18

Added:
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/
      - copied from r12610, /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037pre1-missing-include.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038pre2-missing-include.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0090-i386-remove-sys_pipe-proto.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0091-avoid-abi-change.patch
Removed:
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0019pre1-missing-include.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0041pre1-missing-include.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0042pre1-missing-include.patch
Modified:
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0028-System-call-wrappers-part-18.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043pre1-missing-include.patch
   dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
   dists/etch-security/linux-2.6/debian/patches/features/all/vserver/vs2.0.2.2-rc9.patch
   dists/etch-security/linux-2.6/debian/patches/series/23etch2

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch	Mon Feb  9 15:47:53 2009
@@ -11,19 +11,15 @@
 
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- include/linux/compat.h   |   13 +++++++++++++
- include/linux/syscalls.h |   12 ------------
- 2 files changed, 13 insertions(+), 12 deletions(-)
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/include/linux/compat.h linux-source-2.6.24/include/linux/compat.h
---- linux-source-2.6.24.orig/include/linux/compat.h	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/include/linux/compat.h	2009-01-21 00:03:52.000000000 -0700
-@@ -267,5 +267,18 @@ asmlinkage long compat_sys_signalfd(int 
- asmlinkage long compat_sys_timerfd(int ufd, int clockid, int flags,
- 				const struct compat_itimerspec __user *utmr);
+diff -urpN linux-source-2.6.18.orig/include/linux/compat.h linux-source-2.6.18/include/linux/compat.h
+--- linux-source-2.6.18.orig/include/linux/compat.h	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/include/linux/compat.h	2009-01-25 19:30:22.000000000 -0700
+@@ -228,5 +228,18 @@ asmlinkage long compat_sys_adjtimex(stru
+ 
+ extern int compat_printk(const char *fmt, ...);
  
 +asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
 +				      __u32 __user *pages,
@@ -40,10 +36,10 @@
 +
  #endif /* CONFIG_COMPAT */
  #endif /* _LINUX_COMPAT_H */
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 00:03:52.000000000 -0700
-@@ -526,11 +526,6 @@ asmlinkage long sys_move_pages(pid_t pid
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-25 19:37:08.000000000 -0700
+@@ -521,11 +521,6 @@ asmlinkage long sys_move_pages(pid_t pid
  				const int __user *nodes,
  				int __user *status,
  				int flags);
@@ -55,10 +51,10 @@
  asmlinkage long sys_mbind(unsigned long start, unsigned long len,
  				unsigned long mode,
  				unsigned long __user *nmask,
-@@ -578,13 +573,6 @@ asmlinkage long sys_readlinkat(int dfd, 
+@@ -571,13 +566,6 @@ asmlinkage long sys_fstatat64(int dfd, c
+ 			       struct stat64 __user *statbuf, int flag);
+ asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *buf,
  			       int bufsiz);
- asmlinkage long sys_utimensat(int dfd, char __user *filename,
- 				struct timespec __user *utimes, int flags);
 -asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
 -				     struct compat_timeval __user *t);
 -asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch	Mon Feb  9 15:47:53 2009
@@ -15,12 +15,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org)
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org)
 
-diff -urpN linux-source-2.6.24.orig/fs/read_write.c linux-source-2.6.24/fs/read_write.c
---- linux-source-2.6.24.orig/fs/read_write.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/read_write.c	2009-01-21 00:05:39.000000000 -0700
-@@ -128,7 +128,7 @@ loff_t vfs_llseek(struct file *file, lof
+diff -urpN linux-source-2.6.18.orig/fs/read_write.c linux-source-2.6.18/fs/read_write.c
+--- linux-source-2.6.18.orig/fs/read_write.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/read_write.c	2009-01-25 19:39:05.000000000 -0700
+@@ -125,7 +125,7 @@ loff_t vfs_llseek(struct file *file, lof
  }
  EXPORT_SYMBOL(vfs_llseek);
  
@@ -29,7 +29,7 @@
  {
  	off_t retval;
  	struct file * file;
-@@ -354,7 +354,7 @@ static inline void file_pos_write(struct
+@@ -339,7 +339,7 @@ static inline void file_pos_write(struct
  	file->f_pos = pos;
  }
  
@@ -38,16 +38,16 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -372,7 +372,7 @@ asmlinkage ssize_t sys_read(unsigned int
+@@ -357,7 +357,7 @@ asmlinkage ssize_t sys_read(unsigned int
  }
- EXPORT_UNUSED_SYMBOL_GPL(sys_read); /* to be deleted for 2.6.25 */
+ EXPORT_SYMBOL_GPL(sys_read);
  
 -asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count)
 +asmlinkage long sys_write(unsigned int fd, const char __user * buf, size_t count)
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -389,7 +389,7 @@ asmlinkage ssize_t sys_write(unsigned in
+@@ -374,7 +374,7 @@ asmlinkage ssize_t sys_write(unsigned in
  	return ret;
  }
  
@@ -56,7 +56,7 @@
  			     size_t count, loff_t pos)
  {
  	struct file *file;
-@@ -410,7 +410,7 @@ asmlinkage ssize_t sys_pread64(unsigned 
+@@ -395,7 +395,7 @@ asmlinkage ssize_t sys_pread64(unsigned 
  	return ret;
  }
  
@@ -65,7 +65,7 @@
  			      size_t count, loff_t pos)
  {
  	struct file *file;
-@@ -660,7 +660,7 @@ ssize_t vfs_writev(struct file *file, co
+@@ -594,7 +594,7 @@ ssize_t vfs_writev(struct file *file, co
  
  EXPORT_SYMBOL(vfs_writev);
  
@@ -74,7 +74,7 @@
  sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
  {
  	struct file *file;
-@@ -681,7 +681,7 @@ sys_readv(unsigned long fd, const struct
+@@ -615,7 +615,7 @@ sys_readv(unsigned long fd, const struct
  	return ret;
  }
  
@@ -83,7 +83,7 @@
  sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
  {
  	struct file *file;
-@@ -808,7 +808,7 @@ out:
+@@ -731,7 +731,7 @@ out:
  	return retval;
  }
  
@@ -92,7 +92,7 @@
  {
  	loff_t pos;
  	off_t off;
-@@ -827,7 +827,7 @@ asmlinkage ssize_t sys_sendfile(int out_
+@@ -750,7 +750,7 @@ asmlinkage ssize_t sys_sendfile(int out_
  	return do_sendfile(out_fd, in_fd, NULL, count, 0);
  }
  
@@ -101,10 +101,10 @@
  {
  	loff_t pos;
  	ssize_t ret;
-diff -urpN linux-source-2.6.24.orig/fs/xattr.c linux-source-2.6.24/fs/xattr.c
---- linux-source-2.6.24.orig/fs/xattr.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/xattr.c	2009-01-21 00:11:43.000000000 -0700
-@@ -310,7 +310,7 @@ getxattr(struct dentry *d, char __user *
+diff -urpN linux-source-2.6.18.orig/fs/xattr.c linux-source-2.6.18/fs/xattr.c
+--- linux-source-2.6.18.orig/fs/xattr.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/xattr.c	2009-01-25 19:39:05.000000000 -0700
+@@ -285,7 +285,7 @@ getxattr(struct dentry *d, char __user *
  	return error;
  }
  
@@ -113,7 +113,7 @@
  sys_getxattr(char __user *path, char __user *name, void __user *value,
  	     size_t size)
  {
-@@ -325,7 +325,7 @@ sys_getxattr(char __user *path, char __u
+@@ -300,7 +300,7 @@ sys_getxattr(char __user *path, char __u
  	return error;
  }
  
@@ -122,7 +122,7 @@
  sys_lgetxattr(char __user *path, char __user *name, void __user *value,
  	      size_t size)
  {
-@@ -340,7 +340,7 @@ sys_lgetxattr(char __user *path, char __
+@@ -315,7 +315,7 @@ sys_lgetxattr(char __user *path, char __
  	return error;
  }
  
@@ -131,7 +131,7 @@
  sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size)
  {
  	struct file *f;
-@@ -385,7 +385,7 @@ listxattr(struct dentry *d, char __user 
+@@ -370,7 +370,7 @@ out:
  	return error;
  }
  
@@ -140,7 +140,7 @@
  sys_listxattr(char __user *path, char __user *list, size_t size)
  {
  	struct nameidata nd;
-@@ -399,7 +399,7 @@ sys_listxattr(char __user *path, char __
+@@ -384,7 +384,7 @@ sys_listxattr(char __user *path, char __
  	return error;
  }
  
@@ -149,7 +149,7 @@
  sys_llistxattr(char __user *path, char __user *list, size_t size)
  {
  	struct nameidata nd;
-@@ -413,7 +413,7 @@ sys_llistxattr(char __user *path, char _
+@@ -398,7 +398,7 @@ sys_llistxattr(char __user *path, char _
  	return error;
  }
  
@@ -158,10 +158,10 @@
  sys_flistxattr(int fd, char __user *list, size_t size)
  {
  	struct file *f;
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 00:03:52.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 00:10:17.000000000 -0700
-@@ -78,7 +78,7 @@ asmlinkage long sys_times(struct tms __u
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-25 19:37:08.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-25 19:39:05.000000000 -0700
+@@ -77,7 +77,7 @@ asmlinkage long sys_times(struct tms __u
  
  asmlinkage long sys_gettid(void);
  asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp);
@@ -170,7 +170,7 @@
  asmlinkage long sys_getpid(void);
  asmlinkage long sys_getppid(void);
  asmlinkage long sys_getuid(void);
-@@ -167,7 +167,7 @@ asmlinkage long sys_kexec_load(unsigned 
+@@ -166,7 +166,7 @@ asmlinkage long sys_kexec_load(unsigned 
  				unsigned long flags);
  
  asmlinkage long sys_exit(int error_code);
@@ -179,7 +179,7 @@
  asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr,
  				int options, struct rusage __user *ru);
  asmlinkage long sys_waitid(int which, pid_t pid,
-@@ -197,7 +197,7 @@ asmlinkage long sys_tkill(int pid, int s
+@@ -196,7 +196,7 @@ asmlinkage long sys_tkill(int pid, int s
  asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo);
  asmlinkage long sys_sgetmask(void);
  asmlinkage long sys_ssetmask(int newmask);
@@ -188,7 +188,7 @@
  asmlinkage long sys_pause(void);
  
  asmlinkage long sys_sync(void);
-@@ -247,27 +247,27 @@ asmlinkage long sys_lsetxattr(char __use
+@@ -246,27 +246,27 @@ asmlinkage long sys_lsetxattr(char __use
  				void __user *value, size_t size, int flags);
  asmlinkage long sys_fsetxattr(int fd, char __user *name, void __user *value,
  				size_t size, int flags);
@@ -231,7 +231,7 @@
  asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
  			unsigned long prot, unsigned long pgoff,
  			unsigned long flags);
-@@ -319,10 +319,10 @@ asmlinkage long sys_io_submit(aio_contex
+@@ -318,10 +318,10 @@ asmlinkage long sys_io_submit(aio_contex
  				struct iocb __user * __user *);
  asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
  			      struct io_event __user *result);
@@ -246,7 +246,7 @@
  asmlinkage long sys_readlink(const char __user *path,
  				char __user *buf, int bufsiz);
  asmlinkage long sys_creat(const char __user *pathname, int mode);
-@@ -366,26 +366,25 @@ asmlinkage long sys_utime(char __user *f
+@@ -365,26 +365,25 @@ asmlinkage long sys_utime(char __user *f
  				struct utimbuf __user *times);
  asmlinkage long sys_utimes(char __user *filename,
  				struct timeval __user *utimes);
@@ -289,7 +289,7 @@
  asmlinkage long sys_getcwd(char __user *buf, unsigned long size);
  asmlinkage long sys_mkdir(const char __user *pathname, int mode);
  asmlinkage long sys_chdir(const char __user *filename);
-@@ -472,7 +471,7 @@ asmlinkage long sys_shmctl(int shmid, in
+@@ -467,7 +466,7 @@ asmlinkage long sys_shmctl(int shmid, in
  asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr);
  asmlinkage long sys_mq_unlink(const char __user *name);
  asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *abs_timeout);
@@ -298,10 +298,10 @@
  asmlinkage long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *notification);
  asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqstat, struct mq_attr __user *omqstat);
  
-diff -urpN linux-source-2.6.24.orig/ipc/mqueue.c linux-source-2.6.24/ipc/mqueue.c
---- linux-source-2.6.24.orig/ipc/mqueue.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/ipc/mqueue.c	2009-01-21 00:05:39.000000000 -0700
-@@ -894,7 +894,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/ipc/mqueue.c linux-source-2.6.18/ipc/mqueue.c
+--- linux-source-2.6.18.orig/ipc/mqueue.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/ipc/mqueue.c	2009-01-25 19:39:05.000000000 -0700
+@@ -895,7 +895,7 @@ out:
  	return ret;
  }
  
@@ -310,10 +310,10 @@
  	size_t msg_len, unsigned int __user *u_msg_prio,
  	const struct timespec __user *u_abs_timeout)
  {
-diff -urpN linux-source-2.6.24.orig/kernel/exit.c linux-source-2.6.24/kernel/exit.c
---- linux-source-2.6.24.orig/kernel/exit.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/exit.c	2009-01-21 00:05:39.000000000 -0700
-@@ -1104,9 +1104,11 @@ do_group_exit(int exit_code)
+diff -urpN linux-source-2.6.18.orig/kernel/exit.c linux-source-2.6.18/kernel/exit.c
+--- linux-source-2.6.18.orig/kernel/exit.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/kernel/exit.c	2009-01-25 19:39:05.000000000 -0700
+@@ -1016,9 +1016,11 @@ do_group_exit(int exit_code)
   * wait4()-ing process will get the correct exit code - even if this
   * thread is not the thread group leader.
   */
@@ -326,10 +326,10 @@
  }
  
  static int eligible_child(pid_t pid, int options, struct task_struct *p)
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 00:05:39.000000000 -0700
-@@ -2543,7 +2543,7 @@ sys_ssetmask(int newmask)
+diff -urpN linux-source-2.6.18.orig/kernel/signal.c linux-source-2.6.18/kernel/signal.c
+--- linux-source-2.6.18.orig/kernel/signal.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/signal.c	2009-01-25 19:39:05.000000000 -0700
+@@ -2523,7 +2523,7 @@ sys_ssetmask(int newmask)
  /*
   * For backwards compatibility.  Functionality superseded by sigaction.
   */
@@ -338,10 +338,10 @@
  sys_signal(int sig, __sighandler_t handler)
  {
  	struct k_sigaction new_sa, old_sa;
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c linux-source-2.6.24/kernel/timer.c
---- linux-source-2.6.24.orig/kernel/timer.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/kernel/timer.c	2009-01-21 00:05:39.000000000 -0700
-@@ -947,7 +947,7 @@ void do_timer(unsigned long ticks)
+diff -urpN linux-source-2.6.18.orig/kernel/timer.c linux-source-2.6.18/kernel/timer.c
+--- linux-source-2.6.18.orig/kernel/timer.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/timer.c	2009-01-25 19:39:05.000000000 -0700
+@@ -1295,7 +1295,7 @@ void do_timer(struct pt_regs *regs)
   * For backwards compatibility?  This can be done in libc so Alpha
   * and all newer ports shouldn't need it.
   */
@@ -350,10 +350,10 @@
  {
  	return alarm_setitimer(seconds);
  }
-diff -urpN linux-source-2.6.24.orig/mm/filemap.c linux-source-2.6.24/mm/filemap.c
---- linux-source-2.6.24.orig/mm/filemap.c	2008-10-10 00:11:30.000000000 -0600
-+++ linux-source-2.6.24/mm/filemap.c	2009-01-21 00:05:39.000000000 -0700
-@@ -1231,7 +1231,7 @@ do_readahead(struct address_space *mappi
+diff -urpN linux-source-2.6.18.orig/mm/filemap.c linux-source-2.6.18/mm/filemap.c
+--- linux-source-2.6.18.orig/mm/filemap.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/mm/filemap.c	2009-01-25 19:39:05.000000000 -0700
+@@ -1285,7 +1285,7 @@ do_readahead(struct address_space *mappi
  	return 0;
  }
  
@@ -362,10 +362,10 @@
  {
  	ssize_t ret;
  	struct file *file;
-diff -urpN linux-source-2.6.24.orig/mm/mmap.c linux-source-2.6.24/mm/mmap.c
---- linux-source-2.6.24.orig/mm/mmap.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/mm/mmap.c	2009-01-21 00:05:39.000000000 -0700
-@@ -233,7 +233,7 @@ static struct vm_area_struct *remove_vma
+diff -urpN linux-source-2.6.18.orig/mm/mmap.c linux-source-2.6.18/mm/mmap.c
+--- linux-source-2.6.18.orig/mm/mmap.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/mm/mmap.c	2009-01-25 19:39:05.000000000 -0700
+@@ -226,7 +226,7 @@ static struct vm_area_struct *remove_vma
  	return next;
  }
  
@@ -374,10 +374,10 @@
  {
  	unsigned long rlim, retval;
  	unsigned long newbrk, oldbrk;
-diff -urpN linux-source-2.6.24.orig/mm/mremap.c linux-source-2.6.24/mm/mremap.c
---- linux-source-2.6.24.orig/mm/mremap.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/mremap.c	2009-01-21 00:05:39.000000000 -0700
-@@ -412,7 +412,7 @@ out_nc:
+diff -urpN linux-source-2.6.18.orig/mm/mremap.c linux-source-2.6.18/mm/mremap.c
+--- linux-source-2.6.18.orig/mm/mremap.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/mm/mremap.c	2009-01-25 19:39:05.000000000 -0700
+@@ -402,7 +402,7 @@ out_nc:
  	return ret;
  }
  
@@ -386,10 +386,10 @@
  	unsigned long old_len, unsigned long new_len,
  	unsigned long flags, unsigned long new_addr)
  {
-diff -urpN linux-source-2.6.24.orig/mm/nommu.c linux-source-2.6.24/mm/nommu.c
---- linux-source-2.6.24.orig/mm/nommu.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/nommu.c	2009-01-21 00:05:39.000000000 -0700
-@@ -295,7 +295,7 @@ EXPORT_SYMBOL(vm_insert_page);
+diff -urpN linux-source-2.6.18.orig/mm/nommu.c linux-source-2.6.18/mm/nommu.c
+--- linux-source-2.6.18.orig/mm/nommu.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/mm/nommu.c	2009-01-25 19:39:05.000000000 -0700
+@@ -243,7 +243,7 @@ void vunmap(void *addr)
   *  to a regular file.  in this case, the unmapping will need
   *  to invoke file system routines that need the global lock.
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch	Mon Feb  9 15:47:53 2009
@@ -12,12 +12,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 (mn10300 and sh arch-specific changes ignored)
 
-diff -urpN linux-source-2.6.24.orig/arch/arm/kernel/calls.S linux-source-2.6.24/arch/arm/kernel/calls.S
---- linux-source-2.6.24.orig/arch/arm/kernel/calls.S	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/arch/arm/kernel/calls.S	2009-01-21 00:12:49.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/arm/kernel/calls.S linux-source-2.6.18/arch/arm/kernel/calls.S
+--- linux-source-2.6.18.orig/arch/arm/kernel/calls.S	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/arch/arm/kernel/calls.S	2009-01-25 19:51:53.000000000 -0700
 @@ -98,7 +98,7 @@
  		CALL(sys_uselib)
  		CALL(sys_swapon)
@@ -27,10 +27,10 @@
  /* 90 */	CALL(OBSOLETE(old_mmap))	/* used by libc4 */
  		CALL(sys_munmap)
  		CALL(sys_truncate)
-diff -urpN linux-source-2.6.24.orig/arch/cris/arch-v10/kernel/entry.S linux-source-2.6.24/arch/cris/arch-v10/kernel/entry.S
---- linux-source-2.6.24.orig/arch/cris/arch-v10/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/cris/arch-v10/kernel/entry.S	2009-01-21 00:12:49.000000000 -0700
-@@ -934,7 +934,7 @@ sys_call_table:	
+diff -urpN linux-source-2.6.18.orig/arch/cris/arch-v10/kernel/entry.S linux-source-2.6.18/arch/cris/arch-v10/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/cris/arch-v10/kernel/entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/cris/arch-v10/kernel/entry.S	2009-01-25 19:51:53.000000000 -0700
+@@ -935,7 +935,7 @@ sys_call_table:	
  	.long sys_uselib
  	.long sys_swapon
  	.long sys_reboot
@@ -39,9 +39,9 @@
  	.long old_mmap		/* 90 */
  	.long sys_munmap
  	.long sys_truncate
-diff -urpN linux-source-2.6.24.orig/arch/cris/arch-v32/kernel/entry.S linux-source-2.6.24/arch/cris/arch-v32/kernel/entry.S
---- linux-source-2.6.24.orig/arch/cris/arch-v32/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/cris/arch-v32/kernel/entry.S	2009-01-21 00:12:49.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/cris/arch-v32/kernel/entry.S linux-source-2.6.18/arch/cris/arch-v32/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/cris/arch-v32/kernel/entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/cris/arch-v32/kernel/entry.S	2009-01-25 19:51:53.000000000 -0700
 @@ -609,7 +609,7 @@ sys_call_table:
  	.long sys_uselib
  	.long sys_swapon
@@ -51,9 +51,9 @@
  	.long old_mmap		/* 90 */
  	.long sys_munmap
  	.long sys_truncate
-diff -urpN linux-source-2.6.24.orig/arch/h8300/kernel/syscalls.S linux-source-2.6.24/arch/h8300/kernel/syscalls.S
---- linux-source-2.6.24.orig/arch/h8300/kernel/syscalls.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/h8300/kernel/syscalls.S	2009-01-21 00:12:49.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/h8300/kernel/syscalls.S linux-source-2.6.18/arch/h8300/kernel/syscalls.S
+--- linux-source-2.6.18.orig/arch/h8300/kernel/syscalls.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/h8300/kernel/syscalls.S	2009-01-25 19:51:53.000000000 -0700
 @@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table)	
  	.long SYMBOL_NAME(sys_uselib)
  	.long SYMBOL_NAME(sys_swapon)
@@ -63,9 +63,9 @@
  	.long SYMBOL_NAME(old_mmap)		/* 90 */
  	.long SYMBOL_NAME(sys_munmap)
  	.long SYMBOL_NAME(sys_truncate)
-diff -urpN linux-source-2.6.24.orig/arch/m68k/kernel/entry.S linux-source-2.6.24/arch/m68k/kernel/entry.S
---- linux-source-2.6.24.orig/arch/m68k/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/m68k/kernel/entry.S	2009-01-21 00:12:49.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/m68k/kernel/entry.S linux-source-2.6.18/arch/m68k/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/m68k/kernel/entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/m68k/kernel/entry.S	2009-01-25 19:51:53.000000000 -0700
 @@ -513,7 +513,7 @@ sys_call_table:
  	.long sys_uselib
  	.long sys_swapon
@@ -75,9 +75,9 @@
  	.long old_mmap		/* 90 */
  	.long sys_munmap
  	.long sys_truncate
-diff -urpN linux-source-2.6.24.orig/arch/m68knommu/kernel/syscalltable.S linux-source-2.6.24/arch/m68knommu/kernel/syscalltable.S
---- linux-source-2.6.24.orig/arch/m68knommu/kernel/syscalltable.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/m68knommu/kernel/syscalltable.S	2009-01-21 00:12:49.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/m68knommu/kernel/syscalltable.S linux-source-2.6.18/arch/m68knommu/kernel/syscalltable.S
+--- linux-source-2.6.18.orig/arch/m68knommu/kernel/syscalltable.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/m68knommu/kernel/syscalltable.S	2009-01-25 19:51:53.000000000 -0700
 @@ -107,7 +107,7 @@ ENTRY(sys_call_table)
  	.long sys_uselib
  	.long sys_ni_syscall	/* sys_swapon */
@@ -87,10 +87,10 @@
  	.long old_mmap		/* 90 */
  	.long sys_munmap
  	.long sys_truncate
-diff -urpN linux-source-2.6.24.orig/arch/mips/kernel/scall32-o32.S linux-source-2.6.24/arch/mips/kernel/scall32-o32.S
---- linux-source-2.6.24.orig/arch/mips/kernel/scall32-o32.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/mips/kernel/scall32-o32.S	2009-01-21 00:12:49.000000000 -0700
-@@ -420,7 +420,7 @@ einval:	li	v0, -EINVAL
+diff -urpN linux-source-2.6.18.orig/arch/mips/kernel/scall32-o32.S linux-source-2.6.18/arch/mips/kernel/scall32-o32.S
+--- linux-source-2.6.18.orig/arch/mips/kernel/scall32-o32.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/mips/kernel/scall32-o32.S	2009-01-25 19:51:53.000000000 -0700
+@@ -431,7 +431,7 @@ einval:	li	v0, -EINVAL
  	sys	sys_uselib		1
  	sys	sys_swapon		2
  	sys	sys_reboot		3
@@ -99,10 +99,10 @@
  	sys	old_mmap		6	/* 4090 */
  	sys	sys_munmap		2
  	sys	sys_truncate		2
-diff -urpN linux-source-2.6.24.orig/arch/sparc/kernel/systbls.S linux-source-2.6.24/arch/sparc/kernel/systbls.S
---- linux-source-2.6.24.orig/arch/sparc/kernel/systbls.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/sparc/kernel/systbls.S	2009-01-21 00:13:05.000000000 -0700
-@@ -56,7 +56,7 @@ sys_call_table:
+diff -urpN linux-source-2.6.18.orig/arch/sparc/kernel/systbls.S linux-source-2.6.18/arch/sparc/kernel/systbls.S
+--- linux-source-2.6.18.orig/arch/sparc/kernel/systbls.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/sparc/kernel/systbls.S	2009-01-25 19:51:53.000000000 -0700
+@@ -57,7 +57,7 @@ sys_call_table:
  /*185*/	.long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
  /*190*/	.long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
  /*195*/	.long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask
@@ -111,22 +111,10 @@
  /*205*/	.long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
  /*210*/	.long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
  /*215*/	.long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
-diff -urpN linux-source-2.6.24.orig/arch/x86/kernel/syscall_table_32.S linux-source-2.6.24/arch/x86/kernel/syscall_table_32.S
---- linux-source-2.6.24.orig/arch/x86/kernel/syscall_table_32.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/x86/kernel/syscall_table_32.S	2009-01-21 00:13:05.000000000 -0700
-@@ -88,7 +88,7 @@ ENTRY(sys_call_table)
- 	.long sys_uselib
- 	.long sys_swapon
- 	.long sys_reboot
--	.long old_readdir
-+	.long sys_old_readdir
- 	.long old_mmap		/* 90 */
- 	.long sys_munmap
- 	.long sys_truncate
-diff -urpN linux-source-2.6.24.orig/fs/readdir.c linux-source-2.6.24/fs/readdir.c
---- linux-source-2.6.24.orig/fs/readdir.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/readdir.c	2009-01-21 00:13:05.000000000 -0700
-@@ -97,7 +97,7 @@ efault:
+diff -urpN linux-source-2.6.18.orig/fs/readdir.c linux-source-2.6.18/fs/readdir.c
+--- linux-source-2.6.18.orig/fs/readdir.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/readdir.c	2009-01-25 19:54:02.000000000 -0700
+@@ -94,7 +94,7 @@ efault:
  	return -EFAULT;
  }
  
@@ -135,9 +123,9 @@
  {
  	int error;
  	struct file * file;
-diff -urpN linux-source-2.6.24.orig/include/asm-powerpc/systbl.h linux-source-2.6.24/include/asm-powerpc/systbl.h
---- linux-source-2.6.24.orig/include/asm-powerpc/systbl.h	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/include/asm-powerpc/systbl.h	2009-01-21 00:13:05.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/include/asm-powerpc/systbl.h linux-source-2.6.18/include/asm-powerpc/systbl.h
+--- linux-source-2.6.18.orig/include/asm-powerpc/systbl.h	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/include/asm-powerpc/systbl.h	2009-01-25 19:54:02.000000000 -0700
 @@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink)
  SYSCALL(uselib)
  SYSCALL(swapon)
@@ -147,22 +135,33 @@
  SYSCALL_SPU(mmap)
  SYSCALL_SPU(munmap)
  SYSCALL_SPU(truncate)
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 00:10:17.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 00:13:05.000000000 -0700
-@@ -54,6 +54,7 @@ struct compat_stat;
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-25 19:39:05.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-25 19:59:00.000000000 -0700
+@@ -53,6 +53,7 @@ struct mq_attr;
+ struct compat_stat;
  struct compat_timeval;
  struct robust_list_head;
- struct getcpu_cache;
 +struct old_linux_dirent;
  
  #include <linux/types.h>
  #include <linux/aio_abi.h>
-@@ -598,6 +599,7 @@ asmlinkage long sys_timerfd(int ufd, int
- 			    const struct itimerspec __user *utmr);
- asmlinkage long sys_eventfd(unsigned int count);
- asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
+@@ -583,5 +584,6 @@ asmlinkage long sys_get_robust_list(int 
+ 				    size_t __user *len_ptr);
+ asmlinkage long sys_set_robust_list(struct robust_list_head __user *head,
+ 				    size_t len);
 +asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
  
- int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
- 
+ #endif
+diff -urpN a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S
+--- a/arch/i386/kernel/syscall_table.S	2009-01-29 00:16:31.000000000 -0700
++++ b/arch/i386/kernel/syscall_table.S	2009-01-29 00:17:29.000000000 -0700
+@@ -88,7 +88,7 @@ ENTRY(sys_call_table)
+ 	.long sys_uselib
+ 	.long sys_swapon
+ 	.long sys_reboot
+-	.long old_readdir
++	.long sys_old_readdir
+ 	.long old_mmap		/* 90 */
+ 	.long sys_munmap
+ 	.long sys_truncate

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch	Mon Feb  9 15:47:53 2009
@@ -19,12 +19,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/alpha/kernel/entry.S linux-source-2.6.24/arch/alpha/kernel/entry.S
---- linux-source-2.6.24.orig/arch/alpha/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/alpha/kernel/entry.S	2009-01-21 00:29:42.000000000 -0700
-@@ -894,9 +894,9 @@ sys_getxpid:
+diff -urpN linux-source-2.6.18.orig/arch/alpha/kernel/entry.S linux-source-2.6.18/arch/alpha/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/alpha/kernel/entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/alpha/kernel/entry.S	2009-01-25 20:10:02.000000000 -0700
+@@ -895,9 +895,9 @@ sys_getxpid:
  .end sys_getxpid
  
  	.align	4
@@ -37,7 +37,7 @@
  	lda	$sp, -16($sp)
  	stq	$26, 0($sp)
  	.prologue 0
-@@ -914,7 +914,7 @@ sys_pipe:
+@@ -915,7 +915,7 @@ sys_pipe:
  	stq	$1, 80+16($sp)
  1:	lda	$sp, 16($sp)
  	ret
@@ -45,11 +45,11 @@
 +.end sys_alpha_pipe
  
  	.align	4
- 	.globl	sys_execve
-diff -urpN linux-source-2.6.24.orig/arch/alpha/kernel/systbls.S linux-source-2.6.24/arch/alpha/kernel/systbls.S
---- linux-source-2.6.24.orig/arch/alpha/kernel/systbls.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/alpha/kernel/systbls.S	2009-01-21 00:29:42.000000000 -0700
-@@ -52,7 +52,7 @@ sys_call_table:
+ 	.globl	sys_ptrace
+diff -urpN linux-source-2.6.18.orig/arch/alpha/kernel/systbls.S linux-source-2.6.18/arch/alpha/kernel/systbls.S
+--- linux-source-2.6.18.orig/arch/alpha/kernel/systbls.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/alpha/kernel/systbls.S	2009-01-25 20:10:02.000000000 -0700
+@@ -53,7 +53,7 @@ sys_call_table:
  	.quad sys_setpgid
  	.quad alpha_ni_syscall			/* 40 */
  	.quad sys_dup
@@ -58,10 +58,10 @@
  	.quad osf_set_program_attributes
  	.quad alpha_ni_syscall
  	.quad sys_open				/* 45 */
-diff -urpN linux-source-2.6.24.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.24/arch/ia64/ia32/ia32_entry.S
---- linux-source-2.6.24.orig/arch/ia64/ia32/ia32_entry.S	2009-01-21 00:15:40.000000000 -0700
-+++ linux-source-2.6.24/arch/ia64/ia32/ia32_entry.S	2009-01-21 00:29:42.000000000 -0700
-@@ -215,7 +215,7 @@ ia32_syscall_table:
+diff -urpN linux-source-2.6.18.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.18/arch/ia64/ia32/ia32_entry.S
+--- linux-source-2.6.18.orig/arch/ia64/ia32/ia32_entry.S	2009-01-25 20:04:10.000000000 -0700
++++ linux-source-2.6.18/arch/ia64/ia32/ia32_entry.S	2009-01-25 20:10:02.000000000 -0700
+@@ -252,7 +252,7 @@ ia32_syscall_table:
  	data8 sys_mkdir
  	data8 sys_rmdir		  /* 40 */
  	data8 sys_dup
@@ -70,10 +70,10 @@
  	data8 compat_sys_times
  	data8 sys_ni_syscall	  /* old prof syscall holder */
  	data8 sys32_brk		  /* 45 */
-diff -urpN linux-source-2.6.24.orig/arch/ia64/kernel/entry.S linux-source-2.6.24/arch/ia64/kernel/entry.S
---- linux-source-2.6.24.orig/arch/ia64/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/ia64/kernel/entry.S	2009-01-21 00:29:42.000000000 -0700
-@@ -1336,7 +1336,7 @@ sys_call_table:
+diff -urpN linux-source-2.6.18.orig/arch/ia64/kernel/entry.S linux-source-2.6.18/arch/ia64/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/ia64/kernel/entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/ia64/kernel/entry.S	2009-01-25 20:10:02.000000000 -0700
+@@ -1365,7 +1365,7 @@ sys_call_table:
  	data8 sys_mkdir				// 1055
  	data8 sys_rmdir
  	data8 sys_dup
@@ -82,10 +82,10 @@
  	data8 sys_times
  	data8 ia64_brk				// 1060
  	data8 sys_setgid
-diff -urpN linux-source-2.6.24.orig/arch/ia64/kernel/sys_ia64.c linux-source-2.6.24/arch/ia64/kernel/sys_ia64.c
---- linux-source-2.6.24.orig/arch/ia64/kernel/sys_ia64.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/ia64/kernel/sys_ia64.c	2009-01-21 00:29:42.000000000 -0700
-@@ -154,7 +154,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/arch/ia64/kernel/sys_ia64.c linux-source-2.6.18/arch/ia64/kernel/sys_ia64.c
+--- linux-source-2.6.18.orig/arch/ia64/kernel/sys_ia64.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/ia64/kernel/sys_ia64.c	2009-01-25 20:10:02.000000000 -0700
+@@ -148,7 +148,7 @@ out:
   * and r9) as this is faster than doing a copy_to_user().
   */
  asmlinkage long
@@ -94,10 +94,10 @@
  {
  	struct pt_regs *regs = task_pt_regs(current);
  	int fd[2];
-diff -urpN linux-source-2.6.24.orig/arch/sparc/kernel/entry.S linux-source-2.6.24/arch/sparc/kernel/entry.S
---- linux-source-2.6.24.orig/arch/sparc/kernel/entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/sparc/kernel/entry.S	2009-01-21 00:29:55.000000000 -0700
-@@ -1250,8 +1250,8 @@ sys_execve:
+diff -urpN linux-source-2.6.18.orig/arch/sparc/kernel/entry.S linux-source-2.6.18/arch/sparc/kernel/entry.S
+--- linux-source-2.6.18.orig/arch/sparc/kernel/entry.S	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/arch/sparc/kernel/entry.S	2009-01-25 20:10:02.000000000 -0700
+@@ -1251,8 +1251,8 @@ sys_execve:
  	 mov	%l5, %o7
  
  	.align	4
@@ -108,10 +108,10 @@
  	mov	%o7, %l5
  	add	%sp, STACKFRAME_SZ, %o0		! pt_regs *regs arg
  	call	sparc_pipe
-diff -urpN linux-source-2.6.24.orig/arch/sparc/kernel/systbls.S linux-source-2.6.24/arch/sparc/kernel/systbls.S
---- linux-source-2.6.24.orig/arch/sparc/kernel/systbls.S	2009-01-21 00:13:05.000000000 -0700
-+++ linux-source-2.6.24/arch/sparc/kernel/systbls.S	2009-01-21 00:29:55.000000000 -0700
-@@ -24,7 +24,7 @@ sys_call_table:
+diff -urpN linux-source-2.6.18.orig/arch/sparc/kernel/systbls.S linux-source-2.6.18/arch/sparc/kernel/systbls.S
+--- linux-source-2.6.18.orig/arch/sparc/kernel/systbls.S	2009-01-25 19:51:53.000000000 -0700
++++ linux-source-2.6.18/arch/sparc/kernel/systbls.S	2009-01-25 20:10:02.000000000 -0700
+@@ -25,7 +25,7 @@ sys_call_table:
  /*25*/	.long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
  /*30*/	.long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
  /*35*/	.long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
@@ -120,10 +120,10 @@
  /*45*/	.long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
  /*50*/	.long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
  /*55*/	.long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
-diff -urpN linux-source-2.6.24.orig/arch/sparc64/kernel/systbls.S linux-source-2.6.24/arch/sparc64/kernel/systbls.S
---- linux-source-2.6.24.orig/arch/sparc64/kernel/systbls.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/sparc64/kernel/systbls.S	2009-01-21 00:29:57.000000000 -0700
-@@ -26,7 +26,7 @@ sys_call_table32:
+diff -urpN linux-source-2.6.18.orig/arch/sparc64/kernel/systbls.S linux-source-2.6.18/arch/sparc64/kernel/systbls.S
+--- linux-source-2.6.18.orig/arch/sparc64/kernel/systbls.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/sparc64/kernel/systbls.S	2009-01-25 20:10:02.000000000 -0700
+@@ -27,7 +27,7 @@ sys_call_table32:
  /*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
  	.word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
@@ -132,7 +132,7 @@
  	.word sys32_umount, sys32_setgid16, sys32_getgid16, sys32_signal, sys32_geteuid16
  /*50*/	.word sys32_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
  	.word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve
-@@ -98,7 +98,7 @@ sys_call_table:
+@@ -97,7 +97,7 @@ sys_call_table:
  /*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
  	.word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
@@ -141,10 +141,10 @@
  	.word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
  /*50*/	.word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
  	.word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
-diff -urpN linux-source-2.6.24.orig/fs/pipe.c linux-source-2.6.24/fs/pipe.c
---- linux-source-2.6.24.orig/fs/pipe.c	2009-01-21 00:27:52.000000000 -0700
-+++ linux-source-2.6.24/fs/pipe.c	2009-01-21 00:29:57.000000000 -0700
-@@ -1079,7 +1079,7 @@ int do_pipe(int *fd)
+diff -urpN linux-source-2.6.18.orig/fs/pipe.c linux-source-2.6.18/fs/pipe.c
+--- linux-source-2.6.18.orig/fs/pipe.c	2009-01-25 20:06:48.000000000 -0700
++++ linux-source-2.6.18/fs/pipe.c	2009-01-25 20:10:02.000000000 -0700
+@@ -977,7 +977,7 @@ no_files:
   * sys_pipe() is the normal C calling standard for creating
   * a pipe. It's not the way Unix traditionally does this, though.
   */
@@ -153,10 +153,10 @@
  {
  	int fd[2];
  	int error;
-diff -urpN linux-source-2.6.24.orig/include/asm-ia64/unistd.h linux-source-2.6.24/include/asm-ia64/unistd.h
---- linux-source-2.6.24.orig/include/asm-ia64/unistd.h	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/include/asm-ia64/unistd.h	2009-01-21 00:29:57.000000000 -0700
-@@ -354,7 +354,7 @@ struct pt_regs;
+diff -urpN linux-source-2.6.18.orig/include/asm-ia64/unistd.h linux-source-2.6.18/include/asm-ia64/unistd.h
+--- linux-source-2.6.18.orig/include/asm-ia64/unistd.h	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/include/asm-ia64/unistd.h	2009-01-25 20:10:02.000000000 -0700
+@@ -402,7 +402,7 @@ struct pt_regs;
  struct sigaction;
  long sys_execve(char __user *filename, char __user * __user *argv,
  			   char __user * __user *envp, struct pt_regs *regs);

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
     Signed-off-by: Christoph Hellwig <hch at lst.de>
     Signed-off-by: Tony Luck <tony.luck at intel.com>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.24/arch/ia64/ia32/ia32_entry.S
---- linux-source-2.6.24.orig/arch/ia64/ia32/ia32_entry.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/ia64/ia32/ia32_entry.S	2009-01-21 00:15:40.000000000 -0700
-@@ -215,7 +215,7 @@ ia32_syscall_table:
+diff -urpN linux-source-2.6.18.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.18/arch/ia64/ia32/ia32_entry.S
+--- linux-source-2.6.18.orig/arch/ia64/ia32/ia32_entry.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/ia64/ia32/ia32_entry.S	2009-01-25 20:04:10.000000000 -0700
+@@ -252,7 +252,7 @@ ia32_syscall_table:
  	data8 sys_mkdir
  	data8 sys_rmdir		  /* 40 */
  	data8 sys_dup
@@ -24,10 +24,10 @@
  	data8 compat_sys_times
  	data8 sys_ni_syscall	  /* old prof syscall holder */
  	data8 sys32_brk		  /* 45 */
-diff -urpN linux-source-2.6.24.orig/arch/ia64/ia32/sys_ia32.c linux-source-2.6.24/arch/ia64/ia32/sys_ia32.c
---- linux-source-2.6.24.orig/arch/ia64/ia32/sys_ia32.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/ia64/ia32/sys_ia32.c	2009-01-21 00:15:40.000000000 -0700
-@@ -1137,21 +1137,6 @@ sys32_mremap (unsigned int addr, unsigne
+diff -urpN linux-source-2.6.18.orig/arch/ia64/ia32/sys_ia32.c linux-source-2.6.18/arch/ia64/ia32/sys_ia32.c
+--- linux-source-2.6.18.orig/arch/ia64/ia32/sys_ia32.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/ia64/ia32/sys_ia32.c	2009-01-25 20:04:10.000000000 -0700
+@@ -1132,21 +1132,6 @@ sys32_mremap (unsigned int addr, unsigne
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch	Mon Feb  9 15:47:53 2009
@@ -21,11 +21,11 @@
     Signed-off-by: Ulrich Drepper <drepper at redhat.com>
     Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/arm/kernel/sys_arm.c linux-source-2.6.24/arch/arm/kernel/sys_arm.c
---- linux-source-2.6.24.orig/arch/arm/kernel/sys_arm.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/arm/kernel/sys_arm.c	2009-01-21 00:27:33.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/arm/kernel/sys_arm.c linux-source-2.6.18/arch/arm/kernel/sys_arm.c
+--- linux-source-2.6.18.orig/arch/arm/kernel/sys_arm.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/arm/kernel/sys_arm.c	2009-01-25 20:04:55.000000000 -0700
 @@ -34,23 +34,6 @@ extern unsigned long do_mremap(unsigned 
  			       unsigned long new_len, unsigned long flags,
  			       unsigned long new_addr);
@@ -50,21 +50,25 @@
  /* common code for old and new mmaps */
  inline long do_mmap2(
  	unsigned long addr, unsigned long len,
-diff -urpN linux-source-2.6.24.orig/arch/avr32/kernel/sys_avr32.c linux-source-2.6.24/arch/avr32/kernel/sys_avr32.c
---- linux-source-2.6.24.orig/arch/avr32/kernel/sys_avr32.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/avr32/kernel/sys_avr32.c	2009-01-21 00:27:33.000000000 -0700
-@@ -14,19 +14,6 @@
- #include <asm/mman.h>
+diff -urpN linux-source-2.6.18.orig/arch/frv/kernel/sys_frv.c linux-source-2.6.18/arch/frv/kernel/sys_frv.c
+--- linux-source-2.6.18.orig/arch/frv/kernel/sys_frv.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/frv/kernel/sys_frv.c	2009-01-25 20:05:12.000000000 -0700
+@@ -28,23 +28,6 @@
  #include <asm/uaccess.h>
+ #include <asm/ipc.h>
  
--asmlinkage int sys_pipe(unsigned long __user *filedes)
+-/*
+- * sys_pipe() is the normal C calling standard for creating
+- * a pipe. It's not the way unix traditionally does this, though.
+- */
+-asmlinkage long sys_pipe(unsigned long __user * fildes)
 -{
 -	int fd[2];
 -	int error;
 -
 -	error = do_pipe(fd);
 -	if (!error) {
--		if (copy_to_user(filedes, fd, sizeof(fd)))
+-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
 -			error = -EFAULT;
 -	}
 -	return error;
@@ -72,19 +76,19 @@
 -
  asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
  			  unsigned long prot, unsigned long flags,
- 			  unsigned long fd, off_t offset)
-diff -urpN linux-source-2.6.24.orig/arch/frv/kernel/sys_frv.c linux-source-2.6.24/arch/frv/kernel/sys_frv.c
---- linux-source-2.6.24.orig/arch/frv/kernel/sys_frv.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/frv/kernel/sys_frv.c	2009-01-21 00:27:37.000000000 -0700
-@@ -28,23 +28,6 @@
- #include <asm/setup.h>
- #include <asm/uaccess.h>
+ 			  unsigned long fd, unsigned long pgoff)
+diff -urpN linux-source-2.6.18.orig/arch/h8300/kernel/sys_h8300.c linux-source-2.6.18/arch/h8300/kernel/sys_h8300.c
+--- linux-source-2.6.18.orig/arch/h8300/kernel/sys_h8300.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/h8300/kernel/sys_h8300.c	2009-01-25 20:05:12.000000000 -0700
+@@ -26,23 +26,6 @@
+ #include <asm/traps.h>
+ #include <asm/ipc.h>
  
 -/*
 - * sys_pipe() is the normal C calling standard for creating
 - * a pipe. It's not the way unix traditionally does this, though.
 - */
--asmlinkage long sys_pipe(unsigned long __user * fildes)
+-asmlinkage int sys_pipe(unsigned long * fildes)
 -{
 -	int fd[2];
 -	int error;
@@ -97,21 +101,21 @@
 -	return error;
 -}
 -
- asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
- 			  unsigned long prot, unsigned long flags,
- 			  unsigned long fd, unsigned long pgoff)
-diff -urpN linux-source-2.6.24.orig/arch/h8300/kernel/sys_h8300.c linux-source-2.6.24/arch/h8300/kernel/sys_h8300.c
---- linux-source-2.6.24.orig/arch/h8300/kernel/sys_h8300.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/h8300/kernel/sys_h8300.c	2009-01-21 00:27:37.000000000 -0700
-@@ -27,23 +27,6 @@
- #include <asm/traps.h>
- #include <asm/unistd.h>
+ /* common code for old and new mmaps */
+ static inline long do_mmap2(
+ 	unsigned long addr, unsigned long len,
+diff -urpN linux-source-2.6.18.orig/arch/i386/kernel/sys_i386.c linux-source-2.6.18/arch/i386/kernel/sys_i386.c
+--- linux-source-2.6.18.orig/arch/i386/kernel/sys_i386.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/i386/kernel/sys_i386.c	2009-01-25 20:06:26.000000000 -0700
+@@ -23,23 +23,6 @@
+ #include <asm/uaccess.h>
+ #include <asm/ipc.h>
  
 -/*
 - * sys_pipe() is the normal C calling standard for creating
-- * a pipe. It's not the way unix traditionally does this, though.
+- * a pipe. It's not the way Unix traditionally does this, though.
 - */
--asmlinkage int sys_pipe(unsigned long * fildes)
+-asmlinkage int sys_pipe(unsigned long __user * fildes)
 -{
 -	int fd[2];
 -	int error;
@@ -124,15 +128,15 @@
 -	return error;
 -}
 -
- /* common code for old and new mmaps */
- static inline long do_mmap2(
- 	unsigned long addr, unsigned long len,
-diff -urpN linux-source-2.6.24.orig/arch/m68k/kernel/sys_m68k.c linux-source-2.6.24/arch/m68k/kernel/sys_m68k.c
---- linux-source-2.6.24.orig/arch/m68k/kernel/sys_m68k.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/m68k/kernel/sys_m68k.c	2009-01-21 00:27:37.000000000 -0700
-@@ -30,23 +30,6 @@
+ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
+ 			  unsigned long prot, unsigned long flags,
+ 			  unsigned long fd, unsigned long pgoff)
+diff -urpN linux-source-2.6.18.orig/arch/m68k/kernel/sys_m68k.c linux-source-2.6.18/arch/m68k/kernel/sys_m68k.c
+--- linux-source-2.6.18.orig/arch/m68k/kernel/sys_m68k.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/m68k/kernel/sys_m68k.c	2009-01-25 20:05:12.000000000 -0700
+@@ -28,23 +28,6 @@
+ #include <asm/ipc.h>
  #include <asm/page.h>
- #include <asm/unistd.h>
  
 -/*
 - * sys_pipe() is the normal C calling standard for creating
@@ -154,12 +158,12 @@
  /* common code for old and new mmaps */
  static inline long do_mmap2(
  	unsigned long addr, unsigned long len,
-diff -urpN linux-source-2.6.24.orig/arch/m68knommu/kernel/sys_m68k.c linux-source-2.6.24/arch/m68knommu/kernel/sys_m68k.c
---- linux-source-2.6.24.orig/arch/m68knommu/kernel/sys_m68k.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/m68knommu/kernel/sys_m68k.c	2009-01-21 00:27:37.000000000 -0700
-@@ -28,23 +28,6 @@
+diff -urpN linux-source-2.6.18.orig/arch/m68knommu/kernel/sys_m68k.c linux-source-2.6.18/arch/m68knommu/kernel/sys_m68k.c
+--- linux-source-2.6.18.orig/arch/m68knommu/kernel/sys_m68k.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/m68knommu/kernel/sys_m68k.c	2009-01-25 20:05:12.000000000 -0700
+@@ -27,23 +27,6 @@
+ #include <asm/ipc.h>
  #include <asm/cacheflush.h>
- #include <asm/unistd.h>
  
 -/*
 - * sys_pipe() is the normal C calling standard for creating
@@ -181,12 +185,12 @@
  /* common code for old and new mmaps */
  static inline long do_mmap2(
  	unsigned long addr, unsigned long len,
-diff -urpN linux-source-2.6.24.orig/arch/parisc/kernel/sys_parisc.c linux-source-2.6.24/arch/parisc/kernel/sys_parisc.c
---- linux-source-2.6.24.orig/arch/parisc/kernel/sys_parisc.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/parisc/kernel/sys_parisc.c	2009-01-21 00:27:49.000000000 -0700
-@@ -33,19 +33,6 @@
- #include <linux/utsname.h>
- #include <linux/personality.h>
+diff -urpN linux-source-2.6.18.orig/arch/parisc/kernel/sys_parisc.c linux-source-2.6.18/arch/parisc/kernel/sys_parisc.c
+--- linux-source-2.6.18.orig/arch/parisc/kernel/sys_parisc.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/parisc/kernel/sys_parisc.c	2009-01-25 20:05:12.000000000 -0700
+@@ -32,19 +32,6 @@
+ #include <linux/smp_lock.h>
+ #include <linux/syscalls.h>
  
 -int sys_pipe(int __user *fildes)
 -{
@@ -204,10 +208,10 @@
  static unsigned long get_unshared_area(unsigned long addr, unsigned long len)
  {
  	struct vm_area_struct *vma;
-diff -urpN linux-source-2.6.24.orig/arch/powerpc/kernel/syscalls.c linux-source-2.6.24/arch/powerpc/kernel/syscalls.c
---- linux-source-2.6.24.orig/arch/powerpc/kernel/syscalls.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/powerpc/kernel/syscalls.c	2009-01-21 00:27:49.000000000 -0700
-@@ -137,23 +137,6 @@ int sys_ipc(uint call, int first, unsign
+diff -urpN linux-source-2.6.18.orig/arch/powerpc/kernel/syscalls.c linux-source-2.6.18/arch/powerpc/kernel/syscalls.c
+--- linux-source-2.6.18.orig/arch/powerpc/kernel/syscalls.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/powerpc/kernel/syscalls.c	2009-01-25 20:05:12.000000000 -0700
+@@ -138,23 +138,6 @@ int sys_ipc(uint call, int first, unsign
  	return ret;
  }
  
@@ -231,12 +235,12 @@
  static inline unsigned long do_mmap2(unsigned long addr, size_t len,
  			unsigned long prot, unsigned long flags,
  			unsigned long fd, unsigned long off, int shift)
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/sys_s390.c linux-source-2.6.24/arch/s390/kernel/sys_s390.c
---- linux-source-2.6.24.orig/arch/s390/kernel/sys_s390.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/sys_s390.c	2009-01-21 00:27:49.000000000 -0700
-@@ -32,23 +32,6 @@
- 
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/sys_s390.c linux-source-2.6.18/arch/s390/kernel/sys_s390.c
+--- linux-source-2.6.18.orig/arch/s390/kernel/sys_s390.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/kernel/sys_s390.c	2009-01-25 20:05:12.000000000 -0700
+@@ -31,23 +31,6 @@
  #include <asm/uaccess.h>
+ #include <asm/ipc.h>
  
 -/*
 - * sys_pipe() is the normal C calling standard for creating
@@ -258,10 +262,10 @@
  /* common code for old and new mmaps */
  static inline long do_mmap2(
  	unsigned long addr, unsigned long len,
-diff -urpN linux-source-2.6.24.orig/arch/um/kernel/syscall.c linux-source-2.6.24/arch/um/kernel/syscall.c
---- linux-source-2.6.24.orig/arch/um/kernel/syscall.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/um/kernel/syscall.c	2009-01-21 00:27:52.000000000 -0700
-@@ -76,23 +76,6 @@ long old_mmap(unsigned long addr, unsign
+diff -urpN linux-source-2.6.18.orig/arch/um/kernel/syscall.c linux-source-2.6.18/arch/um/kernel/syscall.c
+--- linux-source-2.6.18.orig/arch/um/kernel/syscall.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/um/kernel/syscall.c	2009-01-25 20:07:34.000000000 -0700
+@@ -86,23 +86,6 @@ long old_mmap(unsigned long addr, unsign
   out:
  	return err;
  }
@@ -271,24 +275,24 @@
 - */
 -long sys_pipe(unsigned long __user * fildes)
 -{
--	int fd[2];
--	long error;
+-        int fd[2];
+-        long error;
 -
--	error = do_pipe(fd);
--	if (!error) {
+-        error = do_pipe(fd);
+-        if (!error) {
 -		if (copy_to_user(fildes, fd, sizeof(fd)))
--			error = -EFAULT;
--	}
--	return error;
+-                        error = -EFAULT;
+-        }
+-        return error;
 -}
 -
  
  long sys_uname(struct old_utsname __user * name)
  {
-diff -urpN linux-source-2.6.24.orig/arch/v850/kernel/syscalls.c linux-source-2.6.24/arch/v850/kernel/syscalls.c
---- linux-source-2.6.24.orig/arch/v850/kernel/syscalls.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/v850/kernel/syscalls.c	2009-01-21 00:27:52.000000000 -0700
-@@ -133,23 +133,6 @@ sys_ipc (uint call, int first, int secon
+diff -urpN linux-source-2.6.18.orig/arch/v850/kernel/syscalls.c linux-source-2.6.18/arch/v850/kernel/syscalls.c
+--- linux-source-2.6.18.orig/arch/v850/kernel/syscalls.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/v850/kernel/syscalls.c	2009-01-25 20:05:19.000000000 -0700
+@@ -134,23 +134,6 @@ sys_ipc (uint call, int first, int secon
  	return ret;
  }
  
@@ -312,37 +316,10 @@
  static inline unsigned long
  do_mmap2 (unsigned long addr, size_t len,
  	 unsigned long prot, unsigned long flags,
-diff -urpN linux-source-2.6.24.orig/arch/x86/kernel/sys_i386_32.c linux-source-2.6.24/arch/x86/kernel/sys_i386_32.c
---- linux-source-2.6.24.orig/arch/x86/kernel/sys_i386_32.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/x86/kernel/sys_i386_32.c	2009-01-21 00:27:52.000000000 -0700
-@@ -22,23 +22,6 @@
- #include <asm/uaccess.h>
- #include <asm/unistd.h>
- 
--/*
-- * sys_pipe() is the normal C calling standard for creating
-- * a pipe. It's not the way Unix traditionally does this, though.
-- */
--asmlinkage int sys_pipe(unsigned long __user * fildes)
--{
--	int fd[2];
--	int error;
--
--	error = do_pipe(fd);
--	if (!error) {
--		if (copy_to_user(fildes, fd, 2*sizeof(int)))
--			error = -EFAULT;
--	}
--	return error;
--}
--
- asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
- 			  unsigned long prot, unsigned long flags,
- 			  unsigned long fd, unsigned long pgoff)
-diff -urpN linux-source-2.6.24.orig/arch/x86/kernel/sys_x86_64.c linux-source-2.6.24/arch/x86/kernel/sys_x86_64.c
---- linux-source-2.6.24.orig/arch/x86/kernel/sys_x86_64.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/x86/kernel/sys_x86_64.c	2009-01-21 00:27:52.000000000 -0700
-@@ -16,23 +16,6 @@
+diff -urpN linux-source-2.6.18.orig/arch/x86_64/kernel/sys_x86_64.c linux-source-2.6.18/arch/x86_64/kernel/sys_x86_64.c
+--- linux-source-2.6.18.orig/arch/x86_64/kernel/sys_x86_64.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/x86_64/kernel/sys_x86_64.c	2009-01-25 20:06:48.000000000 -0700
+@@ -20,23 +20,6 @@
  #include <asm/uaccess.h>
  #include <asm/ia32.h>
  
@@ -366,10 +343,10 @@
  asmlinkage long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags,
  	unsigned long fd, unsigned long off)
  {
-diff -urpN linux-source-2.6.24.orig/fs/pipe.c linux-source-2.6.24/fs/pipe.c
---- linux-source-2.6.24.orig/fs/pipe.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/pipe.c	2009-01-21 00:27:52.000000000 -0700
-@@ -1076,6 +1076,23 @@ int do_pipe(int *fd)
+diff -urpN linux-source-2.6.18.orig/fs/pipe.c linux-source-2.6.18/fs/pipe.c
+--- linux-source-2.6.18.orig/fs/pipe.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/pipe.c	2009-01-25 20:06:48.000000000 -0700
+@@ -974,6 +974,23 @@ no_files:
  }
  
  /*
@@ -393,9 +370,9 @@
   * pipefs should _never_ be mounted by userland - too much of security hassle,
   * no real gain from having the whole whorehouse mounted. So we don't need
   * any operations on the root directory. However, we need a non-trivial
-diff -urpN linux-source-2.6.24.orig/include/asm-powerpc/syscalls.h linux-source-2.6.24/include/asm-powerpc/syscalls.h
---- linux-source-2.6.24.orig/include/asm-powerpc/syscalls.h	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/include/asm-powerpc/syscalls.h	2009-01-21 00:27:52.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/include/asm-powerpc/syscalls.h linux-source-2.6.18/include/asm-powerpc/syscalls.h
+--- linux-source-2.6.18.orig/include/asm-powerpc/syscalls.h	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/include/asm-powerpc/syscalls.h	2009-01-25 20:06:48.000000000 -0700
 @@ -30,7 +30,7 @@ asmlinkage int sys_fork(unsigned long p1
  asmlinkage int sys_vfork(unsigned long p1, unsigned long p2,
  		unsigned long p3, unsigned long p4, unsigned long p5,

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch	Mon Feb  9 15:47:53 2009
@@ -14,12 +14,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/compat.c linux-source-2.6.24/fs/compat.c
---- linux-source-2.6.24.orig/fs/compat.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/compat.c	2009-01-21 00:40:29.000000000 -0700
-@@ -1642,7 +1642,7 @@ sticky:
+diff -urpN linux-source-2.6.18.orig/fs/compat.c linux-source-2.6.18/fs/compat.c
+--- linux-source-2.6.18.orig/fs/compat.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/fs/compat.c	2009-01-25 20:11:03.000000000 -0700
+@@ -1808,7 +1808,7 @@ sticky:
  }
  
  #ifdef TIF_RESTORE_SIGMASK
@@ -28,7 +28,7 @@
  	compat_ulong_t __user *outp, compat_ulong_t __user *exp,
  	struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
  	compat_size_t sigsetsize)
-@@ -1750,8 +1750,8 @@ asmlinkage long compat_sys_pselect6(int 
+@@ -1901,8 +1901,8 @@ asmlinkage long compat_sys_pselect6(int 
  				(compat_size_t __user *)(sig+sizeof(up))))
  			return -EFAULT;
  	}
@@ -39,10 +39,10 @@
  }
  
  asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
-diff -urpN linux-source-2.6.24.orig/fs/select.c linux-source-2.6.24/fs/select.c
---- linux-source-2.6.24.orig/fs/select.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/select.c	2009-01-21 00:41:11.000000000 -0700
-@@ -426,9 +426,9 @@ sticky:
+diff -urpN linux-source-2.6.18.orig/fs/select.c linux-source-2.6.18/fs/select.c
+--- linux-source-2.6.18.orig/fs/select.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/select.c	2009-01-25 20:11:03.000000000 -0700
+@@ -434,9 +434,9 @@ sticky:
  }
  
  #ifdef TIF_RESTORE_SIGMASK
@@ -55,7 +55,7 @@
  {
  	s64 timeout = MAX_SCHEDULE_TIMEOUT;
  	sigset_t ksigmask, sigsaved;
-@@ -526,7 +526,7 @@ asmlinkage long sys_pselect6(int n, fd_s
+@@ -534,7 +534,7 @@ asmlinkage long sys_pselect6(int n, fd_s
  			return -EFAULT;
  	}
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch	Mon Feb  9 15:47:53 2009
@@ -14,27 +14,27 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/printk.c linux-source-2.6.24/kernel/printk.c
---- linux-source-2.6.24.orig/kernel/printk.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/printk.c	2009-01-21 00:42:57.000000000 -0700
-@@ -755,11 +755,6 @@ EXPORT_SYMBOL(vprintk);
+diff -urpN linux-source-2.6.18.orig/kernel/printk.c linux-source-2.6.18/kernel/printk.c
+--- linux-source-2.6.18.orig/kernel/printk.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/printk.c	2009-01-25 20:16:55.000000000 -0700
+@@ -628,11 +628,6 @@ EXPORT_SYMBOL(vprintk);
  
  #else
  
 -asmlinkage long sys_syslog(int type, char __user *buf, int len)
 -{
--	return -ENOSYS;
+-	return 0;
 -}
 -
- static void call_console_drivers(unsigned long start, unsigned long end)
+ int do_syslog(int type, char __user *buf, int len)
  {
- }
-diff -urpN linux-source-2.6.24.orig/kernel/sys_ni.c linux-source-2.6.24/kernel/sys_ni.c
---- linux-source-2.6.24.orig/kernel/sys_ni.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys_ni.c	2009-01-21 00:42:23.000000000 -0700
-@@ -121,6 +121,7 @@ cond_syscall(sys_vm86old);
+ 	return 0;
+diff -urpN linux-source-2.6.18.orig/kernel/sys_ni.c linux-source-2.6.18/kernel/sys_ni.c
+--- linux-source-2.6.18.orig/kernel/sys_ni.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/sys_ni.c	2009-01-25 20:12:07.000000000 -0700
+@@ -111,6 +111,7 @@ cond_syscall(sys_vm86old);
  cond_syscall(sys_vm86);
  cond_syscall(compat_sys_ipc);
  cond_syscall(compat_sys_sysctl);

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch	Mon Feb  9 15:47:53 2009
@@ -21,12 +21,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 00:13:05.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 00:43:49.000000000 -0700
-@@ -67,6 +67,68 @@ struct old_linux_dirent;
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-25 19:59:00.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-25 20:19:01.000000000 -0700
+@@ -66,6 +66,68 @@ struct old_linux_dirent;
  #include <linux/quota.h>
  #include <linux/key.h>
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch	Mon Feb  9 15:47:53 2009
@@ -14,12 +14,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/powerpc/Kconfig linux-source-2.6.24/arch/powerpc/Kconfig
---- linux-source-2.6.24.orig/arch/powerpc/Kconfig	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/powerpc/Kconfig	2009-01-21 00:47:56.000000000 -0700
-@@ -79,6 +79,7 @@ config ARCH_NO_VIRT_TO_BUS
+diff -urpN linux-source-2.6.18.orig/arch/powerpc/Kconfig linux-source-2.6.18/arch/powerpc/Kconfig
+--- linux-source-2.6.18.orig/arch/powerpc/Kconfig	2008-12-25 14:04:12.000000000 -0700
++++ linux-source-2.6.18/arch/powerpc/Kconfig	2009-01-25 20:19:42.000000000 -0700
+@@ -56,6 +56,7 @@ config GENERIC_FIND_NEXT_BIT
  config PPC
  	bool
  	default y
@@ -27,10 +27,10 @@
  
  config EARLY_PRINTK
  	bool
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 00:43:49.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 00:45:15.000000000 -0700
-@@ -104,8 +104,14 @@ struct old_linux_dirent;
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-25 20:19:01.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-25 20:19:42.000000000 -0700
+@@ -103,8 +103,14 @@ struct old_linux_dirent;
  #define SYSCALL_DEFINE5(...)    SYSCALL_DEFINEx(5, __VA_ARGS__)
  #define SYSCALL_DEFINE6(...)    SYSCALL_DEFINEx(6, __VA_ARGS__)
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch	Mon Feb  9 15:47:53 2009
@@ -9,20 +9,30 @@
 
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- arch/s390/Kconfig |    1 +
- 1 file changed, 1 insertion(+)
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/s390/Kconfig linux-source-2.6.24/arch/s390/Kconfig
---- linux-source-2.6.24.orig/arch/s390/Kconfig	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/Kconfig	2009-01-21 00:49:39.000000000 -0700
-@@ -51,6 +51,7 @@ mainmenu "Linux Kernel Configuration"
- 
+diff -urpN linux-source-2.6.18.orig/arch/s390/Kconfig linux-source-2.6.18/arch/s390/Kconfig
+--- linux-source-2.6.18.orig/arch/s390/Kconfig	2008-12-25 14:04:12.000000000 -0700
++++ linux-source-2.6.18/arch/s390/Kconfig	2009-01-25 20:20:42.000000000 -0700
+@@ -38,6 +38,7 @@ mainmenu "Linux Kernel Configuration"
  config S390
- 	def_bool y
+ 	bool
+ 	default y
 +	select HAVE_SYSCALL_WRAPPERS
  
  source "init/Kconfig"
  
+diff -urpN linux-source-2.6.18.orig/arch/s390/Kconfig.debug linux-source-2.6.18/arch/s390/Kconfig.debug
+--- linux-source-2.6.18.orig/arch/s390/Kconfig.debug	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/Kconfig.debug	1969-12-31 17:00:00.000000000 -0700
+@@ -1,9 +0,0 @@
+-menu "Kernel hacking"
+-
+-config TRACE_IRQFLAGS_SUPPORT
+-	bool
+-	default y
+-
+-source "lib/Kconfig.debug"
+-
+-endmenu

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch	Mon Feb  9 15:47:53 2009
@@ -18,12 +18,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/dcookies.c linux-source-2.6.24/fs/dcookies.c
---- linux-source-2.6.24.orig/fs/dcookies.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/dcookies.c	2009-01-21 00:50:44.000000000 -0700
-@@ -143,7 +143,7 @@ out:
+diff -urpN a/fs/dcookies.c b/fs/dcookies.c
+--- a/fs/dcookies.c	2006-09-19 21:42:06.000000000 -0600
++++ b/fs/dcookies.c	2009-01-28 23:43:16.000000000 -0700
+@@ -142,7 +142,7 @@ out:
  /* And here is where the userspace process can look up the cookie value
   * to retrieve the path.
   */
@@ -32,7 +32,7 @@
  {
  	unsigned long cookie = (unsigned long)cookie64;
  	int err = -EINVAL;
-@@ -196,7 +196,13 @@ out:
+@@ -195,7 +195,13 @@ out:
  	mutex_unlock(&dcookie_mutex);
  	return err;
  }
@@ -47,10 +47,10 @@
  
  static int dcookie_init(void)
  {
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 00:52:46.000000000 -0700
-@@ -341,21 +341,35 @@ asmlinkage long sys_ftruncate(unsigned i
+diff -urpN a/fs/open.c b/fs/open.c
+--- a/fs/open.c	2009-01-28 23:42:25.000000000 -0700
++++ b/fs/open.c	2009-01-29 00:00:14.000000000 -0700
+@@ -342,19 +342,26 @@ asmlinkage long sys_ftruncate(unsigned i
  
  /* LFS versions of truncate are only needed on 32 bit machines */
  #if BITS_PER_LONG == 32
@@ -75,38 +75,23 @@
  	prevent_tail_call(ret);
  	return ret;
  }
-+#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
-+asmlinkage long SyS_ftruncate64(long fd, loff_t length)
-+{
-+	return SYSC_ftruncate64((unsigned int) fd, length);
-+}
-+SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
- #endif
+-#endif
 +#endif /* BITS_PER_LONG == 32 */
  
--asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len)
-+SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)
- {
- 	struct file *file;
- 	struct inode *inode;
-@@ -412,6 +426,13 @@ out_fput:
+ #ifdef __ARCH_WANT_SYS_UTIME
+ 
+@@ -418,7 +425,6 @@ dput_and_out:
  out:
- 	return ret;
+ 	return error;
  }
-+#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
-+asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len)
-+{
-+	return SYSC_fallocate((int)fd, (int)mode, offset, len);
-+}
-+SYSCALL_ALIAS(sys_fallocate, SyS_fallocate);
-+#endif
+-
+ #endif
  
- /*
-  * access() needs to use the real uid/gid, not the effective uid/gid.
-diff -urpN linux-source-2.6.24.orig/fs/read_write.c linux-source-2.6.24/fs/read_write.c
---- linux-source-2.6.24.orig/fs/read_write.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/fs/read_write.c	2009-01-21 00:50:44.000000000 -0700
-@@ -389,8 +389,8 @@ asmlinkage long sys_write(unsigned int f
+ /* If times==NULL, set access and modification to current time,
+diff -urpN a/fs/read_write.c b/fs/read_write.c
+--- a/fs/read_write.c	2009-01-28 23:42:26.000000000 -0700
++++ b/fs/read_write.c	2009-01-28 23:43:16.000000000 -0700
+@@ -374,8 +374,8 @@ asmlinkage long sys_write(unsigned int f
  	return ret;
  }
  
@@ -117,7 +102,7 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -409,9 +409,17 @@ asmlinkage long sys_pread64(unsigned int
+@@ -394,9 +394,17 @@ asmlinkage long sys_pread64(unsigned int
  
  	return ret;
  }
@@ -137,7 +122,7 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -430,6 +438,14 @@ asmlinkage long sys_pwrite64(unsigned in
+@@ -415,6 +423,14 @@ asmlinkage long sys_pwrite64(unsigned in
  
  	return ret;
  }
@@ -152,10 +137,10 @@
  
  /*
   * Reduce an iovec's length in-place.  Return the resulting number of segments
-diff -urpN linux-source-2.6.24.orig/fs/sync.c linux-source-2.6.24/fs/sync.c
---- linux-source-2.6.24.orig/fs/sync.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/sync.c	2009-01-21 00:50:44.000000000 -0700
-@@ -174,8 +174,8 @@ asmlinkage long sys_fdatasync(unsigned i
+diff -urpN a/fs/sync.c b/fs/sync.c
+--- a/fs/sync.c	2006-09-19 21:42:06.000000000 -0600
++++ b/fs/sync.c	2009-01-28 23:57:14.000000000 -0700
+@@ -60,8 +60,8 @@
   * already-instantiated disk blocks, there are no guarantees here that the data
   * will be available after a crash.
   */
@@ -166,7 +151,7 @@
  {
  	int ret;
  	struct file *file;
-@@ -235,14 +235,32 @@ out_put:
+@@ -121,6 +121,15 @@ out_put:
  out:
  	return ret;
  }
@@ -180,31 +165,12 @@
 +SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
 +#endif
  
- /* It would be nice if people remember that not all the world's an i386
-    when they introduce new system calls */
--asmlinkage long sys_sync_file_range2(int fd, unsigned int flags,
--				     loff_t offset, loff_t nbytes)
-+SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags,
-+				 loff_t offset, loff_t nbytes)
- {
- 	return sys_sync_file_range(fd, offset, nbytes, flags);
- }
-+#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
-+asmlinkage long SyS_sync_file_range2(long fd, long flags,
-+				     loff_t offset, loff_t nbytes)
-+{
-+	return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
-+				     offset, nbytes);
-+}
-+SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
-+#endif
- 
  /*
   * `endbyte' is inclusive
-diff -urpN linux-source-2.6.24.orig/ipc/sem.c linux-source-2.6.24/ipc/sem.c
---- linux-source-2.6.24.orig/ipc/sem.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/ipc/sem.c	2009-01-21 00:50:44.000000000 -0700
-@@ -960,7 +960,7 @@ out_unlock:
+diff -urpN a/ipc/sem.c b/ipc/sem.c
+--- a/ipc/sem.c	2006-09-19 21:42:06.000000000 -0600
++++ b/ipc/sem.c	2009-01-28 23:43:16.000000000 -0700
+@@ -868,7 +868,7 @@ out_unlock:
  	return err;
  }
  
@@ -213,7 +179,7 @@
  {
  	int err = -EINVAL;
  	int version;
-@@ -998,6 +998,13 @@ asmlinkage long sys_semctl (int semid, i
+@@ -904,6 +904,13 @@ asmlinkage long sys_semctl (int semid, i
  		return -EINVAL;
  	}
  }
@@ -225,11 +191,11 @@
 +SYSCALL_ALIAS(sys_semctl, SyS_semctl);
 +#endif
  
- /* If the task doesn't already have a undo_list, then allocate one
-  * here.  We guarantee there is only one thread using this undo list,
-diff -urpN linux-source-2.6.24.orig/mm/fadvise.c linux-source-2.6.24/mm/fadvise.c
---- linux-source-2.6.24.orig/mm/fadvise.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/fadvise.c	2009-01-21 00:50:44.000000000 -0700
+ static inline void lock_semundo(void)
+ {
+diff -urpN a/mm/fadvise.c b/mm/fadvise.c
+--- a/mm/fadvise.c	2006-09-19 21:42:06.000000000 -0600
++++ b/mm/fadvise.c	2009-01-28 23:43:16.000000000 -0700
 @@ -24,7 +24,7 @@
   * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
   * deactivate the pages and clear PG_Referenced.
@@ -267,10 +233,10 @@
 +#endif
  
  #endif
-diff -urpN linux-source-2.6.24.orig/mm/filemap.c linux-source-2.6.24/mm/filemap.c
---- linux-source-2.6.24.orig/mm/filemap.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/mm/filemap.c	2009-01-21 00:50:44.000000000 -0700
-@@ -1231,7 +1231,7 @@ do_readahead(struct address_space *mappi
+diff -urpN a/mm/filemap.c b/mm/filemap.c
+--- a/mm/filemap.c	2009-01-28 23:42:26.000000000 -0700
++++ b/mm/filemap.c	2009-01-28 23:43:16.000000000 -0700
+@@ -1285,7 +1285,7 @@ do_readahead(struct address_space *mappi
  	return 0;
  }
  
@@ -279,7 +245,7 @@
  {
  	ssize_t ret;
  	struct file *file;
-@@ -1250,6 +1250,13 @@ asmlinkage long sys_readahead(int fd, lo
+@@ -1304,6 +1304,13 @@ asmlinkage long sys_readahead(int fd, lo
  	}
  	return ret;
  }
@@ -292,4 +258,4 @@
 +#endif
  
  #ifdef CONFIG_MMU
- /**
+ static int FASTCALL(page_cache_read(struct file * file, unsigned long offset));

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/hrtimer.c linux-source-2.6.24/kernel/hrtimer.c
---- linux-source-2.6.24.orig/kernel/hrtimer.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/kernel/hrtimer.c	2009-01-21 00:54:00.000000000 -0700
-@@ -1379,8 +1379,8 @@ long hrtimer_nanosleep(struct timespec *
+diff -urpN linux-source-2.6.18.orig/kernel/hrtimer.c linux-source-2.6.18/kernel/hrtimer.c
+--- linux-source-2.6.18.orig/kernel/hrtimer.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/kernel/hrtimer.c	2009-01-25 20:31:17.000000000 -0700
+@@ -774,8 +774,8 @@ long hrtimer_nanosleep(struct timespec *
  	return -ERESTART_RESTARTBLOCK;
  }
  
@@ -26,10 +26,10 @@
  {
  	struct timespec tu;
  
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 00:54:00.000000000 -0700
-@@ -862,7 +862,7 @@ asmlinkage long sys_setfsgid(gid_t gid)
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 20:31:17.000000000 -0700
+@@ -1196,7 +1196,7 @@ asmlinkage long sys_setfsgid(gid_t gid)
  	return old_fsgid;
  }
  
@@ -38,28 +38,28 @@
  {
  	/*
  	 *	In the SMP world we might just be unlucky and have one of
-diff -urpN linux-source-2.6.24.orig/kernel/time.c linux-source-2.6.24/kernel/time.c
---- linux-source-2.6.24.orig/kernel/time.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/time.c	2009-01-21 00:54:34.000000000 -0700
-@@ -55,7 +55,7 @@ EXPORT_SYMBOL(sys_tz);
+diff -urpN linux-source-2.6.18.orig/kernel/time.c linux-source-2.6.18/kernel/time.c
+--- linux-source-2.6.18.orig/kernel/time.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/time.c	2009-01-25 20:31:58.000000000 -0700
+@@ -56,7 +56,7 @@ EXPORT_SYMBOL(sys_tz);
   * why not move it into the appropriate arch directory (for those
   * architectures that need it).
   */
 -asmlinkage long sys_time(time_t __user * tloc)
 +SYSCALL_DEFINE1(time, time_t __user *, tloc)
  {
- 	time_t i = get_seconds();
- 
-@@ -73,7 +73,7 @@ asmlinkage long sys_time(time_t __user *
+ 	time_t i;
+ 	struct timeval tv;
+@@ -78,7 +78,7 @@ asmlinkage long sys_time(time_t __user *
   * architectures that need it).
   */
- 
+  
 -asmlinkage long sys_stime(time_t __user *tptr)
 +SYSCALL_DEFINE1(stime, time_t __user *, tptr)
  {
  	struct timespec tv;
  	int err;
-@@ -93,7 +93,8 @@ asmlinkage long sys_stime(time_t __user 
+@@ -98,7 +98,8 @@ asmlinkage long sys_stime(time_t __user 
  
  #endif /* __ARCH_WANT_SYS_TIME */
  
@@ -69,7 +69,7 @@
  {
  	if (likely(tv != NULL)) {
  		struct timeval ktv;
-@@ -176,8 +177,8 @@ int do_sys_settimeofday(struct timespec 
+@@ -181,8 +182,8 @@ int do_sys_settimeofday(struct timespec 
  	return 0;
  }
  
@@ -80,8 +80,8 @@
  {
  	struct timeval user_tv;
  	struct timespec	new_ts;
-@@ -197,7 +198,7 @@ asmlinkage long sys_settimeofday(struct 
- 	return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL);
+@@ -375,7 +376,7 @@ leave:	if ((time_status & (STA_UNSYNC|ST
+ 	return(result);
  }
  
 -asmlinkage long sys_adjtimex(struct timex __user *txc_p)
@@ -89,10 +89,10 @@
  {
  	struct timex txc;		/* Local copy of parameter */
  	int ret;
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c linux-source-2.6.24/kernel/timer.c
---- linux-source-2.6.24.orig/kernel/timer.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/kernel/timer.c	2009-01-21 00:54:00.000000000 -0700
-@@ -947,7 +947,7 @@ void do_timer(unsigned long ticks)
+diff -urpN linux-source-2.6.18.orig/kernel/timer.c linux-source-2.6.18/kernel/timer.c
+--- linux-source-2.6.18.orig/kernel/timer.c	2009-01-25 19:39:05.000000000 -0700
++++ linux-source-2.6.18/kernel/timer.c	2009-01-25 20:31:17.000000000 -0700
+@@ -1295,7 +1295,7 @@ void do_timer(struct pt_regs *regs)
   * For backwards compatibility?  This can be done in libc so Alpha
   * and all newer ports shouldn't need it.
   */
@@ -101,21 +101,21 @@
  {
  	return alarm_setitimer(seconds);
  }
-@@ -970,7 +970,7 @@ asmlinkage long sys_alarm(unsigned int s
+@@ -1318,7 +1318,7 @@ asmlinkage long sys_alarm(unsigned int s
   *
   * This is SMP safe as current->tgid does not change.
   */
 -asmlinkage long sys_getpid(void)
 +SYSCALL_DEFINE0(getpid)
  {
- 	return task_tgid_vnr(current);
+ 	return current->tgid;
  }
-@@ -1116,7 +1116,7 @@ signed long __sched schedule_timeout_uni
+@@ -1465,7 +1465,7 @@ signed long __sched schedule_timeout_uni
  EXPORT_SYMBOL(schedule_timeout_uninterruptible);
  
  /* Thread ID - the internal kernel "pid" */
 -asmlinkage long sys_gettid(void)
 +SYSCALL_DEFINE0(gettid)
  {
- 	return task_pid_vnr(current);
+ 	return current->pid;
  }

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 00:54:00.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 00:56:20.000000000 -0700
-@@ -742,7 +742,7 @@ asmlinkage long sys_setresuid(uid_t ruid
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 20:31:17.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 20:34:36.000000000 -0700
+@@ -1071,7 +1071,7 @@ asmlinkage long sys_setresuid(uid_t ruid
  	return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RES);
  }
  
@@ -24,7 +24,7 @@
  {
  	int retval;
  
-@@ -793,7 +793,7 @@ asmlinkage long sys_setresgid(gid_t rgid
+@@ -1123,7 +1123,7 @@ asmlinkage long sys_setresgid(gid_t rgid
  	return 0;
  }
  
@@ -33,16 +33,16 @@
  {
  	int retval;
  
-@@ -987,7 +987,7 @@ out:
+@@ -1319,7 +1319,7 @@ out:
  	return err;
  }
  
 -asmlinkage long sys_getpgid(pid_t pid)
 +SYSCALL_DEFINE1(getpgid, pid_t, pid)
  {
- 	if (!pid)
- 		return task_pgrp_vnr(current);
-@@ -1013,7 +1013,7 @@ asmlinkage long sys_getpgid(pid_t pid)
+ 	if (!pid) {
+ 		return process_group(current);
+@@ -1343,7 +1343,7 @@ asmlinkage long sys_getpgid(pid_t pid)
  
  #ifdef __ARCH_WANT_SYS_GETPGRP
  
@@ -50,20 +50,20 @@
 +SYSCALL_DEFINE0(getpgrp)
  {
  	/* SMP - assuming writes are word atomic this is fine */
- 	return task_pgrp_vnr(current);
-@@ -1021,7 +1021,7 @@ asmlinkage long sys_getpgrp(void)
+ 	return process_group(current);
+@@ -1351,7 +1351,7 @@ asmlinkage long sys_getpgrp(void)
  
  #endif
  
 -asmlinkage long sys_getsid(pid_t pid)
 +SYSCALL_DEFINE1(getsid, pid_t, pid)
  {
- 	if (!pid)
- 		return task_session_vnr(current);
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c linux-source-2.6.24/kernel/timer.c
---- linux-source-2.6.24.orig/kernel/timer.c	2009-01-21 00:54:00.000000000 -0700
-+++ linux-source-2.6.24/kernel/timer.c	2009-01-21 00:55:17.000000000 -0700
-@@ -981,7 +981,7 @@ SYSCALL_DEFINE0(getpid)
+ 	if (!pid) {
+ 		return current->signal->session;
+diff -urpN linux-source-2.6.18.orig/kernel/timer.c linux-source-2.6.18/kernel/timer.c
+--- linux-source-2.6.18.orig/kernel/timer.c	2009-01-25 20:31:17.000000000 -0700
++++ linux-source-2.6.18/kernel/timer.c	2009-01-25 20:34:36.000000000 -0700
+@@ -1329,7 +1329,7 @@ SYSCALL_DEFINE0(getpid)
   * value of ->real_parent under rcu_read_lock(), see
   * release_task()->call_rcu(delayed_put_task_struct).
   */
@@ -72,7 +72,7 @@
  {
  	int pid;
  
-@@ -992,25 +992,25 @@ asmlinkage long sys_getppid(void)
+@@ -1340,25 +1340,25 @@ asmlinkage long sys_getppid(void)
  	return pid;
  }
  
@@ -102,1405 +102,3 @@
  {
  	/* Only we change this so SMP safe */
  	return  current->egid;
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c.orig linux-source-2.6.24/kernel/timer.c.orig
---- linux-source-2.6.24.orig/kernel/timer.c.orig	1969-12-31 17:00:00.000000000 -0700
-+++ linux-source-2.6.24/kernel/timer.c.orig	2009-01-21 00:54:00.000000000 -0700
-@@ -0,0 +1,1398 @@
-+/*
-+ *  linux/kernel/timer.c
-+ *
-+ *  Kernel internal timers, basic process system calls
-+ *
-+ *  Copyright (C) 1991, 1992  Linus Torvalds
-+ *
-+ *  1997-01-28  Modified by Finn Arne Gangstad to make timers scale better.
-+ *
-+ *  1997-09-10  Updated NTP code according to technical memorandum Jan '96
-+ *              "A Kernel Model for Precision Timekeeping" by Dave Mills
-+ *  1998-12-24  Fixed a xtime SMP race (we need the xtime_lock rw spinlock to
-+ *              serialize accesses to xtime/lost_ticks).
-+ *                              Copyright (C) 1998  Andrea Arcangeli
-+ *  1999-03-10  Improved NTP compatibility by Ulrich Windl
-+ *  2002-05-31	Move sys_sysinfo here and make its locking sane, Robert Love
-+ *  2000-10-05  Implemented scalable SMP per-CPU timer handling.
-+ *                              Copyright (C) 2000, 2001, 2002  Ingo Molnar
-+ *              Designed by David S. Miller, Alexey Kuznetsov and Ingo Molnar
-+ */
-+
-+#include <linux/kernel_stat.h>
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/percpu.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/swap.h>
-+#include <linux/pid_namespace.h>
-+#include <linux/notifier.h>
-+#include <linux/thread_info.h>
-+#include <linux/time.h>
-+#include <linux/jiffies.h>
-+#include <linux/posix-timers.h>
-+#include <linux/cpu.h>
-+#include <linux/syscalls.h>
-+#include <linux/delay.h>
-+#include <linux/tick.h>
-+#include <linux/kallsyms.h>
-+
-+#include <asm/uaccess.h>
-+#include <asm/unistd.h>
-+#include <asm/div64.h>
-+#include <asm/timex.h>
-+#include <asm/io.h>
-+
-+u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
-+
-+EXPORT_SYMBOL(jiffies_64);
-+
-+/*
-+ * per-CPU timer vector definitions:
-+ */
-+#define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6)
-+#define TVR_BITS (CONFIG_BASE_SMALL ? 6 : 8)
-+#define TVN_SIZE (1 << TVN_BITS)
-+#define TVR_SIZE (1 << TVR_BITS)
-+#define TVN_MASK (TVN_SIZE - 1)
-+#define TVR_MASK (TVR_SIZE - 1)
-+
-+typedef struct tvec_s {
-+	struct list_head vec[TVN_SIZE];
-+} tvec_t;
-+
-+typedef struct tvec_root_s {
-+	struct list_head vec[TVR_SIZE];
-+} tvec_root_t;
-+
-+struct tvec_t_base_s {
-+	spinlock_t lock;
-+	struct timer_list *running_timer;
-+	unsigned long timer_jiffies;
-+	tvec_root_t tv1;
-+	tvec_t tv2;
-+	tvec_t tv3;
-+	tvec_t tv4;
-+	tvec_t tv5;
-+} ____cacheline_aligned;
-+
-+typedef struct tvec_t_base_s tvec_base_t;
-+
-+tvec_base_t boot_tvec_bases;
-+EXPORT_SYMBOL(boot_tvec_bases);
-+static DEFINE_PER_CPU(tvec_base_t *, tvec_bases) = &boot_tvec_bases;
-+
-+/*
-+ * Note that all tvec_bases is 2 byte aligned and lower bit of
-+ * base in timer_list is guaranteed to be zero. Use the LSB for
-+ * the new flag to indicate whether the timer is deferrable
-+ */
-+#define TBASE_DEFERRABLE_FLAG		(0x1)
-+
-+/* Functions below help us manage 'deferrable' flag */
-+static inline unsigned int tbase_get_deferrable(tvec_base_t *base)
-+{
-+	return ((unsigned int)(unsigned long)base & TBASE_DEFERRABLE_FLAG);
-+}
-+
-+static inline tvec_base_t *tbase_get_base(tvec_base_t *base)
-+{
-+	return ((tvec_base_t *)((unsigned long)base & ~TBASE_DEFERRABLE_FLAG));
-+}
-+
-+static inline void timer_set_deferrable(struct timer_list *timer)
-+{
-+	timer->base = ((tvec_base_t *)((unsigned long)(timer->base) |
-+				       TBASE_DEFERRABLE_FLAG));
-+}
-+
-+static inline void
-+timer_set_base(struct timer_list *timer, tvec_base_t *new_base)
-+{
-+	timer->base = (tvec_base_t *)((unsigned long)(new_base) |
-+				      tbase_get_deferrable(timer->base));
-+}
-+
-+/**
-+ * __round_jiffies - function to round jiffies to a full second
-+ * @j: the time in (absolute) jiffies that should be rounded
-+ * @cpu: the processor number on which the timeout will happen
-+ *
-+ * __round_jiffies() rounds an absolute time in the future (in jiffies)
-+ * up or down to (approximately) full seconds. This is useful for timers
-+ * for which the exact time they fire does not matter too much, as long as
-+ * they fire approximately every X seconds.
-+ *
-+ * By rounding these timers to whole seconds, all such timers will fire
-+ * at the same time, rather than at various times spread out. The goal
-+ * of this is to have the CPU wake up less, which saves power.
-+ *
-+ * The exact rounding is skewed for each processor to avoid all
-+ * processors firing at the exact same time, which could lead
-+ * to lock contention or spurious cache line bouncing.
-+ *
-+ * The return value is the rounded version of the @j parameter.
-+ */
-+unsigned long __round_jiffies(unsigned long j, int cpu)
-+{
-+	int rem;
-+	unsigned long original = j;
-+
-+	/*
-+	 * We don't want all cpus firing their timers at once hitting the
-+	 * same lock or cachelines, so we skew each extra cpu with an extra
-+	 * 3 jiffies. This 3 jiffies came originally from the mm/ code which
-+	 * already did this.
-+	 * The skew is done by adding 3*cpunr, then round, then subtract this
-+	 * extra offset again.
-+	 */
-+	j += cpu * 3;
-+
-+	rem = j % HZ;
-+
-+	/*
-+	 * If the target jiffie is just after a whole second (which can happen
-+	 * due to delays of the timer irq, long irq off times etc etc) then
-+	 * we should round down to the whole second, not up. Use 1/4th second
-+	 * as cutoff for this rounding as an extreme upper bound for this.
-+	 */
-+	if (rem < HZ/4) /* round down */
-+		j = j - rem;
-+	else /* round up */
-+		j = j - rem + HZ;
-+
-+	/* now that we have rounded, subtract the extra skew again */
-+	j -= cpu * 3;
-+
-+	if (j <= jiffies) /* rounding ate our timeout entirely; */
-+		return original;
-+	return j;
-+}
-+EXPORT_SYMBOL_GPL(__round_jiffies);
-+
-+/**
-+ * __round_jiffies_relative - function to round jiffies to a full second
-+ * @j: the time in (relative) jiffies that should be rounded
-+ * @cpu: the processor number on which the timeout will happen
-+ *
-+ * __round_jiffies_relative() rounds a time delta  in the future (in jiffies)
-+ * up or down to (approximately) full seconds. This is useful for timers
-+ * for which the exact time they fire does not matter too much, as long as
-+ * they fire approximately every X seconds.
-+ *
-+ * By rounding these timers to whole seconds, all such timers will fire
-+ * at the same time, rather than at various times spread out. The goal
-+ * of this is to have the CPU wake up less, which saves power.
-+ *
-+ * The exact rounding is skewed for each processor to avoid all
-+ * processors firing at the exact same time, which could lead
-+ * to lock contention or spurious cache line bouncing.
-+ *
-+ * The return value is the rounded version of the @j parameter.
-+ */
-+unsigned long __round_jiffies_relative(unsigned long j, int cpu)
-+{
-+	/*
-+	 * In theory the following code can skip a jiffy in case jiffies
-+	 * increments right between the addition and the later subtraction.
-+	 * However since the entire point of this function is to use approximate
-+	 * timeouts, it's entirely ok to not handle that.
-+	 */
-+	return  __round_jiffies(j + jiffies, cpu) - jiffies;
-+}
-+EXPORT_SYMBOL_GPL(__round_jiffies_relative);
-+
-+/**
-+ * round_jiffies - function to round jiffies to a full second
-+ * @j: the time in (absolute) jiffies that should be rounded
-+ *
-+ * round_jiffies() rounds an absolute time in the future (in jiffies)
-+ * up or down to (approximately) full seconds. This is useful for timers
-+ * for which the exact time they fire does not matter too much, as long as
-+ * they fire approximately every X seconds.
-+ *
-+ * By rounding these timers to whole seconds, all such timers will fire
-+ * at the same time, rather than at various times spread out. The goal
-+ * of this is to have the CPU wake up less, which saves power.
-+ *
-+ * The return value is the rounded version of the @j parameter.
-+ */
-+unsigned long round_jiffies(unsigned long j)
-+{
-+	return __round_jiffies(j, raw_smp_processor_id());
-+}
-+EXPORT_SYMBOL_GPL(round_jiffies);
-+
-+/**
-+ * round_jiffies_relative - function to round jiffies to a full second
-+ * @j: the time in (relative) jiffies that should be rounded
-+ *
-+ * round_jiffies_relative() rounds a time delta  in the future (in jiffies)
-+ * up or down to (approximately) full seconds. This is useful for timers
-+ * for which the exact time they fire does not matter too much, as long as
-+ * they fire approximately every X seconds.
-+ *
-+ * By rounding these timers to whole seconds, all such timers will fire
-+ * at the same time, rather than at various times spread out. The goal
-+ * of this is to have the CPU wake up less, which saves power.
-+ *
-+ * The return value is the rounded version of the @j parameter.
-+ */
-+unsigned long round_jiffies_relative(unsigned long j)
-+{
-+	return __round_jiffies_relative(j, raw_smp_processor_id());
-+}
-+EXPORT_SYMBOL_GPL(round_jiffies_relative);
-+
-+
-+static inline void set_running_timer(tvec_base_t *base,
-+					struct timer_list *timer)
-+{
-+#ifdef CONFIG_SMP
-+	base->running_timer = timer;
-+#endif
-+}
-+
-+static void internal_add_timer(tvec_base_t *base, struct timer_list *timer)
-+{
-+	unsigned long expires = timer->expires;
-+	unsigned long idx = expires - base->timer_jiffies;
-+	struct list_head *vec;
-+
-+	if (idx < TVR_SIZE) {
-+		int i = expires & TVR_MASK;
-+		vec = base->tv1.vec + i;
-+	} else if (idx < 1 << (TVR_BITS + TVN_BITS)) {
-+		int i = (expires >> TVR_BITS) & TVN_MASK;
-+		vec = base->tv2.vec + i;
-+	} else if (idx < 1 << (TVR_BITS + 2 * TVN_BITS)) {
-+		int i = (expires >> (TVR_BITS + TVN_BITS)) & TVN_MASK;
-+		vec = base->tv3.vec + i;
-+	} else if (idx < 1 << (TVR_BITS + 3 * TVN_BITS)) {
-+		int i = (expires >> (TVR_BITS + 2 * TVN_BITS)) & TVN_MASK;
-+		vec = base->tv4.vec + i;
-+	} else if ((signed long) idx < 0) {
-+		/*
-+		 * Can happen if you add a timer with expires == jiffies,
-+		 * or you set a timer to go off in the past
-+		 */
-+		vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK);
-+	} else {
-+		int i;
-+		/* If the timeout is larger than 0xffffffff on 64-bit
-+		 * architectures then we use the maximum timeout:
-+		 */
-+		if (idx > 0xffffffffUL) {
-+			idx = 0xffffffffUL;
-+			expires = idx + base->timer_jiffies;
-+		}
-+		i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;
-+		vec = base->tv5.vec + i;
-+	}
-+	/*
-+	 * Timers are FIFO:
-+	 */
-+	list_add_tail(&timer->entry, vec);
-+}
-+
-+#ifdef CONFIG_TIMER_STATS
-+void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr)
-+{
-+	if (timer->start_site)
-+		return;
-+
-+	timer->start_site = addr;
-+	memcpy(timer->start_comm, current->comm, TASK_COMM_LEN);
-+	timer->start_pid = current->pid;
-+}
-+
-+static void timer_stats_account_timer(struct timer_list *timer)
-+{
-+	unsigned int flag = 0;
-+
-+	if (unlikely(tbase_get_deferrable(timer->base)))
-+		flag |= TIMER_STATS_FLAG_DEFERRABLE;
-+
-+	timer_stats_update_stats(timer, timer->start_pid, timer->start_site,
-+				 timer->function, timer->start_comm, flag);
-+}
-+
-+#else
-+static void timer_stats_account_timer(struct timer_list *timer) {}
-+#endif
-+
-+/**
-+ * init_timer - initialize a timer.
-+ * @timer: the timer to be initialized
-+ *
-+ * init_timer() must be done to a timer prior calling *any* of the
-+ * other timer functions.
-+ */
-+void fastcall init_timer(struct timer_list *timer)
-+{
-+	timer->entry.next = NULL;
-+	timer->base = __raw_get_cpu_var(tvec_bases);
-+#ifdef CONFIG_TIMER_STATS
-+	timer->start_site = NULL;
-+	timer->start_pid = -1;
-+	memset(timer->start_comm, 0, TASK_COMM_LEN);
-+#endif
-+}
-+EXPORT_SYMBOL(init_timer);
-+
-+void fastcall init_timer_deferrable(struct timer_list *timer)
-+{
-+	init_timer(timer);
-+	timer_set_deferrable(timer);
-+}
-+EXPORT_SYMBOL(init_timer_deferrable);
-+
-+static inline void detach_timer(struct timer_list *timer,
-+				int clear_pending)
-+{
-+	struct list_head *entry = &timer->entry;
-+
-+	__list_del(entry->prev, entry->next);
-+	if (clear_pending)
-+		entry->next = NULL;
-+	entry->prev = LIST_POISON2;
-+}
-+
-+/*
-+ * We are using hashed locking: holding per_cpu(tvec_bases).lock
-+ * means that all timers which are tied to this base via timer->base are
-+ * locked, and the base itself is locked too.
-+ *
-+ * So __run_timers/migrate_timers can safely modify all timers which could
-+ * be found on ->tvX lists.
-+ *
-+ * When the timer's base is locked, and the timer removed from list, it is
-+ * possible to set timer->base = NULL and drop the lock: the timer remains
-+ * locked.
-+ */
-+static tvec_base_t *lock_timer_base(struct timer_list *timer,
-+					unsigned long *flags)
-+	__acquires(timer->base->lock)
-+{
-+	tvec_base_t *base;
-+
-+	for (;;) {
-+		tvec_base_t *prelock_base = timer->base;
-+		base = tbase_get_base(prelock_base);
-+		if (likely(base != NULL)) {
-+			spin_lock_irqsave(&base->lock, *flags);
-+			if (likely(prelock_base == timer->base))
-+				return base;
-+			/* The timer has migrated to another CPU */
-+			spin_unlock_irqrestore(&base->lock, *flags);
-+		}
-+		cpu_relax();
-+	}
-+}
-+
-+int __mod_timer(struct timer_list *timer, unsigned long expires)
-+{
-+	tvec_base_t *base, *new_base;
-+	unsigned long flags;
-+	int ret = 0;
-+
-+	timer_stats_timer_set_start_info(timer);
-+	BUG_ON(!timer->function);
-+
-+	base = lock_timer_base(timer, &flags);
-+
-+	if (timer_pending(timer)) {
-+		detach_timer(timer, 0);
-+		ret = 1;
-+	}
-+
-+	new_base = __get_cpu_var(tvec_bases);
-+
-+	if (base != new_base) {
-+		/*
-+		 * We are trying to schedule the timer on the local CPU.
-+		 * However we can't change timer's base while it is running,
-+		 * otherwise del_timer_sync() can't detect that the timer's
-+		 * handler yet has not finished. This also guarantees that
-+		 * the timer is serialized wrt itself.
-+		 */
-+		if (likely(base->running_timer != timer)) {
-+			/* See the comment in lock_timer_base() */
-+			timer_set_base(timer, NULL);
-+			spin_unlock(&base->lock);
-+			base = new_base;
-+			spin_lock(&base->lock);
-+			timer_set_base(timer, base);
-+		}
-+	}
-+
-+	timer->expires = expires;
-+	internal_add_timer(base, timer);
-+	spin_unlock_irqrestore(&base->lock, flags);
-+
-+	return ret;
-+}
-+
-+EXPORT_SYMBOL(__mod_timer);
-+
-+/**
-+ * add_timer_on - start a timer on a particular CPU
-+ * @timer: the timer to be added
-+ * @cpu: the CPU to start it on
-+ *
-+ * This is not very scalable on SMP. Double adds are not possible.
-+ */
-+void add_timer_on(struct timer_list *timer, int cpu)
-+{
-+	tvec_base_t *base = per_cpu(tvec_bases, cpu);
-+	unsigned long flags;
-+
-+	timer_stats_timer_set_start_info(timer);
-+	BUG_ON(timer_pending(timer) || !timer->function);
-+	spin_lock_irqsave(&base->lock, flags);
-+	timer_set_base(timer, base);
-+	internal_add_timer(base, timer);
-+	/*
-+	 * Check whether the other CPU is idle and needs to be
-+	 * triggered to reevaluate the timer wheel when nohz is
-+	 * active. We are protected against the other CPU fiddling
-+	 * with the timer by holding the timer base lock. This also
-+	 * makes sure that a CPU on the way to idle can not evaluate
-+	 * the timer wheel.
-+	 */
-+	wake_up_idle_cpu(cpu);
-+	spin_unlock_irqrestore(&base->lock, flags);
-+}
-+
-+/**
-+ * mod_timer - modify a timer's timeout
-+ * @timer: the timer to be modified
-+ * @expires: new timeout in jiffies
-+ *
-+ * mod_timer() is a more efficient way to update the expire field of an
-+ * active timer (if the timer is inactive it will be activated)
-+ *
-+ * mod_timer(timer, expires) is equivalent to:
-+ *
-+ *     del_timer(timer); timer->expires = expires; add_timer(timer);
-+ *
-+ * Note that if there are multiple unserialized concurrent users of the
-+ * same timer, then mod_timer() is the only safe way to modify the timeout,
-+ * since add_timer() cannot modify an already running timer.
-+ *
-+ * The function returns whether it has modified a pending timer or not.
-+ * (ie. mod_timer() of an inactive timer returns 0, mod_timer() of an
-+ * active timer returns 1.)
-+ */
-+int mod_timer(struct timer_list *timer, unsigned long expires)
-+{
-+	BUG_ON(!timer->function);
-+
-+	timer_stats_timer_set_start_info(timer);
-+	/*
-+	 * This is a common optimization triggered by the
-+	 * networking code - if the timer is re-modified
-+	 * to be the same thing then just return:
-+	 */
-+	if (timer->expires == expires && timer_pending(timer))
-+		return 1;
-+
-+	return __mod_timer(timer, expires);
-+}
-+
-+EXPORT_SYMBOL(mod_timer);
-+
-+/**
-+ * del_timer - deactive a timer.
-+ * @timer: the timer to be deactivated
-+ *
-+ * del_timer() deactivates a timer - this works on both active and inactive
-+ * timers.
-+ *
-+ * The function returns whether it has deactivated a pending timer or not.
-+ * (ie. del_timer() of an inactive timer returns 0, del_timer() of an
-+ * active timer returns 1.)
-+ */
-+int del_timer(struct timer_list *timer)
-+{
-+	tvec_base_t *base;
-+	unsigned long flags;
-+	int ret = 0;
-+
-+	timer_stats_timer_clear_start_info(timer);
-+	if (timer_pending(timer)) {
-+		base = lock_timer_base(timer, &flags);
-+		if (timer_pending(timer)) {
-+			detach_timer(timer, 1);
-+			ret = 1;
-+		}
-+		spin_unlock_irqrestore(&base->lock, flags);
-+	}
-+
-+	return ret;
-+}
-+
-+EXPORT_SYMBOL(del_timer);
-+
-+#ifdef CONFIG_SMP
-+/**
-+ * try_to_del_timer_sync - Try to deactivate a timer
-+ * @timer: timer do del
-+ *
-+ * This function tries to deactivate a timer. Upon successful (ret >= 0)
-+ * exit the timer is not queued and the handler is not running on any CPU.
-+ *
-+ * It must not be called from interrupt contexts.
-+ */
-+int try_to_del_timer_sync(struct timer_list *timer)
-+{
-+	tvec_base_t *base;
-+	unsigned long flags;
-+	int ret = -1;
-+
-+	base = lock_timer_base(timer, &flags);
-+
-+	if (base->running_timer == timer)
-+		goto out;
-+
-+	ret = 0;
-+	if (timer_pending(timer)) {
-+		detach_timer(timer, 1);
-+		ret = 1;
-+	}
-+out:
-+	spin_unlock_irqrestore(&base->lock, flags);
-+
-+	return ret;
-+}
-+
-+EXPORT_SYMBOL(try_to_del_timer_sync);
-+
-+/**
-+ * del_timer_sync - deactivate a timer and wait for the handler to finish.
-+ * @timer: the timer to be deactivated
-+ *
-+ * This function only differs from del_timer() on SMP: besides deactivating
-+ * the timer it also makes sure the handler has finished executing on other
-+ * CPUs.
-+ *
-+ * Synchronization rules: Callers must prevent restarting of the timer,
-+ * otherwise this function is meaningless. It must not be called from
-+ * interrupt contexts. The caller must not hold locks which would prevent
-+ * completion of the timer's handler. The timer's handler must not call
-+ * add_timer_on(). Upon exit the timer is not queued and the handler is
-+ * not running on any CPU.
-+ *
-+ * The function returns whether it has deactivated a pending timer or not.
-+ */
-+int del_timer_sync(struct timer_list *timer)
-+{
-+	for (;;) {
-+		int ret = try_to_del_timer_sync(timer);
-+		if (ret >= 0)
-+			return ret;
-+		cpu_relax();
-+	}
-+}
-+
-+EXPORT_SYMBOL(del_timer_sync);
-+#endif
-+
-+static int cascade(tvec_base_t *base, tvec_t *tv, int index)
-+{
-+	/* cascade all the timers from tv up one level */
-+	struct timer_list *timer, *tmp;
-+	struct list_head tv_list;
-+
-+	list_replace_init(tv->vec + index, &tv_list);
-+
-+	/*
-+	 * We are removing _all_ timers from the list, so we
-+	 * don't have to detach them individually.
-+	 */
-+	list_for_each_entry_safe(timer, tmp, &tv_list, entry) {
-+		BUG_ON(tbase_get_base(timer->base) != base);
-+		internal_add_timer(base, timer);
-+	}
-+
-+	return index;
-+}
-+
-+#define INDEX(N) ((base->timer_jiffies >> (TVR_BITS + (N) * TVN_BITS)) & TVN_MASK)
-+
-+/**
-+ * __run_timers - run all expired timers (if any) on this CPU.
-+ * @base: the timer vector to be processed.
-+ *
-+ * This function cascades all vectors and executes all expired timer
-+ * vectors.
-+ */
-+static inline void __run_timers(tvec_base_t *base)
-+{
-+	struct timer_list *timer;
-+
-+	spin_lock_irq(&base->lock);
-+	while (time_after_eq(jiffies, base->timer_jiffies)) {
-+		struct list_head work_list;
-+		struct list_head *head = &work_list;
-+		int index = base->timer_jiffies & TVR_MASK;
-+
-+		/*
-+		 * Cascade timers:
-+		 */
-+		if (!index &&
-+			(!cascade(base, &base->tv2, INDEX(0))) &&
-+				(!cascade(base, &base->tv3, INDEX(1))) &&
-+					!cascade(base, &base->tv4, INDEX(2)))
-+			cascade(base, &base->tv5, INDEX(3));
-+		++base->timer_jiffies;
-+		list_replace_init(base->tv1.vec + index, &work_list);
-+		while (!list_empty(head)) {
-+			void (*fn)(unsigned long);
-+			unsigned long data;
-+
-+			timer = list_first_entry(head, struct timer_list,entry);
-+			fn = timer->function;
-+			data = timer->data;
-+
-+			timer_stats_account_timer(timer);
-+
-+			set_running_timer(base, timer);
-+			detach_timer(timer, 1);
-+			spin_unlock_irq(&base->lock);
-+			{
-+				int preempt_count = preempt_count();
-+				fn(data);
-+				if (preempt_count != preempt_count()) {
-+					printk(KERN_WARNING "huh, entered %p "
-+					       "with preempt_count %08x, exited"
-+					       " with %08x?\n",
-+					       fn, preempt_count,
-+					       preempt_count());
-+					BUG();
-+				}
-+			}
-+			spin_lock_irq(&base->lock);
-+		}
-+	}
-+	set_running_timer(base, NULL);
-+	spin_unlock_irq(&base->lock);
-+}
-+
-+#if defined(CONFIG_NO_IDLE_HZ) || defined(CONFIG_NO_HZ)
-+/*
-+ * Find out when the next timer event is due to happen. This
-+ * is used on S/390 to stop all activity when a cpus is idle.
-+ * This functions needs to be called disabled.
-+ */
-+static unsigned long __next_timer_interrupt(tvec_base_t *base)
-+{
-+	unsigned long timer_jiffies = base->timer_jiffies;
-+	unsigned long expires = timer_jiffies + NEXT_TIMER_MAX_DELTA;
-+	int index, slot, array, found = 0;
-+	struct timer_list *nte;
-+	tvec_t *varray[4];
-+
-+	/* Look for timer events in tv1. */
-+	index = slot = timer_jiffies & TVR_MASK;
-+	do {
-+		list_for_each_entry(nte, base->tv1.vec + slot, entry) {
-+			if (tbase_get_deferrable(nte->base))
-+				continue;
-+
-+			found = 1;
-+			expires = nte->expires;
-+			/* Look at the cascade bucket(s)? */
-+			if (!index || slot < index)
-+				goto cascade;
-+			return expires;
-+		}
-+		slot = (slot + 1) & TVR_MASK;
-+	} while (slot != index);
-+
-+cascade:
-+	/* Calculate the next cascade event */
-+	if (index)
-+		timer_jiffies += TVR_SIZE - index;
-+	timer_jiffies >>= TVR_BITS;
-+
-+	/* Check tv2-tv5. */
-+	varray[0] = &base->tv2;
-+	varray[1] = &base->tv3;
-+	varray[2] = &base->tv4;
-+	varray[3] = &base->tv5;
-+
-+	for (array = 0; array < 4; array++) {
-+		tvec_t *varp = varray[array];
-+
-+		index = slot = timer_jiffies & TVN_MASK;
-+		do {
-+			list_for_each_entry(nte, varp->vec + slot, entry) {
-+				found = 1;
-+				if (time_before(nte->expires, expires))
-+					expires = nte->expires;
-+			}
-+			/*
-+			 * Do we still search for the first timer or are
-+			 * we looking up the cascade buckets ?
-+			 */
-+			if (found) {
-+				/* Look at the cascade bucket(s)? */
-+				if (!index || slot < index)
-+					break;
-+				return expires;
-+			}
-+			slot = (slot + 1) & TVN_MASK;
-+		} while (slot != index);
-+
-+		if (index)
-+			timer_jiffies += TVN_SIZE - index;
-+		timer_jiffies >>= TVN_BITS;
-+	}
-+	return expires;
-+}
-+
-+/*
-+ * Check, if the next hrtimer event is before the next timer wheel
-+ * event:
-+ */
-+static unsigned long cmp_next_hrtimer_event(unsigned long now,
-+					    unsigned long expires)
-+{
-+	ktime_t hr_delta = hrtimer_get_next_event();
-+	struct timespec tsdelta;
-+	unsigned long delta;
-+
-+	if (hr_delta.tv64 == KTIME_MAX)
-+		return expires;
-+
-+	/*
-+	 * Expired timer available, let it expire in the next tick
-+	 */
-+	if (hr_delta.tv64 <= 0)
-+		return now + 1;
-+
-+	tsdelta = ktime_to_timespec(hr_delta);
-+	delta = timespec_to_jiffies(&tsdelta);
-+
-+	/*
-+	 * Limit the delta to the max value, which is checked in
-+	 * tick_nohz_stop_sched_tick():
-+	 */
-+	if (delta > NEXT_TIMER_MAX_DELTA)
-+		delta = NEXT_TIMER_MAX_DELTA;
-+
-+	/*
-+	 * Take rounding errors in to account and make sure, that it
-+	 * expires in the next tick. Otherwise we go into an endless
-+	 * ping pong due to tick_nohz_stop_sched_tick() retriggering
-+	 * the timer softirq
-+	 */
-+	if (delta < 1)
-+		delta = 1;
-+	now += delta;
-+	if (time_before(now, expires))
-+		return now;
-+	return expires;
-+}
-+
-+/**
-+ * get_next_timer_interrupt - return the jiffy of the next pending timer
-+ * @now: current time (in jiffies)
-+ */
-+unsigned long get_next_timer_interrupt(unsigned long now)
-+{
-+	tvec_base_t *base = __get_cpu_var(tvec_bases);
-+	unsigned long expires;
-+
-+	spin_lock(&base->lock);
-+	expires = __next_timer_interrupt(base);
-+	spin_unlock(&base->lock);
-+
-+	if (time_before_eq(expires, now))
-+		return now;
-+
-+	return cmp_next_hrtimer_event(now, expires);
-+}
-+
-+#ifdef CONFIG_NO_IDLE_HZ
-+unsigned long next_timer_interrupt(void)
-+{
-+	return get_next_timer_interrupt(jiffies);
-+}
-+#endif
-+
-+#endif
-+
-+#ifndef CONFIG_VIRT_CPU_ACCOUNTING
-+void account_process_tick(struct task_struct *p, int user_tick)
-+{
-+	if (user_tick) {
-+		account_user_time(p, jiffies_to_cputime(1));
-+		account_user_time_scaled(p, jiffies_to_cputime(1));
-+	} else {
-+		account_system_time(p, HARDIRQ_OFFSET, jiffies_to_cputime(1));
-+		account_system_time_scaled(p, jiffies_to_cputime(1));
-+	}
-+}
-+#endif
-+
-+/*
-+ * Called from the timer interrupt handler to charge one tick to the current
-+ * process.  user_tick is 1 if the tick is user time, 0 for system.
-+ */
-+void update_process_times(int user_tick)
-+{
-+	struct task_struct *p = current;
-+	int cpu = smp_processor_id();
-+
-+	/* Note: this timer irq context must be accounted for as well. */
-+	account_process_tick(p, user_tick);
-+	run_local_timers();
-+	if (rcu_pending(cpu))
-+		rcu_check_callbacks(cpu, user_tick);
-+	scheduler_tick();
-+	run_posix_cpu_timers(p);
-+}
-+
-+/*
-+ * Nr of active tasks - counted in fixed-point numbers
-+ */
-+static unsigned long count_active_tasks(void)
-+{
-+	return nr_active() * FIXED_1;
-+}
-+
-+/*
-+ * Hmm.. Changed this, as the GNU make sources (load.c) seems to
-+ * imply that avenrun[] is the standard name for this kind of thing.
-+ * Nothing else seems to be standardized: the fractional size etc
-+ * all seem to differ on different machines.
-+ *
-+ * Requires xtime_lock to access.
-+ */
-+unsigned long avenrun[3];
-+
-+EXPORT_SYMBOL(avenrun);
-+
-+/*
-+ * calc_load - given tick count, update the avenrun load estimates.
-+ * This is called while holding a write_lock on xtime_lock.
-+ */
-+static inline void calc_load(unsigned long ticks)
-+{
-+	unsigned long active_tasks; /* fixed-point */
-+	static int count = LOAD_FREQ;
-+
-+	count -= ticks;
-+	if (unlikely(count < 0)) {
-+		active_tasks = count_active_tasks();
-+		do {
-+			CALC_LOAD(avenrun[0], EXP_1, active_tasks);
-+			CALC_LOAD(avenrun[1], EXP_5, active_tasks);
-+			CALC_LOAD(avenrun[2], EXP_15, active_tasks);
-+			count += LOAD_FREQ;
-+		} while (count < 0);
-+	}
-+}
-+
-+/*
-+ * This function runs timers and the timer-tq in bottom half context.
-+ */
-+static void run_timer_softirq(struct softirq_action *h)
-+{
-+	tvec_base_t *base = __get_cpu_var(tvec_bases);
-+
-+	hrtimer_run_queues();
-+
-+	if (time_after_eq(jiffies, base->timer_jiffies))
-+		__run_timers(base);
-+}
-+
-+/*
-+ * Called by the local, per-CPU timer interrupt on SMP.
-+ */
-+void run_local_timers(void)
-+{
-+	raise_softirq(TIMER_SOFTIRQ);
-+	softlockup_tick();
-+}
-+
-+/*
-+ * Called by the timer interrupt. xtime_lock must already be taken
-+ * by the timer IRQ!
-+ */
-+static inline void update_times(unsigned long ticks)
-+{
-+	update_wall_time();
-+	calc_load(ticks);
-+}
-+
-+/*
-+ * The 64-bit jiffies value is not atomic - you MUST NOT read it
-+ * without sampling the sequence number in xtime_lock.
-+ * jiffies is defined in the linker script...
-+ */
-+
-+void do_timer(unsigned long ticks)
-+{
-+	jiffies_64 += ticks;
-+	update_times(ticks);
-+}
-+
-+#ifdef __ARCH_WANT_SYS_ALARM
-+
-+/*
-+ * For backwards compatibility?  This can be done in libc so Alpha
-+ * and all newer ports shouldn't need it.
-+ */
-+SYSCALL_DEFINE1(alarm, unsigned int, seconds)
-+{
-+	return alarm_setitimer(seconds);
-+}
-+
-+#endif
-+
-+#ifndef __alpha__
-+
-+/*
-+ * The Alpha uses getxpid, getxuid, and getxgid instead.  Maybe this
-+ * should be moved into arch/i386 instead?
-+ */
-+
-+/**
-+ * sys_getpid - return the thread group id of the current process
-+ *
-+ * Note, despite the name, this returns the tgid not the pid.  The tgid and
-+ * the pid are identical unless CLONE_THREAD was specified on clone() in
-+ * which case the tgid is the same in all threads of the same group.
-+ *
-+ * This is SMP safe as current->tgid does not change.
-+ */
-+SYSCALL_DEFINE0(getpid)
-+{
-+	return task_tgid_vnr(current);
-+}
-+
-+/*
-+ * Accessing ->real_parent is not SMP-safe, it could
-+ * change from under us. However, we can use a stale
-+ * value of ->real_parent under rcu_read_lock(), see
-+ * release_task()->call_rcu(delayed_put_task_struct).
-+ */
-+asmlinkage long sys_getppid(void)
-+{
-+	int pid;
-+
-+	rcu_read_lock();
-+	pid = task_tgid_nr_ns(current->real_parent, current->nsproxy->pid_ns);
-+	rcu_read_unlock();
-+
-+	return pid;
-+}
-+
-+asmlinkage long sys_getuid(void)
-+{
-+	/* Only we change this so SMP safe */
-+	return current->uid;
-+}
-+
-+asmlinkage long sys_geteuid(void)
-+{
-+	/* Only we change this so SMP safe */
-+	return current->euid;
-+}
-+
-+asmlinkage long sys_getgid(void)
-+{
-+	/* Only we change this so SMP safe */
-+	return current->gid;
-+}
-+
-+asmlinkage long sys_getegid(void)
-+{
-+	/* Only we change this so SMP safe */
-+	return  current->egid;
-+}
-+
-+#endif
-+
-+static void process_timeout(unsigned long __data)
-+{
-+	wake_up_process((struct task_struct *)__data);
-+}
-+
-+/**
-+ * schedule_timeout - sleep until timeout
-+ * @timeout: timeout value in jiffies
-+ *
-+ * Make the current task sleep until @timeout jiffies have
-+ * elapsed. The routine will return immediately unless
-+ * the current task state has been set (see set_current_state()).
-+ *
-+ * You can set the task state as follows -
-+ *
-+ * %TASK_UNINTERRUPTIBLE - at least @timeout jiffies are guaranteed to
-+ * pass before the routine returns. The routine will return 0
-+ *
-+ * %TASK_INTERRUPTIBLE - the routine may return early if a signal is
-+ * delivered to the current task. In this case the remaining time
-+ * in jiffies will be returned, or 0 if the timer expired in time
-+ *
-+ * The current task state is guaranteed to be TASK_RUNNING when this
-+ * routine returns.
-+ *
-+ * Specifying a @timeout value of %MAX_SCHEDULE_TIMEOUT will schedule
-+ * the CPU away without a bound on the timeout. In this case the return
-+ * value will be %MAX_SCHEDULE_TIMEOUT.
-+ *
-+ * In all cases the return value is guaranteed to be non-negative.
-+ */
-+fastcall signed long __sched schedule_timeout(signed long timeout)
-+{
-+	struct timer_list timer;
-+	unsigned long expire;
-+
-+	switch (timeout)
-+	{
-+	case MAX_SCHEDULE_TIMEOUT:
-+		/*
-+		 * These two special cases are useful to be comfortable
-+		 * in the caller. Nothing more. We could take
-+		 * MAX_SCHEDULE_TIMEOUT from one of the negative value
-+		 * but I' d like to return a valid offset (>=0) to allow
-+		 * the caller to do everything it want with the retval.
-+		 */
-+		schedule();
-+		goto out;
-+	default:
-+		/*
-+		 * Another bit of PARANOID. Note that the retval will be
-+		 * 0 since no piece of kernel is supposed to do a check
-+		 * for a negative retval of schedule_timeout() (since it
-+		 * should never happens anyway). You just have the printk()
-+		 * that will tell you if something is gone wrong and where.
-+		 */
-+		if (timeout < 0) {
-+			printk(KERN_ERR "schedule_timeout: wrong timeout "
-+				"value %lx\n", timeout);
-+			dump_stack();
-+			current->state = TASK_RUNNING;
-+			goto out;
-+		}
-+	}
-+
-+	expire = timeout + jiffies;
-+
-+	setup_timer(&timer, process_timeout, (unsigned long)current);
-+	__mod_timer(&timer, expire);
-+	schedule();
-+	del_singleshot_timer_sync(&timer);
-+
-+	timeout = expire - jiffies;
-+
-+ out:
-+	return timeout < 0 ? 0 : timeout;
-+}
-+EXPORT_SYMBOL(schedule_timeout);
-+
-+/*
-+ * We can use __set_current_state() here because schedule_timeout() calls
-+ * schedule() unconditionally.
-+ */
-+signed long __sched schedule_timeout_interruptible(signed long timeout)
-+{
-+	__set_current_state(TASK_INTERRUPTIBLE);
-+	return schedule_timeout(timeout);
-+}
-+EXPORT_SYMBOL(schedule_timeout_interruptible);
-+
-+signed long __sched schedule_timeout_uninterruptible(signed long timeout)
-+{
-+	__set_current_state(TASK_UNINTERRUPTIBLE);
-+	return schedule_timeout(timeout);
-+}
-+EXPORT_SYMBOL(schedule_timeout_uninterruptible);
-+
-+/* Thread ID - the internal kernel "pid" */
-+SYSCALL_DEFINE0(gettid)
-+{
-+	return task_pid_vnr(current);
-+}
-+
-+/**
-+ * do_sysinfo - fill in sysinfo struct
-+ * @info: pointer to buffer to fill
-+ */
-+int do_sysinfo(struct sysinfo *info)
-+{
-+	unsigned long mem_total, sav_total;
-+	unsigned int mem_unit, bitcount;
-+	unsigned long seq;
-+
-+	memset(info, 0, sizeof(struct sysinfo));
-+
-+	do {
-+		struct timespec tp;
-+		seq = read_seqbegin(&xtime_lock);
-+
-+		/*
-+		 * This is annoying.  The below is the same thing
-+		 * posix_get_clock_monotonic() does, but it wants to
-+		 * take the lock which we want to cover the loads stuff
-+		 * too.
-+		 */
-+
-+		getnstimeofday(&tp);
-+		tp.tv_sec += wall_to_monotonic.tv_sec;
-+		tp.tv_nsec += wall_to_monotonic.tv_nsec;
-+		monotonic_to_bootbased(&tp);
-+		if (tp.tv_nsec - NSEC_PER_SEC >= 0) {
-+			tp.tv_nsec = tp.tv_nsec - NSEC_PER_SEC;
-+			tp.tv_sec++;
-+		}
-+		info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
-+
-+		info->loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
-+		info->loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT);
-+		info->loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT);
-+
-+		info->procs = nr_threads;
-+	} while (read_seqretry(&xtime_lock, seq));
-+
-+	si_meminfo(info);
-+	si_swapinfo(info);
-+
-+	/*
-+	 * If the sum of all the available memory (i.e. ram + swap)
-+	 * is less than can be stored in a 32 bit unsigned long then
-+	 * we can be binary compatible with 2.2.x kernels.  If not,
-+	 * well, in that case 2.2.x was broken anyways...
-+	 *
-+	 *  -Erik Andersen <andersee at debian.org>
-+	 */
-+
-+	mem_total = info->totalram + info->totalswap;
-+	if (mem_total < info->totalram || mem_total < info->totalswap)
-+		goto out;
-+	bitcount = 0;
-+	mem_unit = info->mem_unit;
-+	while (mem_unit > 1) {
-+		bitcount++;
-+		mem_unit >>= 1;
-+		sav_total = mem_total;
-+		mem_total <<= 1;
-+		if (mem_total < sav_total)
-+			goto out;
-+	}
-+
-+	/*
-+	 * If mem_total did not overflow, multiply all memory values by
-+	 * info->mem_unit and set it to 1.  This leaves things compatible
-+	 * with 2.2.x, and also retains compatibility with earlier 2.4.x
-+	 * kernels...
-+	 */
-+
-+	info->mem_unit = 1;
-+	info->totalram <<= bitcount;
-+	info->freeram <<= bitcount;
-+	info->sharedram <<= bitcount;
-+	info->bufferram <<= bitcount;
-+	info->totalswap <<= bitcount;
-+	info->freeswap <<= bitcount;
-+	info->totalhigh <<= bitcount;
-+	info->freehigh <<= bitcount;
-+
-+out:
-+	return 0;
-+}
-+
-+asmlinkage long sys_sysinfo(struct sysinfo __user *info)
-+{
-+	struct sysinfo val;
-+
-+	do_sysinfo(&val);
-+
-+	if (copy_to_user(info, &val, sizeof(struct sysinfo)))
-+		return -EFAULT;
-+
-+	return 0;
-+}
-+
-+/*
-+ * lockdep: we want to track each per-CPU base as a separate lock-class,
-+ * but timer-bases are kmalloc()-ed, so we need to attach separate
-+ * keys to them:
-+ */
-+static struct lock_class_key base_lock_keys[NR_CPUS];
-+
-+static int __cpuinit init_timers_cpu(int cpu)
-+{
-+	int j;
-+	tvec_base_t *base;
-+	static char __cpuinitdata tvec_base_done[NR_CPUS];
-+
-+	if (!tvec_base_done[cpu]) {
-+		static char boot_done;
-+
-+		if (boot_done) {
-+			/*
-+			 * The APs use this path later in boot
-+			 */
-+			base = kmalloc_node(sizeof(*base),
-+						GFP_KERNEL | __GFP_ZERO,
-+						cpu_to_node(cpu));
-+			if (!base)
-+				return -ENOMEM;
-+
-+			/* Make sure that tvec_base is 2 byte aligned */
-+			if (tbase_get_deferrable(base)) {
-+				WARN_ON(1);
-+				kfree(base);
-+				return -ENOMEM;
-+			}
-+			per_cpu(tvec_bases, cpu) = base;
-+		} else {
-+			/*
-+			 * This is for the boot CPU - we use compile-time
-+			 * static initialisation because per-cpu memory isn't
-+			 * ready yet and because the memory allocators are not
-+			 * initialised either.
-+			 */
-+			boot_done = 1;
-+			base = &boot_tvec_bases;
-+		}
-+		tvec_base_done[cpu] = 1;
-+	} else {
-+		base = per_cpu(tvec_bases, cpu);
-+	}
-+
-+	spin_lock_init(&base->lock);
-+	lockdep_set_class(&base->lock, base_lock_keys + cpu);
-+
-+	for (j = 0; j < TVN_SIZE; j++) {
-+		INIT_LIST_HEAD(base->tv5.vec + j);
-+		INIT_LIST_HEAD(base->tv4.vec + j);
-+		INIT_LIST_HEAD(base->tv3.vec + j);
-+		INIT_LIST_HEAD(base->tv2.vec + j);
-+	}
-+	for (j = 0; j < TVR_SIZE; j++)
-+		INIT_LIST_HEAD(base->tv1.vec + j);
-+
-+	base->timer_jiffies = jiffies;
-+	return 0;
-+}
-+
-+#ifdef CONFIG_HOTPLUG_CPU
-+static void migrate_timer_list(tvec_base_t *new_base, struct list_head *head)
-+{
-+	struct timer_list *timer;
-+
-+	while (!list_empty(head)) {
-+		timer = list_first_entry(head, struct timer_list, entry);
-+		detach_timer(timer, 0);
-+		timer_set_base(timer, new_base);
-+		internal_add_timer(new_base, timer);
-+	}
-+}
-+
-+static void __cpuinit migrate_timers(int cpu)
-+{
-+	tvec_base_t *old_base;
-+	tvec_base_t *new_base;
-+	int i;
-+
-+	BUG_ON(cpu_online(cpu));
-+	old_base = per_cpu(tvec_bases, cpu);
-+	new_base = get_cpu_var(tvec_bases);
-+
-+	local_irq_disable();
-+	double_spin_lock(&new_base->lock, &old_base->lock,
-+			 smp_processor_id() < cpu);
-+
-+	BUG_ON(old_base->running_timer);
-+
-+	for (i = 0; i < TVR_SIZE; i++)
-+		migrate_timer_list(new_base, old_base->tv1.vec + i);
-+	for (i = 0; i < TVN_SIZE; i++) {
-+		migrate_timer_list(new_base, old_base->tv2.vec + i);
-+		migrate_timer_list(new_base, old_base->tv3.vec + i);
-+		migrate_timer_list(new_base, old_base->tv4.vec + i);
-+		migrate_timer_list(new_base, old_base->tv5.vec + i);
-+	}
-+
-+	double_spin_unlock(&new_base->lock, &old_base->lock,
-+			   smp_processor_id() < cpu);
-+	local_irq_enable();
-+	put_cpu_var(tvec_bases);
-+}
-+#endif /* CONFIG_HOTPLUG_CPU */
-+
-+static int __cpuinit timer_cpu_notify(struct notifier_block *self,
-+				unsigned long action, void *hcpu)
-+{
-+	long cpu = (long)hcpu;
-+	switch(action) {
-+	case CPU_UP_PREPARE:
-+	case CPU_UP_PREPARE_FROZEN:
-+		if (init_timers_cpu(cpu) < 0)
-+			return NOTIFY_BAD;
-+		break;
-+#ifdef CONFIG_HOTPLUG_CPU
-+	case CPU_DEAD:
-+	case CPU_DEAD_FROZEN:
-+		migrate_timers(cpu);
-+		break;
-+#endif
-+	default:
-+		break;
-+	}
-+	return NOTIFY_OK;
-+}
-+
-+static struct notifier_block __cpuinitdata timers_nb = {
-+	.notifier_call	= timer_cpu_notify,
-+};
-+
-+
-+void __init init_timers(void)
-+{
-+	int err = timer_cpu_notify(&timers_nb, (unsigned long)CPU_UP_PREPARE,
-+				(void *)(long)smp_processor_id());
-+
-+	init_timer_stats();
-+
-+	BUG_ON(err == NOTIFY_BAD);
-+	register_cpu_notifier(&timers_nb);
-+	open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);
-+}
-+
-+/**
-+ * msleep - sleep safely even with waitqueue interruptions
-+ * @msecs: Time in milliseconds to sleep for
-+ */
-+void msleep(unsigned int msecs)
-+{
-+	unsigned long timeout = msecs_to_jiffies(msecs) + 1;
-+
-+	while (timeout)
-+		timeout = schedule_timeout_uninterruptible(timeout);
-+}
-+
-+EXPORT_SYMBOL(msleep);
-+
-+/**
-+ * msleep_interruptible - sleep waiting for signals
-+ * @msecs: Time in milliseconds to sleep for
-+ */
-+unsigned long msleep_interruptible(unsigned int msecs)
-+{
-+	unsigned long timeout = msecs_to_jiffies(msecs) + 1;
-+
-+	while (timeout && !signal_pending(current))
-+		timeout = schedule_timeout_interruptible(timeout);
-+	return jiffies_to_msecs(timeout);
-+}
-+
-+EXPORT_SYMBOL(msleep_interruptible);

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 00:56:20.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 00:57:05.000000000 -0700
-@@ -479,7 +479,7 @@ void ctrl_alt_del(void)
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 20:34:36.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 20:35:12.000000000 -0700
+@@ -797,7 +797,7 @@ void ctrl_alt_del(void)
   * SMP: There are not races, the GIDs are checked only by filesystem
   *      operations (as far as semantic preservation is concerned).
   */
@@ -24,7 +24,7 @@
  {
  	int old_rgid = current->gid;
  	int old_egid = current->egid;
-@@ -528,7 +528,7 @@ asmlinkage long sys_setregid(gid_t rgid,
+@@ -848,7 +848,7 @@ asmlinkage long sys_setregid(gid_t rgid,
   *
   * SMP: Same implicit races as above.
   */
@@ -33,7 +33,7 @@
  {
  	int old_egid = current->egid;
  	int retval;
-@@ -598,7 +598,7 @@ static int set_user(uid_t new_ruid, int 
+@@ -924,7 +924,7 @@ static int set_user(uid_t new_ruid, int 
   * 100% compatible with BSD.  A program which uses just setuid() will be
   * 100% compatible with POSIX with saved IDs. 
   */
@@ -42,7 +42,7 @@
  {
  	int old_ruid, old_euid, old_suid, new_ruid, new_euid;
  	int retval;
-@@ -660,7 +660,7 @@ asmlinkage long sys_setreuid(uid_t ruid,
+@@ -987,7 +987,7 @@ asmlinkage long sys_setreuid(uid_t ruid,
   * will allow a root program to temporarily drop privileges and be able to
   * regain them by swapping the real and effective uid.  
   */
@@ -50,8 +50,8 @@
 +SYSCALL_DEFINE1(setuid, uid_t, uid)
  {
  	int old_euid = current->euid;
- 	int old_ruid, old_suid, new_suid;
-@@ -699,7 +699,7 @@ asmlinkage long sys_setuid(uid_t uid)
+ 	int old_ruid, old_suid, new_ruid, new_suid;
+@@ -1027,7 +1027,7 @@ asmlinkage long sys_setuid(uid_t uid)
   * This function implements a generic ability to update ruid, euid,
   * and suid.  This allows you to implement the 4.4 compatible seteuid().
   */
@@ -60,7 +60,7 @@
  {
  	int old_ruid = current->uid;
  	int old_euid = current->euid;
-@@ -756,7 +756,7 @@ SYSCALL_DEFINE3(getresuid, uid_t __user 
+@@ -1085,7 +1085,7 @@ SYSCALL_DEFINE3(getresuid, uid_t __user 
  /*
   * Same as above, but for rgid, egid, sgid.
   */
@@ -69,7 +69,7 @@
  {
  	int retval;
  
-@@ -811,7 +811,7 @@ SYSCALL_DEFINE3(getresgid, gid_t __user 
+@@ -1141,7 +1141,7 @@ SYSCALL_DEFINE3(getresgid, gid_t __user 
   * whatever uid it wants to). It normally shadows "euid", except when
   * explicitly set by setfsuid() or for access..
   */
@@ -78,16 +78,16 @@
  {
  	int old_fsuid;
  
-@@ -840,7 +840,7 @@ asmlinkage long sys_setfsuid(uid_t uid)
+@@ -1172,7 +1172,7 @@ asmlinkage long sys_setfsuid(uid_t uid)
  /*
-  * Samma på svenska..
+  * Samma på svenska..
   */
 -asmlinkage long sys_setfsgid(gid_t gid)
 +SYSCALL_DEFINE1(setfsgid, gid_t, gid)
  {
  	int old_fsgid;
  
-@@ -1257,7 +1257,7 @@ int set_current_groups(struct group_info
+@@ -1583,7 +1583,7 @@ int set_current_groups(struct group_info
  
  EXPORT_SYMBOL(set_current_groups);
  
@@ -96,1405 +96,3 @@
  {
  	int i = 0;
  
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c.orig linux-source-2.6.24/kernel/timer.c.orig
---- linux-source-2.6.24.orig/kernel/timer.c.orig	2009-01-21 00:54:00.000000000 -0700
-+++ linux-source-2.6.24/kernel/timer.c.orig	1969-12-31 17:00:00.000000000 -0700
-@@ -1,1398 +0,0 @@
--/*
-- *  linux/kernel/timer.c
-- *
-- *  Kernel internal timers, basic process system calls
-- *
-- *  Copyright (C) 1991, 1992  Linus Torvalds
-- *
-- *  1997-01-28  Modified by Finn Arne Gangstad to make timers scale better.
-- *
-- *  1997-09-10  Updated NTP code according to technical memorandum Jan '96
-- *              "A Kernel Model for Precision Timekeeping" by Dave Mills
-- *  1998-12-24  Fixed a xtime SMP race (we need the xtime_lock rw spinlock to
-- *              serialize accesses to xtime/lost_ticks).
-- *                              Copyright (C) 1998  Andrea Arcangeli
-- *  1999-03-10  Improved NTP compatibility by Ulrich Windl
-- *  2002-05-31	Move sys_sysinfo here and make its locking sane, Robert Love
-- *  2000-10-05  Implemented scalable SMP per-CPU timer handling.
-- *                              Copyright (C) 2000, 2001, 2002  Ingo Molnar
-- *              Designed by David S. Miller, Alexey Kuznetsov and Ingo Molnar
-- */
--
--#include <linux/kernel_stat.h>
--#include <linux/module.h>
--#include <linux/interrupt.h>
--#include <linux/percpu.h>
--#include <linux/init.h>
--#include <linux/mm.h>
--#include <linux/swap.h>
--#include <linux/pid_namespace.h>
--#include <linux/notifier.h>
--#include <linux/thread_info.h>
--#include <linux/time.h>
--#include <linux/jiffies.h>
--#include <linux/posix-timers.h>
--#include <linux/cpu.h>
--#include <linux/syscalls.h>
--#include <linux/delay.h>
--#include <linux/tick.h>
--#include <linux/kallsyms.h>
--
--#include <asm/uaccess.h>
--#include <asm/unistd.h>
--#include <asm/div64.h>
--#include <asm/timex.h>
--#include <asm/io.h>
--
--u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
--
--EXPORT_SYMBOL(jiffies_64);
--
--/*
-- * per-CPU timer vector definitions:
-- */
--#define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6)
--#define TVR_BITS (CONFIG_BASE_SMALL ? 6 : 8)
--#define TVN_SIZE (1 << TVN_BITS)
--#define TVR_SIZE (1 << TVR_BITS)
--#define TVN_MASK (TVN_SIZE - 1)
--#define TVR_MASK (TVR_SIZE - 1)
--
--typedef struct tvec_s {
--	struct list_head vec[TVN_SIZE];
--} tvec_t;
--
--typedef struct tvec_root_s {
--	struct list_head vec[TVR_SIZE];
--} tvec_root_t;
--
--struct tvec_t_base_s {
--	spinlock_t lock;
--	struct timer_list *running_timer;
--	unsigned long timer_jiffies;
--	tvec_root_t tv1;
--	tvec_t tv2;
--	tvec_t tv3;
--	tvec_t tv4;
--	tvec_t tv5;
--} ____cacheline_aligned;
--
--typedef struct tvec_t_base_s tvec_base_t;
--
--tvec_base_t boot_tvec_bases;
--EXPORT_SYMBOL(boot_tvec_bases);
--static DEFINE_PER_CPU(tvec_base_t *, tvec_bases) = &boot_tvec_bases;
--
--/*
-- * Note that all tvec_bases is 2 byte aligned and lower bit of
-- * base in timer_list is guaranteed to be zero. Use the LSB for
-- * the new flag to indicate whether the timer is deferrable
-- */
--#define TBASE_DEFERRABLE_FLAG		(0x1)
--
--/* Functions below help us manage 'deferrable' flag */
--static inline unsigned int tbase_get_deferrable(tvec_base_t *base)
--{
--	return ((unsigned int)(unsigned long)base & TBASE_DEFERRABLE_FLAG);
--}
--
--static inline tvec_base_t *tbase_get_base(tvec_base_t *base)
--{
--	return ((tvec_base_t *)((unsigned long)base & ~TBASE_DEFERRABLE_FLAG));
--}
--
--static inline void timer_set_deferrable(struct timer_list *timer)
--{
--	timer->base = ((tvec_base_t *)((unsigned long)(timer->base) |
--				       TBASE_DEFERRABLE_FLAG));
--}
--
--static inline void
--timer_set_base(struct timer_list *timer, tvec_base_t *new_base)
--{
--	timer->base = (tvec_base_t *)((unsigned long)(new_base) |
--				      tbase_get_deferrable(timer->base));
--}
--
--/**
-- * __round_jiffies - function to round jiffies to a full second
-- * @j: the time in (absolute) jiffies that should be rounded
-- * @cpu: the processor number on which the timeout will happen
-- *
-- * __round_jiffies() rounds an absolute time in the future (in jiffies)
-- * up or down to (approximately) full seconds. This is useful for timers
-- * for which the exact time they fire does not matter too much, as long as
-- * they fire approximately every X seconds.
-- *
-- * By rounding these timers to whole seconds, all such timers will fire
-- * at the same time, rather than at various times spread out. The goal
-- * of this is to have the CPU wake up less, which saves power.
-- *
-- * The exact rounding is skewed for each processor to avoid all
-- * processors firing at the exact same time, which could lead
-- * to lock contention or spurious cache line bouncing.
-- *
-- * The return value is the rounded version of the @j parameter.
-- */
--unsigned long __round_jiffies(unsigned long j, int cpu)
--{
--	int rem;
--	unsigned long original = j;
--
--	/*
--	 * We don't want all cpus firing their timers at once hitting the
--	 * same lock or cachelines, so we skew each extra cpu with an extra
--	 * 3 jiffies. This 3 jiffies came originally from the mm/ code which
--	 * already did this.
--	 * The skew is done by adding 3*cpunr, then round, then subtract this
--	 * extra offset again.
--	 */
--	j += cpu * 3;
--
--	rem = j % HZ;
--
--	/*
--	 * If the target jiffie is just after a whole second (which can happen
--	 * due to delays of the timer irq, long irq off times etc etc) then
--	 * we should round down to the whole second, not up. Use 1/4th second
--	 * as cutoff for this rounding as an extreme upper bound for this.
--	 */
--	if (rem < HZ/4) /* round down */
--		j = j - rem;
--	else /* round up */
--		j = j - rem + HZ;
--
--	/* now that we have rounded, subtract the extra skew again */
--	j -= cpu * 3;
--
--	if (j <= jiffies) /* rounding ate our timeout entirely; */
--		return original;
--	return j;
--}
--EXPORT_SYMBOL_GPL(__round_jiffies);
--
--/**
-- * __round_jiffies_relative - function to round jiffies to a full second
-- * @j: the time in (relative) jiffies that should be rounded
-- * @cpu: the processor number on which the timeout will happen
-- *
-- * __round_jiffies_relative() rounds a time delta  in the future (in jiffies)
-- * up or down to (approximately) full seconds. This is useful for timers
-- * for which the exact time they fire does not matter too much, as long as
-- * they fire approximately every X seconds.
-- *
-- * By rounding these timers to whole seconds, all such timers will fire
-- * at the same time, rather than at various times spread out. The goal
-- * of this is to have the CPU wake up less, which saves power.
-- *
-- * The exact rounding is skewed for each processor to avoid all
-- * processors firing at the exact same time, which could lead
-- * to lock contention or spurious cache line bouncing.
-- *
-- * The return value is the rounded version of the @j parameter.
-- */
--unsigned long __round_jiffies_relative(unsigned long j, int cpu)
--{
--	/*
--	 * In theory the following code can skip a jiffy in case jiffies
--	 * increments right between the addition and the later subtraction.
--	 * However since the entire point of this function is to use approximate
--	 * timeouts, it's entirely ok to not handle that.
--	 */
--	return  __round_jiffies(j + jiffies, cpu) - jiffies;
--}
--EXPORT_SYMBOL_GPL(__round_jiffies_relative);
--
--/**
-- * round_jiffies - function to round jiffies to a full second
-- * @j: the time in (absolute) jiffies that should be rounded
-- *
-- * round_jiffies() rounds an absolute time in the future (in jiffies)
-- * up or down to (approximately) full seconds. This is useful for timers
-- * for which the exact time they fire does not matter too much, as long as
-- * they fire approximately every X seconds.
-- *
-- * By rounding these timers to whole seconds, all such timers will fire
-- * at the same time, rather than at various times spread out. The goal
-- * of this is to have the CPU wake up less, which saves power.
-- *
-- * The return value is the rounded version of the @j parameter.
-- */
--unsigned long round_jiffies(unsigned long j)
--{
--	return __round_jiffies(j, raw_smp_processor_id());
--}
--EXPORT_SYMBOL_GPL(round_jiffies);
--
--/**
-- * round_jiffies_relative - function to round jiffies to a full second
-- * @j: the time in (relative) jiffies that should be rounded
-- *
-- * round_jiffies_relative() rounds a time delta  in the future (in jiffies)
-- * up or down to (approximately) full seconds. This is useful for timers
-- * for which the exact time they fire does not matter too much, as long as
-- * they fire approximately every X seconds.
-- *
-- * By rounding these timers to whole seconds, all such timers will fire
-- * at the same time, rather than at various times spread out. The goal
-- * of this is to have the CPU wake up less, which saves power.
-- *
-- * The return value is the rounded version of the @j parameter.
-- */
--unsigned long round_jiffies_relative(unsigned long j)
--{
--	return __round_jiffies_relative(j, raw_smp_processor_id());
--}
--EXPORT_SYMBOL_GPL(round_jiffies_relative);
--
--
--static inline void set_running_timer(tvec_base_t *base,
--					struct timer_list *timer)
--{
--#ifdef CONFIG_SMP
--	base->running_timer = timer;
--#endif
--}
--
--static void internal_add_timer(tvec_base_t *base, struct timer_list *timer)
--{
--	unsigned long expires = timer->expires;
--	unsigned long idx = expires - base->timer_jiffies;
--	struct list_head *vec;
--
--	if (idx < TVR_SIZE) {
--		int i = expires & TVR_MASK;
--		vec = base->tv1.vec + i;
--	} else if (idx < 1 << (TVR_BITS + TVN_BITS)) {
--		int i = (expires >> TVR_BITS) & TVN_MASK;
--		vec = base->tv2.vec + i;
--	} else if (idx < 1 << (TVR_BITS + 2 * TVN_BITS)) {
--		int i = (expires >> (TVR_BITS + TVN_BITS)) & TVN_MASK;
--		vec = base->tv3.vec + i;
--	} else if (idx < 1 << (TVR_BITS + 3 * TVN_BITS)) {
--		int i = (expires >> (TVR_BITS + 2 * TVN_BITS)) & TVN_MASK;
--		vec = base->tv4.vec + i;
--	} else if ((signed long) idx < 0) {
--		/*
--		 * Can happen if you add a timer with expires == jiffies,
--		 * or you set a timer to go off in the past
--		 */
--		vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK);
--	} else {
--		int i;
--		/* If the timeout is larger than 0xffffffff on 64-bit
--		 * architectures then we use the maximum timeout:
--		 */
--		if (idx > 0xffffffffUL) {
--			idx = 0xffffffffUL;
--			expires = idx + base->timer_jiffies;
--		}
--		i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;
--		vec = base->tv5.vec + i;
--	}
--	/*
--	 * Timers are FIFO:
--	 */
--	list_add_tail(&timer->entry, vec);
--}
--
--#ifdef CONFIG_TIMER_STATS
--void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr)
--{
--	if (timer->start_site)
--		return;
--
--	timer->start_site = addr;
--	memcpy(timer->start_comm, current->comm, TASK_COMM_LEN);
--	timer->start_pid = current->pid;
--}
--
--static void timer_stats_account_timer(struct timer_list *timer)
--{
--	unsigned int flag = 0;
--
--	if (unlikely(tbase_get_deferrable(timer->base)))
--		flag |= TIMER_STATS_FLAG_DEFERRABLE;
--
--	timer_stats_update_stats(timer, timer->start_pid, timer->start_site,
--				 timer->function, timer->start_comm, flag);
--}
--
--#else
--static void timer_stats_account_timer(struct timer_list *timer) {}
--#endif
--
--/**
-- * init_timer - initialize a timer.
-- * @timer: the timer to be initialized
-- *
-- * init_timer() must be done to a timer prior calling *any* of the
-- * other timer functions.
-- */
--void fastcall init_timer(struct timer_list *timer)
--{
--	timer->entry.next = NULL;
--	timer->base = __raw_get_cpu_var(tvec_bases);
--#ifdef CONFIG_TIMER_STATS
--	timer->start_site = NULL;
--	timer->start_pid = -1;
--	memset(timer->start_comm, 0, TASK_COMM_LEN);
--#endif
--}
--EXPORT_SYMBOL(init_timer);
--
--void fastcall init_timer_deferrable(struct timer_list *timer)
--{
--	init_timer(timer);
--	timer_set_deferrable(timer);
--}
--EXPORT_SYMBOL(init_timer_deferrable);
--
--static inline void detach_timer(struct timer_list *timer,
--				int clear_pending)
--{
--	struct list_head *entry = &timer->entry;
--
--	__list_del(entry->prev, entry->next);
--	if (clear_pending)
--		entry->next = NULL;
--	entry->prev = LIST_POISON2;
--}
--
--/*
-- * We are using hashed locking: holding per_cpu(tvec_bases).lock
-- * means that all timers which are tied to this base via timer->base are
-- * locked, and the base itself is locked too.
-- *
-- * So __run_timers/migrate_timers can safely modify all timers which could
-- * be found on ->tvX lists.
-- *
-- * When the timer's base is locked, and the timer removed from list, it is
-- * possible to set timer->base = NULL and drop the lock: the timer remains
-- * locked.
-- */
--static tvec_base_t *lock_timer_base(struct timer_list *timer,
--					unsigned long *flags)
--	__acquires(timer->base->lock)
--{
--	tvec_base_t *base;
--
--	for (;;) {
--		tvec_base_t *prelock_base = timer->base;
--		base = tbase_get_base(prelock_base);
--		if (likely(base != NULL)) {
--			spin_lock_irqsave(&base->lock, *flags);
--			if (likely(prelock_base == timer->base))
--				return base;
--			/* The timer has migrated to another CPU */
--			spin_unlock_irqrestore(&base->lock, *flags);
--		}
--		cpu_relax();
--	}
--}
--
--int __mod_timer(struct timer_list *timer, unsigned long expires)
--{
--	tvec_base_t *base, *new_base;
--	unsigned long flags;
--	int ret = 0;
--
--	timer_stats_timer_set_start_info(timer);
--	BUG_ON(!timer->function);
--
--	base = lock_timer_base(timer, &flags);
--
--	if (timer_pending(timer)) {
--		detach_timer(timer, 0);
--		ret = 1;
--	}
--
--	new_base = __get_cpu_var(tvec_bases);
--
--	if (base != new_base) {
--		/*
--		 * We are trying to schedule the timer on the local CPU.
--		 * However we can't change timer's base while it is running,
--		 * otherwise del_timer_sync() can't detect that the timer's
--		 * handler yet has not finished. This also guarantees that
--		 * the timer is serialized wrt itself.
--		 */
--		if (likely(base->running_timer != timer)) {
--			/* See the comment in lock_timer_base() */
--			timer_set_base(timer, NULL);
--			spin_unlock(&base->lock);
--			base = new_base;
--			spin_lock(&base->lock);
--			timer_set_base(timer, base);
--		}
--	}
--
--	timer->expires = expires;
--	internal_add_timer(base, timer);
--	spin_unlock_irqrestore(&base->lock, flags);
--
--	return ret;
--}
--
--EXPORT_SYMBOL(__mod_timer);
--
--/**
-- * add_timer_on - start a timer on a particular CPU
-- * @timer: the timer to be added
-- * @cpu: the CPU to start it on
-- *
-- * This is not very scalable on SMP. Double adds are not possible.
-- */
--void add_timer_on(struct timer_list *timer, int cpu)
--{
--	tvec_base_t *base = per_cpu(tvec_bases, cpu);
--	unsigned long flags;
--
--	timer_stats_timer_set_start_info(timer);
--	BUG_ON(timer_pending(timer) || !timer->function);
--	spin_lock_irqsave(&base->lock, flags);
--	timer_set_base(timer, base);
--	internal_add_timer(base, timer);
--	/*
--	 * Check whether the other CPU is idle and needs to be
--	 * triggered to reevaluate the timer wheel when nohz is
--	 * active. We are protected against the other CPU fiddling
--	 * with the timer by holding the timer base lock. This also
--	 * makes sure that a CPU on the way to idle can not evaluate
--	 * the timer wheel.
--	 */
--	wake_up_idle_cpu(cpu);
--	spin_unlock_irqrestore(&base->lock, flags);
--}
--
--/**
-- * mod_timer - modify a timer's timeout
-- * @timer: the timer to be modified
-- * @expires: new timeout in jiffies
-- *
-- * mod_timer() is a more efficient way to update the expire field of an
-- * active timer (if the timer is inactive it will be activated)
-- *
-- * mod_timer(timer, expires) is equivalent to:
-- *
-- *     del_timer(timer); timer->expires = expires; add_timer(timer);
-- *
-- * Note that if there are multiple unserialized concurrent users of the
-- * same timer, then mod_timer() is the only safe way to modify the timeout,
-- * since add_timer() cannot modify an already running timer.
-- *
-- * The function returns whether it has modified a pending timer or not.
-- * (ie. mod_timer() of an inactive timer returns 0, mod_timer() of an
-- * active timer returns 1.)
-- */
--int mod_timer(struct timer_list *timer, unsigned long expires)
--{
--	BUG_ON(!timer->function);
--
--	timer_stats_timer_set_start_info(timer);
--	/*
--	 * This is a common optimization triggered by the
--	 * networking code - if the timer is re-modified
--	 * to be the same thing then just return:
--	 */
--	if (timer->expires == expires && timer_pending(timer))
--		return 1;
--
--	return __mod_timer(timer, expires);
--}
--
--EXPORT_SYMBOL(mod_timer);
--
--/**
-- * del_timer - deactive a timer.
-- * @timer: the timer to be deactivated
-- *
-- * del_timer() deactivates a timer - this works on both active and inactive
-- * timers.
-- *
-- * The function returns whether it has deactivated a pending timer or not.
-- * (ie. del_timer() of an inactive timer returns 0, del_timer() of an
-- * active timer returns 1.)
-- */
--int del_timer(struct timer_list *timer)
--{
--	tvec_base_t *base;
--	unsigned long flags;
--	int ret = 0;
--
--	timer_stats_timer_clear_start_info(timer);
--	if (timer_pending(timer)) {
--		base = lock_timer_base(timer, &flags);
--		if (timer_pending(timer)) {
--			detach_timer(timer, 1);
--			ret = 1;
--		}
--		spin_unlock_irqrestore(&base->lock, flags);
--	}
--
--	return ret;
--}
--
--EXPORT_SYMBOL(del_timer);
--
--#ifdef CONFIG_SMP
--/**
-- * try_to_del_timer_sync - Try to deactivate a timer
-- * @timer: timer do del
-- *
-- * This function tries to deactivate a timer. Upon successful (ret >= 0)
-- * exit the timer is not queued and the handler is not running on any CPU.
-- *
-- * It must not be called from interrupt contexts.
-- */
--int try_to_del_timer_sync(struct timer_list *timer)
--{
--	tvec_base_t *base;
--	unsigned long flags;
--	int ret = -1;
--
--	base = lock_timer_base(timer, &flags);
--
--	if (base->running_timer == timer)
--		goto out;
--
--	ret = 0;
--	if (timer_pending(timer)) {
--		detach_timer(timer, 1);
--		ret = 1;
--	}
--out:
--	spin_unlock_irqrestore(&base->lock, flags);
--
--	return ret;
--}
--
--EXPORT_SYMBOL(try_to_del_timer_sync);
--
--/**
-- * del_timer_sync - deactivate a timer and wait for the handler to finish.
-- * @timer: the timer to be deactivated
-- *
-- * This function only differs from del_timer() on SMP: besides deactivating
-- * the timer it also makes sure the handler has finished executing on other
-- * CPUs.
-- *
-- * Synchronization rules: Callers must prevent restarting of the timer,
-- * otherwise this function is meaningless. It must not be called from
-- * interrupt contexts. The caller must not hold locks which would prevent
-- * completion of the timer's handler. The timer's handler must not call
-- * add_timer_on(). Upon exit the timer is not queued and the handler is
-- * not running on any CPU.
-- *
-- * The function returns whether it has deactivated a pending timer or not.
-- */
--int del_timer_sync(struct timer_list *timer)
--{
--	for (;;) {
--		int ret = try_to_del_timer_sync(timer);
--		if (ret >= 0)
--			return ret;
--		cpu_relax();
--	}
--}
--
--EXPORT_SYMBOL(del_timer_sync);
--#endif
--
--static int cascade(tvec_base_t *base, tvec_t *tv, int index)
--{
--	/* cascade all the timers from tv up one level */
--	struct timer_list *timer, *tmp;
--	struct list_head tv_list;
--
--	list_replace_init(tv->vec + index, &tv_list);
--
--	/*
--	 * We are removing _all_ timers from the list, so we
--	 * don't have to detach them individually.
--	 */
--	list_for_each_entry_safe(timer, tmp, &tv_list, entry) {
--		BUG_ON(tbase_get_base(timer->base) != base);
--		internal_add_timer(base, timer);
--	}
--
--	return index;
--}
--
--#define INDEX(N) ((base->timer_jiffies >> (TVR_BITS + (N) * TVN_BITS)) & TVN_MASK)
--
--/**
-- * __run_timers - run all expired timers (if any) on this CPU.
-- * @base: the timer vector to be processed.
-- *
-- * This function cascades all vectors and executes all expired timer
-- * vectors.
-- */
--static inline void __run_timers(tvec_base_t *base)
--{
--	struct timer_list *timer;
--
--	spin_lock_irq(&base->lock);
--	while (time_after_eq(jiffies, base->timer_jiffies)) {
--		struct list_head work_list;
--		struct list_head *head = &work_list;
--		int index = base->timer_jiffies & TVR_MASK;
--
--		/*
--		 * Cascade timers:
--		 */
--		if (!index &&
--			(!cascade(base, &base->tv2, INDEX(0))) &&
--				(!cascade(base, &base->tv3, INDEX(1))) &&
--					!cascade(base, &base->tv4, INDEX(2)))
--			cascade(base, &base->tv5, INDEX(3));
--		++base->timer_jiffies;
--		list_replace_init(base->tv1.vec + index, &work_list);
--		while (!list_empty(head)) {
--			void (*fn)(unsigned long);
--			unsigned long data;
--
--			timer = list_first_entry(head, struct timer_list,entry);
--			fn = timer->function;
--			data = timer->data;
--
--			timer_stats_account_timer(timer);
--
--			set_running_timer(base, timer);
--			detach_timer(timer, 1);
--			spin_unlock_irq(&base->lock);
--			{
--				int preempt_count = preempt_count();
--				fn(data);
--				if (preempt_count != preempt_count()) {
--					printk(KERN_WARNING "huh, entered %p "
--					       "with preempt_count %08x, exited"
--					       " with %08x?\n",
--					       fn, preempt_count,
--					       preempt_count());
--					BUG();
--				}
--			}
--			spin_lock_irq(&base->lock);
--		}
--	}
--	set_running_timer(base, NULL);
--	spin_unlock_irq(&base->lock);
--}
--
--#if defined(CONFIG_NO_IDLE_HZ) || defined(CONFIG_NO_HZ)
--/*
-- * Find out when the next timer event is due to happen. This
-- * is used on S/390 to stop all activity when a cpus is idle.
-- * This functions needs to be called disabled.
-- */
--static unsigned long __next_timer_interrupt(tvec_base_t *base)
--{
--	unsigned long timer_jiffies = base->timer_jiffies;
--	unsigned long expires = timer_jiffies + NEXT_TIMER_MAX_DELTA;
--	int index, slot, array, found = 0;
--	struct timer_list *nte;
--	tvec_t *varray[4];
--
--	/* Look for timer events in tv1. */
--	index = slot = timer_jiffies & TVR_MASK;
--	do {
--		list_for_each_entry(nte, base->tv1.vec + slot, entry) {
--			if (tbase_get_deferrable(nte->base))
--				continue;
--
--			found = 1;
--			expires = nte->expires;
--			/* Look at the cascade bucket(s)? */
--			if (!index || slot < index)
--				goto cascade;
--			return expires;
--		}
--		slot = (slot + 1) & TVR_MASK;
--	} while (slot != index);
--
--cascade:
--	/* Calculate the next cascade event */
--	if (index)
--		timer_jiffies += TVR_SIZE - index;
--	timer_jiffies >>= TVR_BITS;
--
--	/* Check tv2-tv5. */
--	varray[0] = &base->tv2;
--	varray[1] = &base->tv3;
--	varray[2] = &base->tv4;
--	varray[3] = &base->tv5;
--
--	for (array = 0; array < 4; array++) {
--		tvec_t *varp = varray[array];
--
--		index = slot = timer_jiffies & TVN_MASK;
--		do {
--			list_for_each_entry(nte, varp->vec + slot, entry) {
--				found = 1;
--				if (time_before(nte->expires, expires))
--					expires = nte->expires;
--			}
--			/*
--			 * Do we still search for the first timer or are
--			 * we looking up the cascade buckets ?
--			 */
--			if (found) {
--				/* Look at the cascade bucket(s)? */
--				if (!index || slot < index)
--					break;
--				return expires;
--			}
--			slot = (slot + 1) & TVN_MASK;
--		} while (slot != index);
--
--		if (index)
--			timer_jiffies += TVN_SIZE - index;
--		timer_jiffies >>= TVN_BITS;
--	}
--	return expires;
--}
--
--/*
-- * Check, if the next hrtimer event is before the next timer wheel
-- * event:
-- */
--static unsigned long cmp_next_hrtimer_event(unsigned long now,
--					    unsigned long expires)
--{
--	ktime_t hr_delta = hrtimer_get_next_event();
--	struct timespec tsdelta;
--	unsigned long delta;
--
--	if (hr_delta.tv64 == KTIME_MAX)
--		return expires;
--
--	/*
--	 * Expired timer available, let it expire in the next tick
--	 */
--	if (hr_delta.tv64 <= 0)
--		return now + 1;
--
--	tsdelta = ktime_to_timespec(hr_delta);
--	delta = timespec_to_jiffies(&tsdelta);
--
--	/*
--	 * Limit the delta to the max value, which is checked in
--	 * tick_nohz_stop_sched_tick():
--	 */
--	if (delta > NEXT_TIMER_MAX_DELTA)
--		delta = NEXT_TIMER_MAX_DELTA;
--
--	/*
--	 * Take rounding errors in to account and make sure, that it
--	 * expires in the next tick. Otherwise we go into an endless
--	 * ping pong due to tick_nohz_stop_sched_tick() retriggering
--	 * the timer softirq
--	 */
--	if (delta < 1)
--		delta = 1;
--	now += delta;
--	if (time_before(now, expires))
--		return now;
--	return expires;
--}
--
--/**
-- * get_next_timer_interrupt - return the jiffy of the next pending timer
-- * @now: current time (in jiffies)
-- */
--unsigned long get_next_timer_interrupt(unsigned long now)
--{
--	tvec_base_t *base = __get_cpu_var(tvec_bases);
--	unsigned long expires;
--
--	spin_lock(&base->lock);
--	expires = __next_timer_interrupt(base);
--	spin_unlock(&base->lock);
--
--	if (time_before_eq(expires, now))
--		return now;
--
--	return cmp_next_hrtimer_event(now, expires);
--}
--
--#ifdef CONFIG_NO_IDLE_HZ
--unsigned long next_timer_interrupt(void)
--{
--	return get_next_timer_interrupt(jiffies);
--}
--#endif
--
--#endif
--
--#ifndef CONFIG_VIRT_CPU_ACCOUNTING
--void account_process_tick(struct task_struct *p, int user_tick)
--{
--	if (user_tick) {
--		account_user_time(p, jiffies_to_cputime(1));
--		account_user_time_scaled(p, jiffies_to_cputime(1));
--	} else {
--		account_system_time(p, HARDIRQ_OFFSET, jiffies_to_cputime(1));
--		account_system_time_scaled(p, jiffies_to_cputime(1));
--	}
--}
--#endif
--
--/*
-- * Called from the timer interrupt handler to charge one tick to the current
-- * process.  user_tick is 1 if the tick is user time, 0 for system.
-- */
--void update_process_times(int user_tick)
--{
--	struct task_struct *p = current;
--	int cpu = smp_processor_id();
--
--	/* Note: this timer irq context must be accounted for as well. */
--	account_process_tick(p, user_tick);
--	run_local_timers();
--	if (rcu_pending(cpu))
--		rcu_check_callbacks(cpu, user_tick);
--	scheduler_tick();
--	run_posix_cpu_timers(p);
--}
--
--/*
-- * Nr of active tasks - counted in fixed-point numbers
-- */
--static unsigned long count_active_tasks(void)
--{
--	return nr_active() * FIXED_1;
--}
--
--/*
-- * Hmm.. Changed this, as the GNU make sources (load.c) seems to
-- * imply that avenrun[] is the standard name for this kind of thing.
-- * Nothing else seems to be standardized: the fractional size etc
-- * all seem to differ on different machines.
-- *
-- * Requires xtime_lock to access.
-- */
--unsigned long avenrun[3];
--
--EXPORT_SYMBOL(avenrun);
--
--/*
-- * calc_load - given tick count, update the avenrun load estimates.
-- * This is called while holding a write_lock on xtime_lock.
-- */
--static inline void calc_load(unsigned long ticks)
--{
--	unsigned long active_tasks; /* fixed-point */
--	static int count = LOAD_FREQ;
--
--	count -= ticks;
--	if (unlikely(count < 0)) {
--		active_tasks = count_active_tasks();
--		do {
--			CALC_LOAD(avenrun[0], EXP_1, active_tasks);
--			CALC_LOAD(avenrun[1], EXP_5, active_tasks);
--			CALC_LOAD(avenrun[2], EXP_15, active_tasks);
--			count += LOAD_FREQ;
--		} while (count < 0);
--	}
--}
--
--/*
-- * This function runs timers and the timer-tq in bottom half context.
-- */
--static void run_timer_softirq(struct softirq_action *h)
--{
--	tvec_base_t *base = __get_cpu_var(tvec_bases);
--
--	hrtimer_run_queues();
--
--	if (time_after_eq(jiffies, base->timer_jiffies))
--		__run_timers(base);
--}
--
--/*
-- * Called by the local, per-CPU timer interrupt on SMP.
-- */
--void run_local_timers(void)
--{
--	raise_softirq(TIMER_SOFTIRQ);
--	softlockup_tick();
--}
--
--/*
-- * Called by the timer interrupt. xtime_lock must already be taken
-- * by the timer IRQ!
-- */
--static inline void update_times(unsigned long ticks)
--{
--	update_wall_time();
--	calc_load(ticks);
--}
--
--/*
-- * The 64-bit jiffies value is not atomic - you MUST NOT read it
-- * without sampling the sequence number in xtime_lock.
-- * jiffies is defined in the linker script...
-- */
--
--void do_timer(unsigned long ticks)
--{
--	jiffies_64 += ticks;
--	update_times(ticks);
--}
--
--#ifdef __ARCH_WANT_SYS_ALARM
--
--/*
-- * For backwards compatibility?  This can be done in libc so Alpha
-- * and all newer ports shouldn't need it.
-- */
--SYSCALL_DEFINE1(alarm, unsigned int, seconds)
--{
--	return alarm_setitimer(seconds);
--}
--
--#endif
--
--#ifndef __alpha__
--
--/*
-- * The Alpha uses getxpid, getxuid, and getxgid instead.  Maybe this
-- * should be moved into arch/i386 instead?
-- */
--
--/**
-- * sys_getpid - return the thread group id of the current process
-- *
-- * Note, despite the name, this returns the tgid not the pid.  The tgid and
-- * the pid are identical unless CLONE_THREAD was specified on clone() in
-- * which case the tgid is the same in all threads of the same group.
-- *
-- * This is SMP safe as current->tgid does not change.
-- */
--SYSCALL_DEFINE0(getpid)
--{
--	return task_tgid_vnr(current);
--}
--
--/*
-- * Accessing ->real_parent is not SMP-safe, it could
-- * change from under us. However, we can use a stale
-- * value of ->real_parent under rcu_read_lock(), see
-- * release_task()->call_rcu(delayed_put_task_struct).
-- */
--asmlinkage long sys_getppid(void)
--{
--	int pid;
--
--	rcu_read_lock();
--	pid = task_tgid_nr_ns(current->real_parent, current->nsproxy->pid_ns);
--	rcu_read_unlock();
--
--	return pid;
--}
--
--asmlinkage long sys_getuid(void)
--{
--	/* Only we change this so SMP safe */
--	return current->uid;
--}
--
--asmlinkage long sys_geteuid(void)
--{
--	/* Only we change this so SMP safe */
--	return current->euid;
--}
--
--asmlinkage long sys_getgid(void)
--{
--	/* Only we change this so SMP safe */
--	return current->gid;
--}
--
--asmlinkage long sys_getegid(void)
--{
--	/* Only we change this so SMP safe */
--	return  current->egid;
--}
--
--#endif
--
--static void process_timeout(unsigned long __data)
--{
--	wake_up_process((struct task_struct *)__data);
--}
--
--/**
-- * schedule_timeout - sleep until timeout
-- * @timeout: timeout value in jiffies
-- *
-- * Make the current task sleep until @timeout jiffies have
-- * elapsed. The routine will return immediately unless
-- * the current task state has been set (see set_current_state()).
-- *
-- * You can set the task state as follows -
-- *
-- * %TASK_UNINTERRUPTIBLE - at least @timeout jiffies are guaranteed to
-- * pass before the routine returns. The routine will return 0
-- *
-- * %TASK_INTERRUPTIBLE - the routine may return early if a signal is
-- * delivered to the current task. In this case the remaining time
-- * in jiffies will be returned, or 0 if the timer expired in time
-- *
-- * The current task state is guaranteed to be TASK_RUNNING when this
-- * routine returns.
-- *
-- * Specifying a @timeout value of %MAX_SCHEDULE_TIMEOUT will schedule
-- * the CPU away without a bound on the timeout. In this case the return
-- * value will be %MAX_SCHEDULE_TIMEOUT.
-- *
-- * In all cases the return value is guaranteed to be non-negative.
-- */
--fastcall signed long __sched schedule_timeout(signed long timeout)
--{
--	struct timer_list timer;
--	unsigned long expire;
--
--	switch (timeout)
--	{
--	case MAX_SCHEDULE_TIMEOUT:
--		/*
--		 * These two special cases are useful to be comfortable
--		 * in the caller. Nothing more. We could take
--		 * MAX_SCHEDULE_TIMEOUT from one of the negative value
--		 * but I' d like to return a valid offset (>=0) to allow
--		 * the caller to do everything it want with the retval.
--		 */
--		schedule();
--		goto out;
--	default:
--		/*
--		 * Another bit of PARANOID. Note that the retval will be
--		 * 0 since no piece of kernel is supposed to do a check
--		 * for a negative retval of schedule_timeout() (since it
--		 * should never happens anyway). You just have the printk()
--		 * that will tell you if something is gone wrong and where.
--		 */
--		if (timeout < 0) {
--			printk(KERN_ERR "schedule_timeout: wrong timeout "
--				"value %lx\n", timeout);
--			dump_stack();
--			current->state = TASK_RUNNING;
--			goto out;
--		}
--	}
--
--	expire = timeout + jiffies;
--
--	setup_timer(&timer, process_timeout, (unsigned long)current);
--	__mod_timer(&timer, expire);
--	schedule();
--	del_singleshot_timer_sync(&timer);
--
--	timeout = expire - jiffies;
--
-- out:
--	return timeout < 0 ? 0 : timeout;
--}
--EXPORT_SYMBOL(schedule_timeout);
--
--/*
-- * We can use __set_current_state() here because schedule_timeout() calls
-- * schedule() unconditionally.
-- */
--signed long __sched schedule_timeout_interruptible(signed long timeout)
--{
--	__set_current_state(TASK_INTERRUPTIBLE);
--	return schedule_timeout(timeout);
--}
--EXPORT_SYMBOL(schedule_timeout_interruptible);
--
--signed long __sched schedule_timeout_uninterruptible(signed long timeout)
--{
--	__set_current_state(TASK_UNINTERRUPTIBLE);
--	return schedule_timeout(timeout);
--}
--EXPORT_SYMBOL(schedule_timeout_uninterruptible);
--
--/* Thread ID - the internal kernel "pid" */
--SYSCALL_DEFINE0(gettid)
--{
--	return task_pid_vnr(current);
--}
--
--/**
-- * do_sysinfo - fill in sysinfo struct
-- * @info: pointer to buffer to fill
-- */
--int do_sysinfo(struct sysinfo *info)
--{
--	unsigned long mem_total, sav_total;
--	unsigned int mem_unit, bitcount;
--	unsigned long seq;
--
--	memset(info, 0, sizeof(struct sysinfo));
--
--	do {
--		struct timespec tp;
--		seq = read_seqbegin(&xtime_lock);
--
--		/*
--		 * This is annoying.  The below is the same thing
--		 * posix_get_clock_monotonic() does, but it wants to
--		 * take the lock which we want to cover the loads stuff
--		 * too.
--		 */
--
--		getnstimeofday(&tp);
--		tp.tv_sec += wall_to_monotonic.tv_sec;
--		tp.tv_nsec += wall_to_monotonic.tv_nsec;
--		monotonic_to_bootbased(&tp);
--		if (tp.tv_nsec - NSEC_PER_SEC >= 0) {
--			tp.tv_nsec = tp.tv_nsec - NSEC_PER_SEC;
--			tp.tv_sec++;
--		}
--		info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
--
--		info->loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
--		info->loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT);
--		info->loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT);
--
--		info->procs = nr_threads;
--	} while (read_seqretry(&xtime_lock, seq));
--
--	si_meminfo(info);
--	si_swapinfo(info);
--
--	/*
--	 * If the sum of all the available memory (i.e. ram + swap)
--	 * is less than can be stored in a 32 bit unsigned long then
--	 * we can be binary compatible with 2.2.x kernels.  If not,
--	 * well, in that case 2.2.x was broken anyways...
--	 *
--	 *  -Erik Andersen <andersee at debian.org>
--	 */
--
--	mem_total = info->totalram + info->totalswap;
--	if (mem_total < info->totalram || mem_total < info->totalswap)
--		goto out;
--	bitcount = 0;
--	mem_unit = info->mem_unit;
--	while (mem_unit > 1) {
--		bitcount++;
--		mem_unit >>= 1;
--		sav_total = mem_total;
--		mem_total <<= 1;
--		if (mem_total < sav_total)
--			goto out;
--	}
--
--	/*
--	 * If mem_total did not overflow, multiply all memory values by
--	 * info->mem_unit and set it to 1.  This leaves things compatible
--	 * with 2.2.x, and also retains compatibility with earlier 2.4.x
--	 * kernels...
--	 */
--
--	info->mem_unit = 1;
--	info->totalram <<= bitcount;
--	info->freeram <<= bitcount;
--	info->sharedram <<= bitcount;
--	info->bufferram <<= bitcount;
--	info->totalswap <<= bitcount;
--	info->freeswap <<= bitcount;
--	info->totalhigh <<= bitcount;
--	info->freehigh <<= bitcount;
--
--out:
--	return 0;
--}
--
--asmlinkage long sys_sysinfo(struct sysinfo __user *info)
--{
--	struct sysinfo val;
--
--	do_sysinfo(&val);
--
--	if (copy_to_user(info, &val, sizeof(struct sysinfo)))
--		return -EFAULT;
--
--	return 0;
--}
--
--/*
-- * lockdep: we want to track each per-CPU base as a separate lock-class,
-- * but timer-bases are kmalloc()-ed, so we need to attach separate
-- * keys to them:
-- */
--static struct lock_class_key base_lock_keys[NR_CPUS];
--
--static int __cpuinit init_timers_cpu(int cpu)
--{
--	int j;
--	tvec_base_t *base;
--	static char __cpuinitdata tvec_base_done[NR_CPUS];
--
--	if (!tvec_base_done[cpu]) {
--		static char boot_done;
--
--		if (boot_done) {
--			/*
--			 * The APs use this path later in boot
--			 */
--			base = kmalloc_node(sizeof(*base),
--						GFP_KERNEL | __GFP_ZERO,
--						cpu_to_node(cpu));
--			if (!base)
--				return -ENOMEM;
--
--			/* Make sure that tvec_base is 2 byte aligned */
--			if (tbase_get_deferrable(base)) {
--				WARN_ON(1);
--				kfree(base);
--				return -ENOMEM;
--			}
--			per_cpu(tvec_bases, cpu) = base;
--		} else {
--			/*
--			 * This is for the boot CPU - we use compile-time
--			 * static initialisation because per-cpu memory isn't
--			 * ready yet and because the memory allocators are not
--			 * initialised either.
--			 */
--			boot_done = 1;
--			base = &boot_tvec_bases;
--		}
--		tvec_base_done[cpu] = 1;
--	} else {
--		base = per_cpu(tvec_bases, cpu);
--	}
--
--	spin_lock_init(&base->lock);
--	lockdep_set_class(&base->lock, base_lock_keys + cpu);
--
--	for (j = 0; j < TVN_SIZE; j++) {
--		INIT_LIST_HEAD(base->tv5.vec + j);
--		INIT_LIST_HEAD(base->tv4.vec + j);
--		INIT_LIST_HEAD(base->tv3.vec + j);
--		INIT_LIST_HEAD(base->tv2.vec + j);
--	}
--	for (j = 0; j < TVR_SIZE; j++)
--		INIT_LIST_HEAD(base->tv1.vec + j);
--
--	base->timer_jiffies = jiffies;
--	return 0;
--}
--
--#ifdef CONFIG_HOTPLUG_CPU
--static void migrate_timer_list(tvec_base_t *new_base, struct list_head *head)
--{
--	struct timer_list *timer;
--
--	while (!list_empty(head)) {
--		timer = list_first_entry(head, struct timer_list, entry);
--		detach_timer(timer, 0);
--		timer_set_base(timer, new_base);
--		internal_add_timer(new_base, timer);
--	}
--}
--
--static void __cpuinit migrate_timers(int cpu)
--{
--	tvec_base_t *old_base;
--	tvec_base_t *new_base;
--	int i;
--
--	BUG_ON(cpu_online(cpu));
--	old_base = per_cpu(tvec_bases, cpu);
--	new_base = get_cpu_var(tvec_bases);
--
--	local_irq_disable();
--	double_spin_lock(&new_base->lock, &old_base->lock,
--			 smp_processor_id() < cpu);
--
--	BUG_ON(old_base->running_timer);
--
--	for (i = 0; i < TVR_SIZE; i++)
--		migrate_timer_list(new_base, old_base->tv1.vec + i);
--	for (i = 0; i < TVN_SIZE; i++) {
--		migrate_timer_list(new_base, old_base->tv2.vec + i);
--		migrate_timer_list(new_base, old_base->tv3.vec + i);
--		migrate_timer_list(new_base, old_base->tv4.vec + i);
--		migrate_timer_list(new_base, old_base->tv5.vec + i);
--	}
--
--	double_spin_unlock(&new_base->lock, &old_base->lock,
--			   smp_processor_id() < cpu);
--	local_irq_enable();
--	put_cpu_var(tvec_bases);
--}
--#endif /* CONFIG_HOTPLUG_CPU */
--
--static int __cpuinit timer_cpu_notify(struct notifier_block *self,
--				unsigned long action, void *hcpu)
--{
--	long cpu = (long)hcpu;
--	switch(action) {
--	case CPU_UP_PREPARE:
--	case CPU_UP_PREPARE_FROZEN:
--		if (init_timers_cpu(cpu) < 0)
--			return NOTIFY_BAD;
--		break;
--#ifdef CONFIG_HOTPLUG_CPU
--	case CPU_DEAD:
--	case CPU_DEAD_FROZEN:
--		migrate_timers(cpu);
--		break;
--#endif
--	default:
--		break;
--	}
--	return NOTIFY_OK;
--}
--
--static struct notifier_block __cpuinitdata timers_nb = {
--	.notifier_call	= timer_cpu_notify,
--};
--
--
--void __init init_timers(void)
--{
--	int err = timer_cpu_notify(&timers_nb, (unsigned long)CPU_UP_PREPARE,
--				(void *)(long)smp_processor_id());
--
--	init_timer_stats();
--
--	BUG_ON(err == NOTIFY_BAD);
--	register_cpu_notifier(&timers_nb);
--	open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);
--}
--
--/**
-- * msleep - sleep safely even with waitqueue interruptions
-- * @msecs: Time in milliseconds to sleep for
-- */
--void msleep(unsigned int msecs)
--{
--	unsigned long timeout = msecs_to_jiffies(msecs) + 1;
--
--	while (timeout)
--		timeout = schedule_timeout_uninterruptible(timeout);
--}
--
--EXPORT_SYMBOL(msleep);
--
--/**
-- * msleep_interruptible - sleep waiting for signals
-- * @msecs: Time in milliseconds to sleep for
-- */
--unsigned long msleep_interruptible(unsigned int msecs)
--{
--	unsigned long timeout = msecs_to_jiffies(msecs) + 1;
--
--	while (timeout && !signal_pending(current))
--		timeout = schedule_timeout_interruptible(timeout);
--	return jiffies_to_msecs(timeout);
--}
--
--EXPORT_SYMBOL(msleep_interruptible);

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/acct.c linux-source-2.6.24/kernel/acct.c
---- linux-source-2.6.24.orig/kernel/acct.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/acct.c	2009-01-21 00:58:10.000000000 -0700
-@@ -249,7 +249,7 @@ static int acct_on(char *name)
+diff -urpN linux-source-2.6.18.orig/kernel/acct.c linux-source-2.6.18/kernel/acct.c
+--- linux-source-2.6.18.orig/kernel/acct.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/acct.c	2009-01-25 21:05:51.000000000 -0700
+@@ -248,7 +248,7 @@ static int acct_on(char *name)
   * should be written. If the filename is NULL, accounting will be
   * shutdown.
   */
@@ -24,30 +24,30 @@
  {
  	int error;
  
-diff -urpN linux-source-2.6.24.orig/kernel/capability.c linux-source-2.6.24/kernel/capability.c
---- linux-source-2.6.24.orig/kernel/capability.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/capability.c	2009-01-21 00:58:10.000000000 -0700
-@@ -36,7 +36,7 @@ static DEFINE_SPINLOCK(task_capability_l
+diff -urpN linux-source-2.6.18.orig/kernel/capability.c linux-source-2.6.18/kernel/capability.c
+--- linux-source-2.6.18.orig/kernel/capability.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/capability.c	2009-01-25 21:05:51.000000000 -0700
+@@ -41,7 +41,7 @@ static DEFINE_SPINLOCK(task_capability_l
   *
   * Returns 0 on success and < 0 on error.
   */
 -asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
 +SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
  {
- 	int ret = 0;
- 	pid_t pid;
-@@ -165,7 +165,7 @@ static inline int cap_set_all(kernel_cap
+      int ret = 0;
+      pid_t pid;
+@@ -168,7 +168,7 @@ static inline int cap_set_all(kernel_cap
   *
   * Returns 0 on success and < 0 on error.
   */
 -asmlinkage long sys_capset(cap_user_header_t header, const cap_user_data_t data)
 +SYSCALL_DEFINE2(capset, cap_user_header_t, header, const cap_user_data_t, data)
  {
- 	kernel_cap_t inheritable, permitted, effective;
- 	__u32 version;
-diff -urpN linux-source-2.6.24.orig/kernel/exec_domain.c linux-source-2.6.24/kernel/exec_domain.c
---- linux-source-2.6.24.orig/kernel/exec_domain.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/exec_domain.c	2009-01-21 00:58:10.000000000 -0700
+      kernel_cap_t inheritable, permitted, effective;
+      __u32 version;
+diff -urpN linux-source-2.6.18.orig/kernel/exec_domain.c linux-source-2.6.18/kernel/exec_domain.c
+--- linux-source-2.6.18.orig/kernel/exec_domain.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/exec_domain.c	2009-01-25 21:05:51.000000000 -0700
 @@ -189,8 +189,7 @@ get_exec_domain_list(char *page)
  	return (len);
  }
@@ -58,10 +58,10 @@
  {
  	u_long old = current->personality;
  
-diff -urpN linux-source-2.6.24.orig/kernel/itimer.c linux-source-2.6.24/kernel/itimer.c
---- linux-source-2.6.24.orig/kernel/itimer.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/itimer.c	2009-01-21 00:58:10.000000000 -0700
-@@ -109,7 +109,7 @@ int do_getitimer(int which, struct itime
+diff -urpN linux-source-2.6.18.orig/kernel/itimer.c linux-source-2.6.18/kernel/itimer.c
+--- linux-source-2.6.18.orig/kernel/itimer.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/itimer.c	2009-01-25 21:05:51.000000000 -0700
+@@ -110,7 +110,7 @@ int do_getitimer(int which, struct itime
  	return 0;
  }
  
@@ -70,10 +70,10 @@
  {
  	int error = -EFAULT;
  	struct itimerval get_buffer;
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 00:58:10.000000000 -0700
-@@ -2418,8 +2418,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/kernel/signal.c linux-source-2.6.18/kernel/signal.c
+--- linux-source-2.6.18.orig/kernel/signal.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/kernel/signal.c	2009-01-25 21:05:51.000000000 -0700
+@@ -2398,8 +2398,7 @@ out:
  
  #ifdef __ARCH_WANT_SYS_SIGPENDING
  
@@ -83,7 +83,7 @@
  {
  	return do_sigpending(set, sizeof(*set));
  }
-@@ -2430,8 +2429,8 @@ sys_sigpending(old_sigset_t __user *set)
+@@ -2410,8 +2409,8 @@ sys_sigpending(old_sigset_t __user *set)
  /* Some platforms have their own version with special arguments others
     support only sys_rt_sigprocmask.  */
  
@@ -94,19 +94,19 @@
  {
  	int error;
  	old_sigset_t old_set, new_set;
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 00:57:05.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 00:58:10.000000000 -0700
-@@ -912,7 +912,7 @@ SYSCALL_DEFINE1(times, struct tms __user
-  * Auch. Had to add the 'did_exec' flag to conform completely to POSIX.
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 21:06:17.000000000 -0700
+@@ -1247,7 +1247,7 @@ SYSCALL_DEFINE1(times, struct tms __user
   * LBT 04.03.94
   */
+ 
 -asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
 +SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid)
  {
  	struct task_struct *p;
  	struct task_struct *group_leader = current->group_leader;
-@@ -1045,7 +1045,7 @@ SYSCALL_DEFINE1(getsid, pid_t, pid)
+@@ -1373,7 +1373,7 @@ SYSCALL_DEFINE1(getsid, pid_t, pid)
  	}
  }
  
@@ -115,7 +115,7 @@
  {
  	struct task_struct *group_leader = current->group_leader;
  	pid_t session;
-@@ -1290,7 +1290,7 @@ out:
+@@ -1616,7 +1616,7 @@ out:
   *	without another task interfering.
   */
   

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/itimer.c linux-source-2.6.24/kernel/itimer.c
---- linux-source-2.6.24.orig/kernel/itimer.c	2009-01-21 00:58:10.000000000 -0700
-+++ linux-source-2.6.24/kernel/itimer.c	2009-01-21 00:58:47.000000000 -0700
-@@ -273,9 +273,8 @@ unsigned int alarm_setitimer(unsigned in
+diff -urpN linux-source-2.6.18.orig/kernel/itimer.c linux-source-2.6.18/kernel/itimer.c
+--- linux-source-2.6.18.orig/kernel/itimer.c	2009-01-25 20:36:32.000000000 -0700
++++ linux-source-2.6.18/kernel/itimer.c	2009-01-25 20:37:34.000000000 -0700
+@@ -329,9 +329,8 @@ unsigned int alarm_setitimer(unsigned in
  	return it_old.it_value.tv_sec;
  }
  
@@ -27,10 +27,10 @@
  {
  	struct itimerval set_buffer, get_buffer;
  	int error;
-diff -urpN linux-source-2.6.24.orig/kernel/posix-timers.c linux-source-2.6.24/kernel/posix-timers.c
---- linux-source-2.6.24.orig/kernel/posix-timers.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/kernel/posix-timers.c	2009-01-21 00:58:47.000000000 -0700
-@@ -459,10 +459,9 @@ static void release_posix_timer(struct k
+diff -urpN linux-source-2.6.18.orig/kernel/posix-timers.c linux-source-2.6.18/kernel/posix-timers.c
+--- linux-source-2.6.18.orig/kernel/posix-timers.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/posix-timers.c	2009-01-25 20:37:34.000000000 -0700
+@@ -429,10 +429,9 @@ static void release_posix_timer(struct k
  
  /* Create a POSIX.1b interval timer. */
  
@@ -44,7 +44,7 @@
  {
  	int error = 0;
  	struct k_itimer *new_timer = NULL;
-@@ -678,8 +677,8 @@ common_timer_get(struct k_itimer *timr, 
+@@ -647,8 +646,8 @@ common_timer_get(struct k_itimer *timr, 
  }
  
  /* Get the time remaining on a POSIX.1b interval timer. */
@@ -55,7 +55,7 @@
  {
  	struct k_itimer *timr;
  	struct itimerspec cur_setting;
-@@ -708,8 +707,7 @@ sys_timer_gettime(timer_t timer_id, stru
+@@ -677,8 +676,7 @@ sys_timer_gettime(timer_t timer_id, stru
   * the call back to do_schedule_next_timer().  So all we need to do is
   * to pick up the frozen overrun.
   */
@@ -65,7 +65,7 @@
  {
  	struct k_itimer *timr;
  	int overrun;
-@@ -779,10 +777,9 @@ common_timer_set(struct k_itimer *timr, 
+@@ -746,10 +744,9 @@ common_timer_set(struct k_itimer *timr, 
  }
  
  /* Set a POSIX.1b interval timer */
@@ -79,7 +79,7 @@
  {
  	struct k_itimer *timr;
  	struct itimerspec new_spec, old_spec;
-@@ -835,8 +832,7 @@ static inline int timer_delete_hook(stru
+@@ -802,8 +799,7 @@ static inline int timer_delete_hook(stru
  }
  
  /* Delete a POSIX.1b interval timer. */
@@ -88,8 +88,8 @@
 +SYSCALL_DEFINE1(timer_delete, timer_t, timer_id)
  {
  	struct k_itimer *timer;
- 	unsigned long flags;
-@@ -928,8 +924,8 @@ int do_posix_clock_nonanosleep(const clo
+ 	long flags;
+@@ -895,8 +891,8 @@ int do_posix_clock_nonanosleep(const clo
  }
  EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep);
  
@@ -100,7 +100,7 @@
  {
  	struct timespec new_tp;
  
-@@ -941,8 +937,8 @@ asmlinkage long sys_clock_settime(const 
+@@ -908,8 +904,8 @@ asmlinkage long sys_clock_settime(const 
  	return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
  }
  
@@ -111,7 +111,7 @@
  {
  	struct timespec kernel_tp;
  	int error;
-@@ -958,8 +954,8 @@ sys_clock_gettime(const clockid_t which_
+@@ -925,8 +921,8 @@ sys_clock_gettime(const clockid_t which_
  
  }
  
@@ -122,8 +122,8 @@
  {
  	struct timespec rtn_tp;
  	int error;
-@@ -988,10 +984,9 @@ static int common_nsleep(const clockid_t
- 				 which_clock);
+@@ -954,10 +950,9 @@ static int common_nsleep(const clockid_t
+ 				 HRTIMER_ABS : HRTIMER_REL, which_clock);
  }
  
 -asmlinkage long

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/sched.c linux-source-2.6.24/kernel/sched.c
---- linux-source-2.6.24.orig/kernel/sched.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/kernel/sched.c	2009-01-21 00:59:21.000000000 -0700
-@@ -4178,7 +4178,7 @@ int can_nice(const struct task_struct *p
+diff -urpN linux-source-2.6.18.orig/kernel/sched.c linux-source-2.6.18/kernel/sched.c
+--- linux-source-2.6.18.orig/kernel/sched.c	2008-12-25 14:04:12.000000000 -0700
++++ linux-source-2.6.18/kernel/sched.c	2009-01-25 20:38:31.000000000 -0700
+@@ -3973,7 +3973,7 @@ int can_nice(const struct task_struct *p
   * sys_setpriority is a more generic, but much slower function that
   * does similar things.
   */
@@ -24,18 +24,18 @@
  {
  	long nice, retval;
  
-@@ -4442,8 +4442,8 @@ do_sched_setscheduler(pid_t pid, int pol
+@@ -4211,8 +4211,8 @@ do_sched_setscheduler(pid_t pid, int pol
   * @policy: new policy.
   * @param: structure containing the new RT priority.
   */
--asmlinkage long
--sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
+-asmlinkage long sys_sched_setscheduler(pid_t pid, int policy,
+-				       struct sched_param __user *param)
 +SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy,
 +		struct sched_param __user *, param)
  {
  	/* negative values for policy are not valid */
  	if (policy < 0)
-@@ -4457,7 +4457,7 @@ sys_sched_setscheduler(pid_t pid, int po
+@@ -4226,7 +4226,7 @@ asmlinkage long sys_sched_setscheduler(p
   * @pid: the pid in question.
   * @param: structure containing the new RT priority.
   */
@@ -44,7 +44,7 @@
  {
  	return do_sched_setscheduler(pid, -1, param);
  }
-@@ -4466,7 +4466,7 @@ asmlinkage long sys_sched_setparam(pid_t
+@@ -4235,7 +4235,7 @@ asmlinkage long sys_sched_setparam(pid_t
   * sys_sched_getscheduler - get the policy (scheduling class) of a thread
   * @pid: the pid in question.
   */
@@ -52,8 +52,8 @@
 +SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
  {
  	struct task_struct *p;
- 	int retval;
-@@ -4491,7 +4491,7 @@ asmlinkage long sys_sched_getscheduler(p
+ 	int retval = -EINVAL;
+@@ -4262,7 +4262,7 @@ out_nounlock:
   * @pid: the pid in question.
   * @param: structure containing the RT priority.
   */
@@ -62,7 +62,7 @@
  {
  	struct sched_param lp;
  	struct task_struct *p;
-@@ -4598,8 +4598,8 @@ static int get_user_cpu_mask(unsigned lo
+@@ -4357,8 +4357,8 @@ static int get_user_cpu_mask(unsigned lo
   * @len: length in bytes of the bitmask pointed to by user_mask_ptr
   * @user_mask_ptr: user-space pointer to the new cpu mask
   */
@@ -73,7 +73,7 @@
  {
  	cpumask_t new_mask;
  	int retval;
-@@ -4661,8 +4661,8 @@ out_unlock:
+@@ -4419,8 +4419,8 @@ out_unlock:
   * @len: length in bytes of the bitmask pointed to by user_mask_ptr
   * @user_mask_ptr: user-space pointer to hold the current cpu mask
   */
@@ -84,16 +84,16 @@
  {
  	int ret;
  	cpumask_t mask;
-@@ -4686,7 +4686,7 @@ asmlinkage long sys_sched_getaffinity(pi
-  * This function yields the current CPU to other tasks. If there are no
-  * other threads running on this CPU then this function will return.
+@@ -4445,7 +4445,7 @@ asmlinkage long sys_sched_getaffinity(pi
+  * to the expired array. If there are no other threads running on this
+  * CPU then this function will return.
   */
 -asmlinkage long sys_sched_yield(void)
 +SYSCALL_DEFINE0(sched_yield)
  {
  	struct rq *rq = this_rq_lock();
- 
-@@ -4831,7 +4831,7 @@ long __sched io_schedule_timeout(long ti
+ 	struct prio_array *array = current->array, *target = rq->expired;
+@@ -4625,7 +4625,7 @@ long __sched io_schedule_timeout(long ti
   * this syscall returns the maximum rt_priority that can be used
   * by a given scheduling class.
   */
@@ -102,7 +102,7 @@
  {
  	int ret = -EINVAL;
  
-@@ -4856,7 +4856,7 @@ asmlinkage long sys_sched_get_priority_m
+@@ -4649,7 +4649,7 @@ asmlinkage long sys_sched_get_priority_m
   * this syscall returns the minimum rt_priority that can be used
   * by a given scheduling class.
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/exit.c linux-source-2.6.24/kernel/exit.c
---- linux-source-2.6.24.orig/kernel/exit.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/kernel/exit.c	2009-01-21 01:00:45.000000000 -0700
-@@ -1065,7 +1065,7 @@ NORET_TYPE void complete_and_exit(struct
+diff -urpN linux-source-2.6.18.orig/kernel/exit.c linux-source-2.6.18/kernel/exit.c
+--- linux-source-2.6.18.orig/kernel/exit.c	2009-01-25 19:39:05.000000000 -0700
++++ linux-source-2.6.18/kernel/exit.c	2009-01-25 20:39:03.000000000 -0700
+@@ -977,7 +977,7 @@ NORET_TYPE void complete_and_exit(struct
  
  EXPORT_SYMBOL(complete_and_exit);
  
@@ -24,7 +24,7 @@
  {
  	do_exit((error_code&0xff)<<8);
  }
-@@ -1104,7 +1104,7 @@ do_group_exit(int exit_code)
+@@ -1016,7 +1016,7 @@ do_group_exit(int exit_code)
   * wait4()-ing process will get the correct exit code - even if this
   * thread is not the thread group leader.
   */
@@ -33,7 +33,7 @@
  {
  	do_group_exit((error_code & 0xff) << 8);
  	/* NOTREACHED */
-@@ -1728,8 +1728,8 @@ asmlinkage long sys_waitid(int which, pi
+@@ -1625,8 +1625,8 @@ asmlinkage long sys_waitid(int which, pi
  	return ret;
  }
  
@@ -44,10 +44,10 @@
  {
  	long ret;
  
-diff -urpN linux-source-2.6.24.orig/kernel/kexec.c linux-source-2.6.24/kernel/kexec.c
---- linux-source-2.6.24.orig/kernel/kexec.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/kexec.c	2009-01-21 00:59:55.000000000 -0700
-@@ -922,9 +922,8 @@ struct kimage *kexec_crash_image;
+diff -urpN linux-source-2.6.18.orig/kernel/kexec.c linux-source-2.6.18/kernel/kexec.c
+--- linux-source-2.6.18.orig/kernel/kexec.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/kexec.c	2009-01-25 20:39:03.000000000 -0700
+@@ -911,9 +911,8 @@ struct kimage *kexec_crash_image;
   */
  static int kexec_lock;
  
@@ -59,10 +59,10 @@
  {
  	struct kimage **dest_image, *image;
  	int locked;
-diff -urpN linux-source-2.6.24.orig/kernel/sched.c linux-source-2.6.24/kernel/sched.c
---- linux-source-2.6.24.orig/kernel/sched.c	2009-01-21 00:59:21.000000000 -0700
-+++ linux-source-2.6.24/kernel/sched.c	2009-01-21 00:59:55.000000000 -0700
-@@ -4881,8 +4881,8 @@ SYSCALL_DEFINE1(sched_get_priority_min, 
+diff -urpN linux-source-2.6.18.orig/kernel/sched.c linux-source-2.6.18/kernel/sched.c
+--- linux-source-2.6.18.orig/kernel/sched.c	2009-01-25 20:38:31.000000000 -0700
++++ linux-source-2.6.18/kernel/sched.c	2009-01-25 20:39:03.000000000 -0700
+@@ -4673,8 +4673,8 @@ SYSCALL_DEFINE1(sched_get_priority_min, 
   * this syscall writes the default timeslice value of a given process
   * into the user-space timespec buffer. A value of '0' means infinity.
   */
@@ -72,11 +72,11 @@
 +		struct timespec __user *, interval)
  {
  	struct task_struct *p;
- 	unsigned int time_slice;
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2009-01-21 00:58:10.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 00:59:55.000000000 -0700
-@@ -1947,7 +1947,7 @@ EXPORT_SYMBOL(unblock_all_signals);
+ 	int retval = -EINVAL;
+diff -urpN linux-source-2.6.18.orig/kernel/signal.c linux-source-2.6.18/kernel/signal.c
+--- linux-source-2.6.18.orig/kernel/signal.c	2009-01-25 20:36:32.000000000 -0700
++++ linux-source-2.6.18/kernel/signal.c	2009-01-25 20:39:03.000000000 -0700
+@@ -1919,7 +1919,7 @@ EXPORT_SYMBOL(unblock_all_signals);
   * System call entry points.
   */
  
@@ -85,10 +85,10 @@
  {
  	struct restart_block *restart = &current_thread_info()->restart_block;
  	return restart->fn(restart);
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 00:58:10.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 00:59:55.000000000 -0700
-@@ -131,7 +131,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 20:36:54.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 20:39:03.000000000 -0700
+@@ -459,7 +459,7 @@ out:
  	return error;
  }
  
@@ -97,7 +97,7 @@
  {
  	struct task_struct *g, *p;
  	struct user_struct *user;
-@@ -195,7 +195,7 @@ out:
+@@ -519,7 +519,7 @@ out:
   * has been offset by 20 (ie it returns 40..1 instead of -20..19)
   * to stay compatible.
   */
@@ -106,7 +106,7 @@
  {
  	struct task_struct *g, *p;
  	struct user_struct *user;
-@@ -361,7 +361,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
+@@ -678,7 +678,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
   *
   * reboot doesn't sync: do that yourself before calling this.
   */
@@ -116,10 +116,10 @@
  {
  	char buffer[256];
  
-diff -urpN linux-source-2.6.24.orig/net/socket.c linux-source-2.6.24/net/socket.c
---- linux-source-2.6.24.orig/net/socket.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/net/socket.c	2009-01-21 00:59:55.000000000 -0700
-@@ -1755,7 +1755,7 @@ out_put:
+diff -urpN linux-source-2.6.18.orig/net/socket.c linux-source-2.6.18/net/socket.c
+--- linux-source-2.6.18.orig/net/socket.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/net/socket.c	2009-01-25 20:39:03.000000000 -0700
+@@ -1729,7 +1729,7 @@ out_put:
   *	Shutdown a socket.
   */
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/kernel/exit.c linux-source-2.6.24/kernel/exit.c
---- linux-source-2.6.24.orig/kernel/exit.c	2009-01-21 01:00:45.000000000 -0700
-+++ linux-source-2.6.24/kernel/exit.c	2009-01-21 01:02:02.000000000 -0700
-@@ -1693,9 +1693,8 @@ end:
+diff -urpN linux-source-2.6.18.orig/kernel/exit.c linux-source-2.6.18/kernel/exit.c
+--- linux-source-2.6.18.orig/kernel/exit.c	2009-01-25 20:39:03.000000000 -0700
++++ linux-source-2.6.18/kernel/exit.c	2009-01-25 20:39:25.000000000 -0700
+@@ -1590,9 +1590,8 @@ end:
  	return retval;
  }
  
@@ -27,7 +27,7 @@
  {
  	long ret;
  
-@@ -1749,7 +1748,7 @@ SYSCALL_DEFINE4(wait4, pid_t, pid, int _
+@@ -1646,7 +1645,7 @@ SYSCALL_DEFINE4(wait4, pid_t, pid, int _
   * sys_waitpid() remains for compatibility. waitpid() should be
   * implemented by calling sys_wait4() from libc.a.
   */
@@ -36,11 +36,11 @@
  {
  	return sys_wait4(pid, stat_addr, options, NULL);
  }
-diff -urpN linux-source-2.6.24.orig/kernel/fork.c linux-source-2.6.24/kernel/fork.c
---- linux-source-2.6.24.orig/kernel/fork.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/fork.c	2009-01-21 01:01:27.000000000 -0700
-@@ -946,7 +946,7 @@ static void copy_flags(unsigned long clo
- 	clear_freeze_flag(p);
+diff -urpN linux-source-2.6.18.orig/kernel/fork.c linux-source-2.6.18/kernel/fork.c
+--- linux-source-2.6.18.orig/kernel/fork.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/fork.c	2009-01-25 20:39:25.000000000 -0700
+@@ -913,7 +913,7 @@ static inline void copy_flags(unsigned l
+ 	p->flags = new_flags;
  }
  
 -asmlinkage long sys_set_tid_address(int __user *tidptr)
@@ -48,10 +48,10 @@
  {
  	current->clear_child_tid = tidptr;
  
-diff -urpN linux-source-2.6.24.orig/kernel/futex.c linux-source-2.6.24/kernel/futex.c
---- linux-source-2.6.24.orig/kernel/futex.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/kernel/futex.c	2009-01-21 01:01:27.000000000 -0700
-@@ -2092,9 +2092,9 @@ long do_futex(u32 __user *uaddr, int op,
+diff -urpN linux-source-2.6.18.orig/kernel/futex.c linux-source-2.6.18/kernel/futex.c
+--- linux-source-2.6.18.orig/kernel/futex.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/futex.c	2009-01-25 20:39:25.000000000 -0700
+@@ -1806,9 +1806,9 @@ long do_futex(u32 __user *uaddr, int op,
  }
  
  
@@ -62,12 +62,12 @@
 +		struct timespec __user *, utime, u32 __user *, uaddr2,
 +		u32, val3)
  {
- 	struct timespec ts;
- 	ktime_t t, *tp = NULL;
-diff -urpN linux-source-2.6.24.orig/kernel/module.c linux-source-2.6.24/kernel/module.c
---- linux-source-2.6.24.orig/kernel/module.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/module.c	2009-01-21 01:01:27.000000000 -0700
-@@ -655,8 +655,8 @@ static void wait_for_zero_refcount(struc
+ 	struct timespec t;
+ 	unsigned long timeout = MAX_SCHEDULE_TIMEOUT;
+diff -urpN linux-source-2.6.18.orig/kernel/module.c linux-source-2.6.18/kernel/module.c
+--- linux-source-2.6.18.orig/kernel/module.c	2008-12-25 14:04:12.000000000 -0700
++++ linux-source-2.6.18/kernel/module.c	2009-01-25 20:39:25.000000000 -0700
+@@ -643,8 +643,8 @@ static void wait_for_zero_refcount(struc
  	mutex_lock(&module_mutex);
  }
  
@@ -78,7 +78,7 @@
  {
  	struct module *mod;
  	char name[MODULE_NAME_LEN];
-@@ -2088,10 +2088,8 @@ static int __link_module(void *_mod)
+@@ -1879,10 +1879,8 @@ static int __link_module(void *_mod)
  }
  
  /* This is where the real work happens */
@@ -91,10 +91,10 @@
  {
  	struct module *mod;
  	int ret = 0;
-diff -urpN linux-source-2.6.24.orig/kernel/sched.c linux-source-2.6.24/kernel/sched.c
---- linux-source-2.6.24.orig/kernel/sched.c	2009-01-21 00:59:55.000000000 -0700
-+++ linux-source-2.6.24/kernel/sched.c	2009-01-21 01:01:27.000000000 -0700
-@@ -4881,7 +4881,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, 
+diff -urpN linux-source-2.6.18.orig/kernel/sched.c linux-source-2.6.18/kernel/sched.c
+--- linux-source-2.6.18.orig/kernel/sched.c	2009-01-25 20:39:03.000000000 -0700
++++ linux-source-2.6.18/kernel/sched.c	2009-01-25 20:39:25.000000000 -0700
+@@ -4673,7 +4673,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, 
   * this syscall writes the default timeslice value of a given process
   * into the user-space timespec buffer. A value of '0' means infinity.
   */
@@ -103,10 +103,10 @@
  		struct timespec __user *, interval)
  {
  	struct task_struct *p;
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2009-01-21 00:59:55.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 01:01:27.000000000 -0700
-@@ -2000,8 +2000,8 @@ int sigprocmask(int how, sigset_t *set, 
+diff -urpN linux-source-2.6.18.orig/kernel/signal.c linux-source-2.6.18/kernel/signal.c
+--- linux-source-2.6.18.orig/kernel/signal.c	2009-01-25 20:39:03.000000000 -0700
++++ linux-source-2.6.18/kernel/signal.c	2009-01-25 20:39:25.000000000 -0700
+@@ -1972,8 +1972,8 @@ int sigprocmask(int how, sigset_t *set, 
  	return error;
  }
  
@@ -117,7 +117,7 @@
  {
  	int error = -EINVAL;
  	sigset_t old_set, new_set;
-@@ -2060,8 +2060,7 @@ out:
+@@ -2032,8 +2032,7 @@ out:
  	return error;
  }	
  
@@ -127,7 +127,7 @@
  {
  	return do_sigpending(set, sigsetsize);
  }
-@@ -2132,11 +2131,9 @@ int copy_siginfo_to_user(siginfo_t __use
+@@ -2102,11 +2101,9 @@ int copy_siginfo_to_user(siginfo_t __use
  
  #endif
  
@@ -142,7 +142,7 @@
  {
  	int ret, sig;
  	sigset_t these;
-@@ -2209,8 +2206,7 @@ sys_rt_sigtimedwait(const sigset_t __use
+@@ -2179,8 +2176,7 @@ sys_rt_sigtimedwait(const sigset_t __use
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/sync.c linux-source-2.6.24/fs/sync.c
---- linux-source-2.6.24.orig/fs/sync.c	2009-01-21 00:50:44.000000000 -0700
-+++ linux-source-2.6.24/fs/sync.c	2009-01-21 01:02:55.000000000 -0700
-@@ -36,7 +36,7 @@ static void do_sync(unsigned long wait)
+diff -urpN a/fs/buffer.c b/fs/buffer.c
+--- a/fs/buffer.c	2009-02-04 22:43:12.000000000 -0700
++++ b/fs/buffer.c	2009-02-04 22:38:46.000000000 -0700
+@@ -278,7 +278,7 @@ static void do_sync(unsigned long wait)
  		laptop_sync_completion();
  }
  
@@ -24,7 +24,7 @@
  {
  	do_sync(1);
  	return 0;
-@@ -118,12 +118,12 @@ static long __do_fsync(unsigned int fd, 
+@@ -361,12 +361,12 @@ static long __do_fsync(unsigned int fd, 
  	return ret;
  }
  
@@ -39,10 +39,10 @@
  {
  	return __do_fsync(fd, 1);
  }
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2009-01-21 01:01:27.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 01:02:55.000000000 -0700
-@@ -2262,7 +2262,7 @@ static int do_tkill(int tgid, int pid, i
+diff -urpN a/kernel/signal.c b/kernel/signal.c
+--- a/kernel/signal.c	2009-02-04 22:43:14.000000000 -0700
++++ b/kernel/signal.c	2009-02-04 22:41:03.000000000 -0700
+@@ -2232,7 +2232,7 @@ static int do_tkill(int tgid, int pid, i
   *  exists but it's not belonging to the target process anymore. This
   *  method solves the problem of threads exiting and PIDs getting reused.
   */
@@ -51,7 +51,7 @@
  {
  	/* This is only valid for single tasks */
  	if (pid <= 0 || tgid <= 0)
-@@ -2274,8 +2274,7 @@ asmlinkage long sys_tgkill(int tgid, int
+@@ -2244,8 +2244,7 @@ asmlinkage long sys_tgkill(int tgid, int
  /*
   *  Send a signal to only one task, even if it's a CLONE_THREAD task.
   */
@@ -61,7 +61,7 @@
  {
  	/* This is only valid for single tasks */
  	if (pid <= 0)
-@@ -2284,8 +2283,8 @@ sys_tkill(int pid, int sig)
+@@ -2254,8 +2253,8 @@ sys_tkill(int pid, int sig)
  	return do_tkill(0, pid, sig);
  }
  
@@ -72,7 +72,7 @@
  {
  	siginfo_t info;
  
-@@ -2510,15 +2509,13 @@ out:
+@@ -2490,15 +2489,13 @@ out:
  /*
   * For backwards compatibility.  Functionality superseded by sigprocmask.
   */
@@ -90,7 +90,7 @@
  {
  	int old;
  
-@@ -2538,8 +2535,7 @@ sys_ssetmask(int newmask)
+@@ -2518,8 +2515,7 @@ sys_ssetmask(int newmask)
  /*
   * For backwards compatibility.  Functionality superseded by sigaction.
   */
@@ -100,7 +100,7 @@
  {
  	struct k_sigaction new_sa, old_sa;
  	int ret;
-@@ -2556,8 +2552,7 @@ sys_signal(int sig, __sighandler_t handl
+@@ -2536,8 +2532,7 @@ sys_signal(int sig, __sighandler_t handl
  
  #ifdef __ARCH_WANT_SYS_PAUSE
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/buffer.c linux-source-2.6.24/fs/buffer.c
---- linux-source-2.6.24.orig/fs/buffer.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/fs/buffer.c	2009-01-21 01:03:35.000000000 -0700
-@@ -3113,7 +3113,7 @@ void block_sync_page(struct page *page)
+diff -urpN linux-source-2.6.18.orig/fs/buffer.c linux-source-2.6.18/fs/buffer.c
+--- linux-source-2.6.18.orig/fs/buffer.c	2009-01-25 22:45:36.000000000 -0700
++++ linux-source-2.6.18/fs/buffer.c	2009-01-25 22:47:57.000000000 -0700
+@@ -3050,7 +3050,7 @@ void block_sync_page(struct page *page)
   * Use of bdflush() is deprecated and will be removed in a future kernel.
   * The `pdflush' kernel threads fully replace bdflush daemons and this call.
   */
@@ -24,10 +24,10 @@
  {
  	static int msg_count;
  
-diff -urpN linux-source-2.6.24.orig/fs/namespace.c linux-source-2.6.24/fs/namespace.c
---- linux-source-2.6.24.orig/fs/namespace.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/namespace.c	2009-01-21 01:03:35.000000000 -0700
-@@ -628,7 +628,7 @@ static int do_umount(struct vfsmount *mn
+diff -urpN linux-source-2.6.18.orig/fs/namespace.c linux-source-2.6.18/fs/namespace.c
+--- linux-source-2.6.18.orig/fs/namespace.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/fs/namespace.c	2009-01-25 22:47:57.000000000 -0700
+@@ -637,7 +637,7 @@ static int do_umount(struct vfsmount *mn
   * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
   */
  
@@ -36,7 +36,7 @@
  {
  	struct nameidata nd;
  	int retval;
-@@ -658,7 +658,7 @@ out:
+@@ -667,7 +667,7 @@ out:
  /*
   *	The 2.0 compatible umount. No flags.
   */
@@ -45,8 +45,8 @@
  {
  	return sys_umount(name, 0);
  }
-@@ -1547,9 +1547,8 @@ struct mnt_namespace *copy_mnt_ns(unsign
- 	return new_ns;
+@@ -1549,9 +1549,8 @@ out:
+ 	return err;
  }
  
 -asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name,
@@ -57,10 +57,10 @@
  {
  	int retval;
  	unsigned long data_page;
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 00:52:46.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:03:35.000000000 -0700
-@@ -119,7 +119,7 @@ static int vfs_statfs64(struct dentry *d
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 21:11:25.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 22:47:57.000000000 -0700
+@@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *d
  	return 0;
  }
  
@@ -69,7 +69,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -135,8 +135,7 @@ asmlinkage long sys_statfs(const char __
+@@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __
  	return error;
  }
  
@@ -79,7 +79,7 @@
  {
  	struct nameidata nd;
  	long error;
-@@ -154,8 +153,7 @@ asmlinkage long sys_statfs64(const char 
+@@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char 
  	return error;
  }
  
@@ -89,7 +89,7 @@
  {
  	struct file * file;
  	struct statfs tmp;
-@@ -282,7 +280,7 @@ out:
+@@ -283,7 +281,7 @@ out:
  	return error;
  }
  
@@ -98,7 +98,7 @@
  {
  	/* on 32-bit boxen it will cut the range 2^31--2^32-1 off */
  	return do_sys_truncate(path, (long)length);
-@@ -331,7 +329,7 @@ out:
+@@ -332,7 +330,7 @@ out:
  	return error;
  }
  
@@ -107,10 +107,10 @@
  {
  	long ret = do_sys_ftruncate(fd, length, 1);
  	/* avoid REGPARM breakage on x86: */
-diff -urpN linux-source-2.6.24.orig/fs/stat.c linux-source-2.6.24/fs/stat.c
---- linux-source-2.6.24.orig/fs/stat.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/stat.c	2009-01-21 01:03:35.000000000 -0700
-@@ -152,7 +152,7 @@ static int cp_old_stat(struct kstat *sta
+diff -urpN linux-source-2.6.18.orig/fs/stat.c linux-source-2.6.18/fs/stat.c
+--- linux-source-2.6.18.orig/fs/stat.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/stat.c	2009-01-25 22:47:57.000000000 -0700
+@@ -157,7 +157,7 @@ static int cp_old_stat(struct kstat *sta
  	return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:03:35.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:04:04.000000000 -0700
-@@ -171,7 +171,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 22:47:57.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 22:48:28.000000000 -0700
+@@ -174,7 +174,7 @@ out:
  	return error;
  }
  
@@ -24,10 +24,10 @@
  {
  	struct file * file;
  	struct statfs64 tmp;
-diff -urpN linux-source-2.6.24.orig/fs/stat.c linux-source-2.6.24/fs/stat.c
---- linux-source-2.6.24.orig/fs/stat.c	2009-01-21 01:03:35.000000000 -0700
-+++ linux-source-2.6.24/fs/stat.c	2009-01-21 01:04:04.000000000 -0700
-@@ -162,7 +162,8 @@ SYSCALL_DEFINE2(stat, char __user *, fil
+diff -urpN linux-source-2.6.18.orig/fs/stat.c linux-source-2.6.18/fs/stat.c
+--- linux-source-2.6.18.orig/fs/stat.c	2009-01-25 22:47:57.000000000 -0700
++++ linux-source-2.6.18/fs/stat.c	2009-01-25 22:48:28.000000000 -0700
+@@ -167,7 +167,8 @@ SYSCALL_DEFINE2(stat, char __user *, fil
  
  	return error;
  }
@@ -37,7 +37,7 @@
  {
  	struct kstat stat;
  	int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
-@@ -172,7 +173,8 @@ asmlinkage long sys_lstat(char __user * 
+@@ -177,7 +178,8 @@ asmlinkage long sys_lstat(char __user * 
  
  	return error;
  }
@@ -47,7 +47,7 @@
  {
  	struct kstat stat;
  	int error = vfs_fstat(fd, &stat);
-@@ -235,7 +237,7 @@ static int cp_new_stat(struct kstat *sta
+@@ -238,7 +240,7 @@ static int cp_new_stat(struct kstat *sta
  	return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
  }
  
@@ -56,7 +56,7 @@
  {
  	struct kstat stat;
  	int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
-@@ -246,7 +248,7 @@ asmlinkage long sys_newstat(char __user 
+@@ -249,7 +251,7 @@ asmlinkage long sys_newstat(char __user 
  	return error;
  }
  
@@ -65,7 +65,7 @@
  {
  	struct kstat stat;
  	int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
-@@ -280,7 +282,7 @@ out:
+@@ -283,7 +285,7 @@ out:
  }
  #endif
  
@@ -74,7 +74,7 @@
  {
  	struct kstat stat;
  	int error = vfs_fstat(fd, &stat);
-@@ -364,7 +366,7 @@ static long cp_new_stat64(struct kstat *
+@@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat *
  	return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
  }
  
@@ -83,7 +83,7 @@
  {
  	struct kstat stat;
  	int error = vfs_stat(filename, &stat);
-@@ -374,7 +376,8 @@ asmlinkage long sys_stat64(char __user *
+@@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user *
  
  	return error;
  }
@@ -93,7 +93,7 @@
  {
  	struct kstat stat;
  	int error = vfs_lstat(filename, &stat);
-@@ -384,7 +387,8 @@ asmlinkage long sys_lstat64(char __user 
+@@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user 
  
  	return error;
  }
@@ -103,10 +103,10 @@
  {
  	struct kstat stat;
  	int error = vfs_fstat(fd, &stat);
-diff -urpN linux-source-2.6.24.orig/fs/super.c linux-source-2.6.24/fs/super.c
---- linux-source-2.6.24.orig/fs/super.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/super.c	2009-01-21 01:04:04.000000000 -0700
-@@ -530,7 +530,7 @@ rescan:
+diff -urpN linux-source-2.6.18.orig/fs/super.c linux-source-2.6.18/fs/super.c
+--- linux-source-2.6.18.orig/fs/super.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/super.c	2009-01-25 22:48:28.000000000 -0700
+@@ -483,7 +483,7 @@ rescan:
  	return NULL;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/xattr.c linux-source-2.6.24/fs/xattr.c
---- linux-source-2.6.24.orig/fs/xattr.c	2009-01-21 00:11:43.000000000 -0700
-+++ linux-source-2.6.24/fs/xattr.c	2009-01-21 01:08:29.000000000 -0700
-@@ -225,9 +225,9 @@ setxattr(struct dentry *d, char __user *
+diff -urpN linux-source-2.6.18.orig/fs/xattr.c linux-source-2.6.18/fs/xattr.c
+--- linux-source-2.6.18.orig/fs/xattr.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/fs/xattr.c	2009-01-25 22:49:28.000000000 -0700
+@@ -200,9 +200,9 @@ setxattr(struct dentry *d, char __user *
  	return error;
  }
  
@@ -28,7 +28,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -240,9 +240,9 @@ sys_setxattr(char __user *path, char __u
+@@ -215,9 +215,9 @@ sys_setxattr(char __user *path, char __u
  	return error;
  }
  
@@ -41,7 +41,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -255,9 +255,8 @@ sys_lsetxattr(char __user *path, char __
+@@ -230,9 +230,8 @@ sys_lsetxattr(char __user *path, char __
  	return error;
  }
  
@@ -53,7 +53,7 @@
  {
  	struct file *f;
  	struct dentry *dentry;
-@@ -310,9 +309,8 @@ getxattr(struct dentry *d, char __user *
+@@ -285,9 +284,8 @@ getxattr(struct dentry *d, char __user *
  	return error;
  }
  
@@ -65,7 +65,7 @@
  {
  	struct nameidata nd;
  	ssize_t error;
-@@ -325,9 +323,8 @@ sys_getxattr(char __user *path, char __u
+@@ -300,9 +298,8 @@ sys_getxattr(char __user *path, char __u
  	return error;
  }
  
@@ -77,7 +77,7 @@
  {
  	struct nameidata nd;
  	ssize_t error;
-@@ -340,8 +337,8 @@ sys_lgetxattr(char __user *path, char __
+@@ -315,8 +312,8 @@ sys_lgetxattr(char __user *path, char __
  	return error;
  }
  
@@ -88,7 +88,7 @@
  {
  	struct file *f;
  	ssize_t error = -EBADF;
-@@ -385,8 +382,8 @@ listxattr(struct dentry *d, char __user 
+@@ -370,8 +367,8 @@ out:
  	return error;
  }
  
@@ -99,7 +99,7 @@
  {
  	struct nameidata nd;
  	ssize_t error;
-@@ -399,8 +396,8 @@ sys_listxattr(char __user *path, char __
+@@ -384,8 +381,8 @@ sys_listxattr(char __user *path, char __
  	return error;
  }
  
@@ -110,7 +110,7 @@
  {
  	struct nameidata nd;
  	ssize_t error;
-@@ -413,8 +410,7 @@ sys_llistxattr(char __user *path, char _
+@@ -398,8 +395,7 @@ sys_llistxattr(char __user *path, char _
  	return error;
  }
  
@@ -120,7 +120,7 @@
  {
  	struct file *f;
  	ssize_t error = -EBADF;
-@@ -446,8 +442,8 @@ removexattr(struct dentry *d, char __use
+@@ -430,8 +426,8 @@ removexattr(struct dentry *d, char __use
  	return vfs_removexattr(d, kname);
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/xattr.c linux-source-2.6.24/fs/xattr.c
---- linux-source-2.6.24.orig/fs/xattr.c	2009-01-21 01:08:29.000000000 -0700
-+++ linux-source-2.6.24/fs/xattr.c	2009-01-21 01:09:53.000000000 -0700
-@@ -456,8 +456,8 @@ SYSCALL_DEFINE2(removexattr, char __user
+diff -urpN linux-source-2.6.18.orig/fs/xattr.c linux-source-2.6.18/fs/xattr.c
+--- linux-source-2.6.18.orig/fs/xattr.c	2009-01-25 22:49:28.000000000 -0700
++++ linux-source-2.6.18/fs/xattr.c	2009-01-25 22:52:45.000000000 -0700
+@@ -440,8 +440,8 @@ SYSCALL_DEFINE2(removexattr, char __user
  	return error;
  }
  
@@ -26,7 +26,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -470,8 +470,7 @@ sys_lremovexattr(char __user *path, char
+@@ -454,8 +454,7 @@ sys_lremovexattr(char __user *path, char
  	return error;
  }
  
@@ -36,24 +36,24 @@
  {
  	struct file *f;
  	struct dentry *dentry;
-diff -urpN linux-source-2.6.24.orig/mm/fremap.c linux-source-2.6.24/mm/fremap.c
---- linux-source-2.6.24.orig/mm/fremap.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/mm/fremap.c	2009-01-21 01:09:12.000000000 -0700
-@@ -117,8 +117,8 @@ static int populate_range(struct mm_stru
-  * and the vma's default protection is used. Arbitrary protections
-  * might be implemented in the future.
+diff -urpN linux-source-2.6.18.orig/mm/fremap.c linux-source-2.6.18/mm/fremap.c
+--- linux-source-2.6.18.orig/mm/fremap.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/mm/fremap.c	2009-01-25 22:53:25.000000000 -0700
+@@ -146,8 +146,8 @@ out:
+  * protection is used. Arbitrary protections might be implemented in the
+  * future.
   */
 -asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
--	unsigned long prot, unsigned long pgoff, unsigned long flags)
+-	unsigned long __prot, unsigned long pgoff, unsigned long flags)
 +SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
-+		unsigned long, prot, unsigned long, pgoff, unsigned long, flags)
++		unsigned long, __prot, unsigned long, pgoff, unsigned long, flags)
  {
  	struct mm_struct *mm = current->mm;
  	struct address_space *mapping;
-diff -urpN linux-source-2.6.24.orig/mm/mlock.c linux-source-2.6.24/mm/mlock.c
---- linux-source-2.6.24.orig/mm/mlock.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/mlock.c	2009-01-21 01:09:12.000000000 -0700
-@@ -132,7 +132,7 @@ static int do_mlock(unsigned long start,
+diff -urpN linux-source-2.6.18.orig/mm/mlock.c linux-source-2.6.18/mm/mlock.c
+--- linux-source-2.6.18.orig/mm/mlock.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/mm/mlock.c	2009-01-25 22:52:45.000000000 -0700
+@@ -121,7 +121,7 @@ static int do_mlock(unsigned long start,
  	return error;
  }
  
@@ -62,7 +62,7 @@
  {
  	unsigned long locked;
  	unsigned long lock_limit;
-@@ -158,7 +158,7 @@ asmlinkage long sys_mlock(unsigned long 
+@@ -147,7 +147,7 @@ asmlinkage long sys_mlock(unsigned long 
  	return error;
  }
  
@@ -71,10 +71,10 @@
  {
  	int ret;
  
-diff -urpN linux-source-2.6.24.orig/mm/mmap.c linux-source-2.6.24/mm/mmap.c
---- linux-source-2.6.24.orig/mm/mmap.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/mm/mmap.c	2009-01-21 01:09:12.000000000 -0700
-@@ -233,7 +233,7 @@ static struct vm_area_struct *remove_vma
+diff -urpN linux-source-2.6.18.orig/mm/mmap.c linux-source-2.6.18/mm/mmap.c
+--- linux-source-2.6.18.orig/mm/mmap.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/mm/mmap.c	2009-01-25 22:52:45.000000000 -0700
+@@ -226,7 +226,7 @@ static struct vm_area_struct *remove_vma
  	return next;
  }
  
@@ -83,7 +83,7 @@
  {
  	unsigned long rlim, retval;
  	unsigned long newbrk, oldbrk;
-@@ -1894,7 +1894,7 @@ int do_munmap(struct mm_struct *mm, unsi
+@@ -1839,7 +1839,7 @@ int do_munmap(struct mm_struct *mm, unsi
  
  EXPORT_SYMBOL(do_munmap);
  
@@ -92,10 +92,10 @@
  {
  	int ret;
  	struct mm_struct *mm = current->mm;
-diff -urpN linux-source-2.6.24.orig/mm/mprotect.c linux-source-2.6.24/mm/mprotect.c
---- linux-source-2.6.24.orig/mm/mprotect.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/mprotect.c	2009-01-21 01:09:12.000000000 -0700
-@@ -211,8 +211,8 @@ fail:
+diff -urpN linux-source-2.6.18.orig/mm/mprotect.c linux-source-2.6.18/mm/mprotect.c
+--- linux-source-2.6.18.orig/mm/mprotect.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/mm/mprotect.c	2009-01-25 22:52:45.000000000 -0700
+@@ -203,8 +203,8 @@ fail:
  	return error;
  }
  
@@ -106,10 +106,10 @@
  {
  	unsigned long vm_flags, nstart, end, tmp, reqprot;
  	struct vm_area_struct *vma, *prev;
-diff -urpN linux-source-2.6.24.orig/mm/mremap.c linux-source-2.6.24/mm/mremap.c
---- linux-source-2.6.24.orig/mm/mremap.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/mm/mremap.c	2009-01-21 01:09:12.000000000 -0700
-@@ -412,9 +412,9 @@ out_nc:
+diff -urpN linux-source-2.6.18.orig/mm/mremap.c linux-source-2.6.18/mm/mremap.c
+--- linux-source-2.6.18.orig/mm/mremap.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/mm/mremap.c	2009-01-25 22:52:45.000000000 -0700
+@@ -402,9 +402,9 @@ out_nc:
  	return ret;
  }
  
@@ -122,22 +122,22 @@
  {
  	unsigned long ret;
  
-diff -urpN linux-source-2.6.24.orig/mm/msync.c linux-source-2.6.24/mm/msync.c
---- linux-source-2.6.24.orig/mm/msync.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/msync.c	2009-01-21 01:09:12.000000000 -0700
-@@ -28,7 +28,7 @@
-  * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to
-  * applications.
-  */
+diff -urpN linux-source-2.6.18.orig/mm/msync.c linux-source-2.6.18/mm/msync.c
+--- linux-source-2.6.18.orig/mm/msync.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/mm/msync.c	2009-01-25 22:53:54.000000000 -0700
+@@ -143,7 +143,7 @@ static int msync_interval(struct vm_area
+ 	return 0;
+ }
+ 
 -asmlinkage long sys_msync(unsigned long start, size_t len, int flags)
 +SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags)
  {
  	unsigned long end;
  	struct mm_struct *mm = current->mm;
-diff -urpN linux-source-2.6.24.orig/mm/nommu.c linux-source-2.6.24/mm/nommu.c
---- linux-source-2.6.24.orig/mm/nommu.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/mm/nommu.c	2009-01-21 01:09:12.000000000 -0700
-@@ -295,7 +295,7 @@ EXPORT_SYMBOL(vm_insert_page);
+diff -urpN linux-source-2.6.18.orig/mm/nommu.c linux-source-2.6.18/mm/nommu.c
+--- linux-source-2.6.18.orig/mm/nommu.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/mm/nommu.c	2009-01-25 22:52:45.000000000 -0700
+@@ -243,7 +243,7 @@ void vunmap(void *addr)
   *  to a regular file.  in this case, the unmapping will need
   *  to invoke file system routines that need the global lock.
   */
@@ -146,25 +146,12 @@
  {
  	struct mm_struct *mm = current->mm;
  
-@@ -1099,7 +1099,7 @@ int do_munmap(struct mm_struct *mm, unsi
+@@ -973,7 +973,7 @@ void exit_mmap(struct mm_struct * mm)
+ 	}
  }
- EXPORT_SYMBOL(do_munmap);
  
 -asmlinkage long sys_munmap(unsigned long addr, size_t len)
 +SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
  {
  	int ret;
  	struct mm_struct *mm = current->mm;
-@@ -1190,9 +1190,9 @@ unsigned long do_mremap(unsigned long ad
- }
- EXPORT_SYMBOL(do_mremap);
- 
--asmlinkage unsigned long sys_mremap(unsigned long addr,
--	unsigned long old_len, unsigned long new_len,
--	unsigned long flags, unsigned long new_addr)
-+SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
-+		unsigned long, new_len, unsigned long, flags,
-+		unsigned long, new_addr)
- {
- 	unsigned long ret;
- 

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/namei.c linux-source-2.6.24/fs/namei.c
---- linux-source-2.6.24.orig/fs/namei.c	2008-10-10 00:11:30.000000000 -0600
-+++ linux-source-2.6.24/fs/namei.c	2009-01-21 01:10:50.000000000 -0700
-@@ -2007,7 +2007,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/fs/namei.c linux-source-2.6.18/fs/namei.c
+--- linux-source-2.6.18.orig/fs/namei.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/fs/namei.c	2009-01-25 23:02:41.000000000 -0700
+@@ -1890,7 +1890,7 @@ out:
  	return error;
  }
  
@@ -24,7 +24,7 @@
  {
  	return sys_mknodat(AT_FDCWD, filename, mode, dev);
  }
-@@ -2273,7 +2273,7 @@ asmlinkage long sys_unlinkat(int dfd, co
+@@ -2154,7 +2154,7 @@ asmlinkage long sys_unlinkat(int dfd, co
  	return do_unlinkat(dfd, pathname);
  }
  
@@ -33,7 +33,7 @@
  {
  	return do_unlinkat(AT_FDCWD, pathname);
  }
-@@ -2336,7 +2336,7 @@ out_putname:
+@@ -2214,7 +2214,7 @@ out:
  	return error;
  }
  
@@ -42,7 +42,7 @@
  {
  	return sys_symlinkat(oldname, AT_FDCWD, newname);
  }
-@@ -2433,7 +2433,7 @@ exit:
+@@ -2310,7 +2310,7 @@ exit:
  	return error;
  }
  
@@ -51,10 +51,10 @@
  {
  	return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
  }
-diff -urpN linux-source-2.6.24.orig/fs/namespace.c linux-source-2.6.24/fs/namespace.c
---- linux-source-2.6.24.orig/fs/namespace.c	2009-01-21 01:03:35.000000000 -0700
-+++ linux-source-2.6.24/fs/namespace.c	2009-01-21 01:10:50.000000000 -0700
-@@ -1682,8 +1682,8 @@ static void chroot_fs_refs(struct nameid
+diff -urpN linux-source-2.6.18.orig/fs/namespace.c linux-source-2.6.18/fs/namespace.c
+--- linux-source-2.6.18.orig/fs/namespace.c	2009-01-25 22:47:57.000000000 -0700
++++ linux-source-2.6.18/fs/namespace.c	2009-01-25 23:02:41.000000000 -0700
+@@ -1684,8 +1684,8 @@ static void chroot_fs_refs(struct nameid
   *    though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
   *    first.
   */
@@ -65,10 +65,10 @@
  {
  	struct vfsmount *tmp;
  	struct nameidata new_nd, old_nd, parent_nd, root_parent, user_nd;
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:04:04.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:10:50.000000000 -0700
-@@ -547,7 +547,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 22:48:28.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 23:02:41.000000000 -0700
+@@ -607,7 +607,7 @@ out:
  	return error;
  }
  
@@ -77,10 +77,10 @@
  {
  	struct nameidata nd;
  	int error;
-diff -urpN linux-source-2.6.24.orig/mm/madvise.c linux-source-2.6.24/mm/madvise.c
---- linux-source-2.6.24.orig/mm/madvise.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/madvise.c	2009-01-21 01:10:50.000000000 -0700
-@@ -281,7 +281,7 @@ madvise_vma(struct vm_area_struct *vma, 
+diff -urpN linux-source-2.6.18.orig/mm/madvise.c linux-source-2.6.18/mm/madvise.c
+--- linux-source-2.6.18.orig/mm/madvise.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/mm/madvise.c	2009-01-25 23:02:41.000000000 -0700
+@@ -253,7 +253,7 @@ madvise_vma(struct vm_area_struct *vma, 
   *  -EBADF  - map exists, but area maps something that isn't a file.
   *  -EAGAIN - a kernel resource was temporarily unavailable.
   */
@@ -89,10 +89,10 @@
  {
  	unsigned long end, tmp;
  	struct vm_area_struct * vma, *prev;
-diff -urpN linux-source-2.6.24.orig/mm/mincore.c linux-source-2.6.24/mm/mincore.c
---- linux-source-2.6.24.orig/mm/mincore.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/mincore.c	2009-01-21 01:10:50.000000000 -0700
-@@ -177,8 +177,8 @@ none_mapped:
+diff -urpN linux-source-2.6.18.orig/mm/mincore.c linux-source-2.6.18/mm/mincore.c
+--- linux-source-2.6.18.orig/mm/mincore.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/mm/mincore.c	2009-01-25 23:02:41.000000000 -0700
+@@ -109,8 +109,8 @@ static long do_mincore(unsigned long add
   *		mapped
   *  -EAGAIN - A kernel resource was temporarily unavailable.
   */
@@ -103,10 +103,10 @@
  {
  	long retval;
  	unsigned long pages;
-diff -urpN linux-source-2.6.24.orig/mm/mlock.c linux-source-2.6.24/mm/mlock.c
---- linux-source-2.6.24.orig/mm/mlock.c	2009-01-21 01:09:12.000000000 -0700
-+++ linux-source-2.6.24/mm/mlock.c	2009-01-21 01:10:50.000000000 -0700
-@@ -195,7 +195,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/mm/mlock.c linux-source-2.6.18/mm/mlock.c
+--- linux-source-2.6.18.orig/mm/mlock.c	2009-01-25 22:52:45.000000000 -0700
++++ linux-source-2.6.18/mm/mlock.c	2009-01-25 23:02:41.000000000 -0700
+@@ -184,7 +184,7 @@ out:
  	return 0;
  }
  
@@ -115,7 +115,7 @@
  {
  	unsigned long lock_limit;
  	int ret = -EINVAL;
-@@ -221,7 +221,7 @@ out:
+@@ -210,7 +210,7 @@ out:
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/fcntl.c linux-source-2.6.24/fs/fcntl.c
---- linux-source-2.6.24.orig/fs/fcntl.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/fcntl.c	2009-01-21 01:11:17.000000000 -0700
-@@ -137,7 +137,7 @@ static int dupfd(struct file *file, unsi
+diff -urpN linux-source-2.6.18.orig/fs/fcntl.c linux-source-2.6.18/fs/fcntl.c
+--- linux-source-2.6.18.orig/fs/fcntl.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/fcntl.c	2009-01-25 23:03:21.000000000 -0700
+@@ -134,7 +134,7 @@ static int dupfd(struct file *file, unsi
  	return fd;
  }
  
@@ -24,7 +24,7 @@
  {
  	int err = -EBADF;
  	struct file * file, *tofree;
-@@ -193,7 +193,7 @@ out_fput:
+@@ -190,7 +190,7 @@ out_fput:
  	goto out;
  }
  
@@ -33,7 +33,7 @@
  {
  	int ret = -EBADF;
  	struct file * file = fget(fildes);
-@@ -387,7 +387,7 @@ static long do_fcntl(int fd, unsigned in
+@@ -351,7 +351,7 @@ static long do_fcntl(int fd, unsigned in
  	return err;
  }
  
@@ -42,7 +42,7 @@
  {	
  	struct file *filp;
  	long err = -EBADF;
-@@ -410,7 +410,8 @@ out:
+@@ -374,7 +374,8 @@ out:
  }
  
  #if BITS_PER_LONG == 32
@@ -52,10 +52,10 @@
  {	
  	struct file * filp;
  	long err;
-diff -urpN linux-source-2.6.24.orig/fs/ioctl.c linux-source-2.6.24/fs/ioctl.c
---- linux-source-2.6.24.orig/fs/ioctl.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/ioctl.c	2009-01-21 01:11:17.000000000 -0700
-@@ -154,7 +154,7 @@ int vfs_ioctl(struct file *filp, unsigne
+diff -urpN linux-source-2.6.18.orig/fs/ioctl.c linux-source-2.6.18/fs/ioctl.c
+--- linux-source-2.6.18.orig/fs/ioctl.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/ioctl.c	2009-01-25 23:03:21.000000000 -0700
+@@ -156,7 +156,7 @@ int vfs_ioctl(struct file *filp, unsigne
  	return error;
  }
  
@@ -64,10 +64,10 @@
  {
  	struct file * filp;
  	int error = -EBADF;
-diff -urpN linux-source-2.6.24.orig/fs/namei.c linux-source-2.6.24/fs/namei.c
---- linux-source-2.6.24.orig/fs/namei.c	2009-01-21 01:10:50.000000000 -0700
-+++ linux-source-2.6.24/fs/namei.c	2009-01-21 01:11:17.000000000 -0700
-@@ -2681,7 +2681,7 @@ asmlinkage long sys_renameat(int olddfd,
+diff -urpN linux-source-2.6.18.orig/fs/namei.c linux-source-2.6.18/fs/namei.c
+--- linux-source-2.6.18.orig/fs/namei.c	2009-01-25 23:02:41.000000000 -0700
++++ linux-source-2.6.18/fs/namei.c	2009-01-25 23:03:21.000000000 -0700
+@@ -2558,7 +2558,7 @@ asmlinkage long sys_renameat(int olddfd,
  	return error;
  }
  
@@ -76,10 +76,10 @@
  {
  	return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
  }
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:10:50.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:11:17.000000000 -0700
-@@ -573,7 +573,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 23:02:41.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 23:03:21.000000000 -0700
+@@ -633,7 +633,7 @@ out:
  	return error;
  }
  
@@ -88,7 +88,7 @@
  {
  	struct inode * inode;
  	struct dentry * dentry;
-@@ -645,7 +645,7 @@ out:
+@@ -705,7 +705,7 @@ out:
  	return error;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/aio.c linux-source-2.6.24/fs/aio.c
---- linux-source-2.6.24.orig/fs/aio.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/fs/aio.c	2009-01-21 01:11:46.000000000 -0700
-@@ -1247,7 +1247,7 @@ static void io_destroy(struct kioctx *io
+diff -urpN a/fs/aio.c b/fs/aio.c
+--- a/fs/aio.c	2006-09-19 21:42:06.000000000 -0600
++++ b/fs/aio.c	2009-01-28 00:10:14.000000000 -0700
+@@ -1251,7 +1251,7 @@ static void io_destroy(struct kioctx *io
   *	pointer is passed for ctxp.  Will fail with -ENOSYS if not
   *	implemented.
   */
@@ -24,7 +24,7 @@
  {
  	struct kioctx *ioctx = NULL;
  	unsigned long ctx;
-@@ -1285,7 +1285,7 @@ out:
+@@ -1289,7 +1289,7 @@ out:
   *	implemented.  May fail with -EFAULT if the context pointed to
   *	is invalid.
   */
@@ -33,7 +33,7 @@
  {
  	struct kioctx *ioctx = lookup_ioctx(ctx);
  	if (likely(NULL != ioctx)) {
-@@ -1628,8 +1628,8 @@ out_put_req:
+@@ -1559,8 +1559,8 @@ out_put_req:
   *	are available to queue any iocbs.  Will return 0 if nr is 0.  Will
   *	fail with -ENOSYS if not implemented.
   */
@@ -44,7 +44,7 @@
  {
  	struct kioctx *ctx;
  	long ret = 0;
-@@ -1703,8 +1703,8 @@ static struct kiocb *lookup_kiocb(struct
+@@ -1634,8 +1634,8 @@ static struct kiocb *lookup_kiocb(struct
   *	invalid.  May fail with -EAGAIN if the iocb specified was not
   *	cancelled.  Will fail with -ENOSYS if not implemented.
   */
@@ -55,7 +55,7 @@
  {
  	int (*cancel)(struct kiocb *iocb, struct io_event *res);
  	struct kioctx *ctx;
-@@ -1765,11 +1765,11 @@ asmlinkage long sys_io_cancel(aio_contex
+@@ -1696,11 +1696,11 @@ asmlinkage long sys_io_cancel(aio_contex
   *	will be updated if not NULL and the operation blocks.  Will fail
   *	with -ENOSYS if not implemented.
   */
@@ -72,10 +72,10 @@
  {
  	struct kioctx *ioctx = lookup_ioctx(ctx_id);
  	long ret = -EINVAL;
-diff -urpN linux-source-2.6.24.orig/fs/locks.c linux-source-2.6.24/fs/locks.c
---- linux-source-2.6.24.orig/fs/locks.c	2008-10-10 00:11:29.000000000 -0600
-+++ linux-source-2.6.24/fs/locks.c	2009-01-21 01:11:46.000000000 -0700
-@@ -1571,7 +1571,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
+diff -urpN a/fs/locks.c b/fs/locks.c
+--- a/fs/locks.c	2009-01-28 00:09:25.000000000 -0700
++++ b/fs/locks.c	2009-01-28 00:10:14.000000000 -0700
+@@ -1566,7 +1566,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
   *	%LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other
   *	processes read and write access respectively.
   */
@@ -84,10 +84,10 @@
  {
  	struct file *filp;
  	struct file_lock *lock;
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:11:17.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:11:46.000000000 -0700
-@@ -1102,7 +1102,7 @@ asmlinkage long sys_openat(int dfd, cons
+diff -urpN a/fs/open.c b/fs/open.c
+--- a/fs/open.c	2009-01-28 00:09:29.000000000 -0700
++++ b/fs/open.c	2009-01-28 00:10:14.000000000 -0700
+@@ -1146,7 +1146,7 @@ asmlinkage long sys_openat(int dfd, cons
   * For backward compatibility?  Maybe this should be moved
   * into arch/i386 instead?
   */
@@ -96,10 +96,10 @@
  {
  	return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
  }
-diff -urpN linux-source-2.6.24.orig/fs/read_write.c linux-source-2.6.24/fs/read_write.c
---- linux-source-2.6.24.orig/fs/read_write.c	2009-01-21 00:50:44.000000000 -0700
-+++ linux-source-2.6.24/fs/read_write.c	2009-01-21 01:11:46.000000000 -0700
-@@ -824,7 +824,7 @@ out:
+diff -urpN a/fs/read_write.c b/fs/read_write.c
+--- a/fs/read_write.c	2009-01-28 00:09:28.000000000 -0700
++++ b/fs/read_write.c	2009-01-28 00:10:14.000000000 -0700
+@@ -747,7 +747,7 @@ out:
  	return retval;
  }
  
@@ -108,7 +108,7 @@
  {
  	loff_t pos;
  	off_t off;
-@@ -843,7 +843,7 @@ asmlinkage long sys_sendfile(int out_fd,
+@@ -766,7 +766,7 @@ asmlinkage long sys_sendfile(int out_fd,
  	return do_sendfile(out_fd, in_fd, NULL, count, 0);
  }
  
@@ -117,10 +117,10 @@
  {
  	loff_t pos;
  	ssize_t ret;
-diff -urpN linux-source-2.6.24.orig/fs/stat.c linux-source-2.6.24/fs/stat.c
---- linux-source-2.6.24.orig/fs/stat.c	2009-01-21 01:04:04.000000000 -0700
-+++ linux-source-2.6.24/fs/stat.c	2009-01-21 01:11:46.000000000 -0700
-@@ -319,8 +319,8 @@ asmlinkage long sys_readlinkat(int dfd, 
+diff -urpN a/fs/stat.c b/fs/stat.c
+--- a/fs/stat.c	2009-01-28 00:09:29.000000000 -0700
++++ b/fs/stat.c	2009-01-28 00:10:14.000000000 -0700
+@@ -322,8 +322,8 @@ asmlinkage long sys_readlinkat(int dfd, 
  	return error;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:11:46.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:12:18.000000000 -0700
-@@ -490,7 +490,7 @@ out:
+diff -urpN a/fs/open.c b/fs/open.c
+--- a/fs/open.c	2009-01-28 00:13:00.000000000 -0700
++++ b/fs/open.c	2009-01-28 00:13:16.000000000 -0700
+@@ -551,7 +551,7 @@ asmlinkage long sys_faccessat(int dfd, c
  	return res;
  }
  
@@ -24,7 +24,7 @@
  {
  	return sys_faccessat(AT_FDCWD, filename, mode);
  }
-@@ -686,7 +686,7 @@ out:
+@@ -745,7 +745,7 @@ out:
  	return error;
  }
  
@@ -33,7 +33,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -720,7 +720,7 @@ out:
+@@ -778,7 +778,7 @@ out:
  	return error;
  }
  
@@ -42,7 +42,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -734,8 +734,7 @@ out:
+@@ -791,8 +791,7 @@ asmlinkage long sys_lchown(const char __
  	return error;
  }
  
@@ -52,7 +52,7 @@
  {
  	struct file * file;
  	int error = -EBADF;
-@@ -1068,7 +1067,7 @@ long do_sys_open(int dfd, const char __u
+@@ -1112,7 +1111,7 @@ long do_sys_open(int dfd, const char __u
  	return fd;
  }
  
@@ -61,7 +61,7 @@
  {
  	long ret;
  
-@@ -1138,7 +1137,7 @@ EXPORT_SYMBOL(filp_close);
+@@ -1182,7 +1181,7 @@ EXPORT_SYMBOL(filp_close);
   * releasing the fd. This ensures that one clone task can't release
   * an fd while another clone is opening it.
   */
@@ -70,7 +70,7 @@
  {
  	struct file * filp;
  	struct files_struct *files = current->files;
-@@ -1171,14 +1170,13 @@ out_unlock:
+@@ -1205,14 +1204,13 @@ out_unlock:
  	spin_unlock(&files->file_lock);
  	return -EBADF;
  }
@@ -85,11 +85,11 @@
 +SYSCALL_DEFINE0(vhangup)
  {
  	if (capable(CAP_SYS_TTY_CONFIG)) {
- 		/* XXX: this needs locking */
-diff -urpN linux-source-2.6.24.orig/kernel/uid16.c linux-source-2.6.24/kernel/uid16.c
---- linux-source-2.6.24.orig/kernel/uid16.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/uid16.c	2009-01-21 01:12:18.000000000 -0700
-@@ -17,7 +17,7 @@
+ 		tty_vhangup(current->signal->tty);
+diff -urpN a/kernel/uid16.c b/kernel/uid16.c
+--- a/kernel/uid16.c	2006-09-19 21:42:06.000000000 -0600
++++ b/kernel/uid16.c	2009-01-28 00:13:16.000000000 -0700
+@@ -18,7 +18,7 @@
  
  #include <asm/uaccess.h>
  
@@ -98,7 +98,7 @@
  {
  	long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
  	/* avoid REGPARM breakage on x86: */
-@@ -25,7 +25,7 @@ asmlinkage long sys_chown16(const char _
+@@ -26,7 +26,7 @@ asmlinkage long sys_chown16(const char _
  	return ret;
  }
  
@@ -107,7 +107,7 @@
  {
  	long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
  	/* avoid REGPARM breakage on x86: */
-@@ -33,7 +33,7 @@ asmlinkage long sys_lchown16(const char 
+@@ -34,7 +34,7 @@ asmlinkage long sys_lchown16(const char 
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0028-System-call-wrappers-part-18.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0028-System-call-wrappers-part-18.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0028-System-call-wrappers-part-18.patch	Mon Feb  9 15:47:53 2009
@@ -9,13 +9,13 @@
 
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
----
- kernel/uid16.c |   21 +++++++++++----------
- 1 file changed, 11 insertions(+), 10 deletions(-)
 
---- a/kernel/uid16.c
-+++ b/kernel/uid16.c
-@@ -41,7 +41,7 @@ SYSCALL_DEFINE3(fchown16, unsigned int, 
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
+
+diff -urpN a/kernel/uid16.c b/kernel/uid16.c
+--- a/kernel/uid16.c	2009-01-28 00:14:59.000000000 -0700
++++ b/kernel/uid16.c	2009-01-28 00:15:20.000000000 -0700
+@@ -42,7 +42,7 @@ SYSCALL_DEFINE3(fchown16, unsigned int, 
  	return ret;
  }
  
@@ -24,7 +24,7 @@
  {
  	long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
  	/* avoid REGPARM breakage on x86: */
-@@ -49,7 +49,7 @@ asmlinkage long sys_setregid16(old_gid_t
+@@ -50,7 +50,7 @@ asmlinkage long sys_setregid16(old_gid_t
  	return ret;
  }
  
@@ -33,7 +33,7 @@
  {
  	long ret = sys_setgid(low2highgid(gid));
  	/* avoid REGPARM breakage on x86: */
-@@ -57,7 +57,7 @@ asmlinkage long sys_setgid16(old_gid_t g
+@@ -58,7 +58,7 @@ asmlinkage long sys_setgid16(old_gid_t g
  	return ret;
  }
  
@@ -42,7 +42,7 @@
  {
  	long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
  	/* avoid REGPARM breakage on x86: */
-@@ -65,7 +65,7 @@ asmlinkage long sys_setreuid16(old_uid_t
+@@ -66,7 +66,7 @@ asmlinkage long sys_setreuid16(old_uid_t
  	return ret;
  }
  
@@ -51,7 +51,7 @@
  {
  	long ret = sys_setuid(low2highuid(uid));
  	/* avoid REGPARM breakage on x86: */
-@@ -73,7 +73,7 @@ asmlinkage long sys_setuid16(old_uid_t u
+@@ -74,7 +74,7 @@ asmlinkage long sys_setuid16(old_uid_t u
  	return ret;
  }
  
@@ -60,7 +60,7 @@
  {
  	long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
  				 low2highuid(suid));
-@@ -82,7 +82,7 @@ asmlinkage long sys_setresuid16(old_uid_
+@@ -83,7 +83,7 @@ asmlinkage long sys_setresuid16(old_uid_
  	return ret;
  }
  
@@ -69,7 +69,7 @@
  {
  	int retval;
  
-@@ -93,7 +93,7 @@ asmlinkage long sys_getresuid16(old_uid_
+@@ -94,7 +94,7 @@ asmlinkage long sys_getresuid16(old_uid_
  	return retval;
  }
  
@@ -78,7 +78,7 @@
  {
  	long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
  				 low2highgid(sgid));
-@@ -102,7 +102,8 @@ asmlinkage long sys_setresgid16(old_gid_
+@@ -103,7 +103,8 @@ asmlinkage long sys_setresgid16(old_gid_
  	return ret;
  }
  
@@ -88,7 +88,7 @@
  {
  	int retval;
  
-@@ -113,7 +114,7 @@ asmlinkage long sys_getresgid16(old_gid_
+@@ -114,7 +115,7 @@ asmlinkage long sys_getresgid16(old_gid_
  	return retval;
  }
  
@@ -97,7 +97,7 @@
  {
  	long ret = sys_setfsuid(low2highuid(uid));
  	/* avoid REGPARM breakage on x86: */
-@@ -121,7 +122,7 @@ asmlinkage long sys_setfsuid16(old_uid_t
+@@ -122,7 +123,7 @@ asmlinkage long sys_setfsuid16(old_uid_t
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,34 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/read_write.c linux-source-2.6.24/fs/read_write.c
---- linux-source-2.6.24.orig/fs/read_write.c	2009-01-21 01:11:46.000000000 -0700
-+++ linux-source-2.6.24/fs/read_write.c	2009-01-21 01:13:03.000000000 -0700
-@@ -128,7 +128,7 @@ loff_t vfs_llseek(struct file *file, lof
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 23:04:17.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 23:06:21.000000000 -0700
+@@ -381,7 +381,7 @@ SYSCALL_ALIAS(sys_ftruncate64, SyS_ftrun
+  * must be owner or have write permission.
+  * Else, update from *times, must be owner or super user.
+  */
+-asmlinkage long sys_utime(char __user * filename, struct utimbuf __user * times)
++SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
+ {
+ 	int error;
+ 	struct nameidata nd;
+@@ -493,7 +493,8 @@ asmlinkage long sys_futimesat(int dfd, c
+ 	return do_utimes(dfd, filename, utimes ? times : NULL);
+ }
+ 
+-asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
++SYSCALL_DEFINE2(utimes, char __user *, filename,
++		struct timeval __user *, utimes)
+ {
+ 	return sys_futimesat(AT_FDCWD, filename, utimes);
+ }
+diff -urpN linux-source-2.6.18.orig/fs/read_write.c linux-source-2.6.18/fs/read_write.c
+--- linux-source-2.6.18.orig/fs/read_write.c	2009-01-25 23:03:51.000000000 -0700
++++ linux-source-2.6.18/fs/read_write.c	2009-01-25 23:05:44.000000000 -0700
+@@ -125,7 +125,7 @@ loff_t vfs_llseek(struct file *file, lof
  }
  EXPORT_SYMBOL(vfs_llseek);
  
@@ -24,7 +46,7 @@
  {
  	off_t retval;
  	struct file * file;
-@@ -152,9 +152,9 @@ bad:
+@@ -149,9 +149,9 @@ bad:
  }
  
  #ifdef __ARCH_WANT_SYS_LLSEEK
@@ -37,32 +59,10 @@
  {
  	int retval;
  	struct file * file;
-diff -urpN linux-source-2.6.24.orig/fs/utimes.c linux-source-2.6.24/fs/utimes.c
---- linux-source-2.6.24.orig/fs/utimes.c	2008-10-10 00:11:29.000000000 -0600
-+++ linux-source-2.6.24/fs/utimes.c	2009-01-21 01:13:03.000000000 -0700
-@@ -22,7 +22,7 @@
-  * must be owner or have write permission.
-  * Else, update from *times, must be owner or super user.
-  */
--asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
-+SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
- {
- 	struct timespec tv[2];
- 
-@@ -207,7 +207,8 @@ asmlinkage long sys_futimesat(int dfd, c
- 	return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
- }
- 
--asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
-+SYSCALL_DEFINE2(utimes, char __user *, filename,
-+		struct timeval __user *, utimes)
- {
- 	return sys_futimesat(AT_FDCWD, filename, utimes);
- }
-diff -urpN linux-source-2.6.24.orig/kernel/uid16.c linux-source-2.6.24/kernel/uid16.c
---- linux-source-2.6.24.orig/kernel/uid16.c	2009-01-21 01:12:46.000000000 -0700
-+++ linux-source-2.6.24/kernel/uid16.c	2009-01-21 01:13:03.000000000 -0700
-@@ -160,7 +160,7 @@ static int groups16_from_user(struct gro
+diff -urpN linux-source-2.6.18.orig/kernel/uid16.c linux-source-2.6.18/kernel/uid16.c
+--- linux-source-2.6.18.orig/kernel/uid16.c	2009-01-25 23:04:44.000000000 -0700
++++ linux-source-2.6.18/kernel/uid16.c	2009-01-25 23:05:47.000000000 -0700
+@@ -161,7 +161,7 @@ static int groups16_from_user(struct gro
  	return 0;
  }
  
@@ -71,7 +71,7 @@
  {
  	int i = 0;
  
-@@ -184,7 +184,7 @@ out:
+@@ -185,7 +185,7 @@ out:
  	return i;
  }
  
@@ -80,7 +80,7 @@
  {
  	struct group_info *group_info;
  	int retval;
-@@ -209,22 +209,22 @@ asmlinkage long sys_setgroups16(int gids
+@@ -210,22 +210,22 @@ asmlinkage long sys_setgroups16(int gids
  	return retval;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/dcache.c linux-source-2.6.24/fs/dcache.c
---- linux-source-2.6.24.orig/fs/dcache.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/fs/dcache.c	2009-01-21 01:13:36.000000000 -0700
-@@ -1913,7 +1913,7 @@ char *dynamic_dname(struct dentry *dentr
+diff -urpN linux-source-2.6.18.orig/fs/dcache.c linux-source-2.6.18/fs/dcache.c
+--- linux-source-2.6.18.orig/fs/dcache.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/dcache.c	2009-01-25 23:09:50.000000000 -0700
+@@ -1508,7 +1508,7 @@ char * d_path(struct dentry *dentry, str
   *		return NULL;
   *	}
   */
@@ -24,10 +24,10 @@
  {
  	int error;
  	struct vfsmount *pwdmnt, *rootmnt;
-diff -urpN linux-source-2.6.24.orig/fs/namei.c linux-source-2.6.24/fs/namei.c
---- linux-source-2.6.24.orig/fs/namei.c	2009-01-21 01:11:17.000000000 -0700
-+++ linux-source-2.6.24/fs/namei.c	2009-01-21 01:13:36.000000000 -0700
-@@ -2067,7 +2067,7 @@ out_err:
+diff -urpN linux-source-2.6.18.orig/fs/namei.c linux-source-2.6.18/fs/namei.c
+--- linux-source-2.6.18.orig/fs/namei.c	2009-01-25 23:03:21.000000000 -0700
++++ linux-source-2.6.18/fs/namei.c	2009-01-25 23:09:50.000000000 -0700
+@@ -1948,7 +1948,7 @@ out:
  	return error;
  }
  
@@ -36,7 +36,7 @@
  {
  	return sys_mkdirat(AT_FDCWD, pathname, mode);
  }
-@@ -2174,7 +2174,7 @@ exit:
+@@ -2055,7 +2055,7 @@ exit:
  	return error;
  }
  
@@ -45,10 +45,10 @@
  {
  	return do_rmdir(AT_FDCWD, pathname);
  }
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:12:18.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:13:36.000000000 -0700
-@@ -495,7 +495,7 @@ SYSCALL_DEFINE2(access, const char __use
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 23:06:21.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-25 23:09:50.000000000 -0700
+@@ -557,7 +557,7 @@ SYSCALL_DEFINE2(access, const char __use
  	return sys_faccessat(AT_FDCWD, filename, mode);
  }
  
@@ -57,7 +57,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -517,7 +517,7 @@ out:
+@@ -578,7 +578,7 @@ out:
  	return error;
  }
  
@@ -66,10 +66,10 @@
  {
  	struct file *file;
  	struct dentry *dentry;
-diff -urpN linux-source-2.6.24.orig/fs/quota.c linux-source-2.6.24/fs/quota.c
---- linux-source-2.6.24.orig/fs/quota.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/quota.c	2009-01-21 01:13:36.000000000 -0700
-@@ -363,7 +363,8 @@ static inline struct super_block *quotac
+diff -urpN linux-source-2.6.18.orig/fs/quota.c linux-source-2.6.18/fs/quota.c
+--- linux-source-2.6.18.orig/fs/quota.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/quota.c	2009-01-25 23:09:50.000000000 -0700
+@@ -343,7 +343,8 @@ static int do_quotactl(struct super_bloc
   * calls. Maybe we need to add the process quotas etc. in the future,
   * but we probably should use rlimits for that.
   */
@@ -79,10 +79,10 @@
  {
  	uint cmds, type;
  	struct super_block *sb = NULL;
-diff -urpN linux-source-2.6.24.orig/fs/read_write.c linux-source-2.6.24/fs/read_write.c
---- linux-source-2.6.24.orig/fs/read_write.c	2009-01-21 01:13:03.000000000 -0700
-+++ linux-source-2.6.24/fs/read_write.c	2009-01-21 01:13:36.000000000 -0700
-@@ -354,7 +354,7 @@ static inline void file_pos_write(struct
+diff -urpN linux-source-2.6.18.orig/fs/read_write.c linux-source-2.6.18/fs/read_write.c
+--- linux-source-2.6.18.orig/fs/read_write.c	2009-01-25 23:05:44.000000000 -0700
++++ linux-source-2.6.18/fs/read_write.c	2009-01-25 23:09:50.000000000 -0700
+@@ -339,7 +339,7 @@ static inline void file_pos_write(struct
  	file->f_pos = pos;
  }
  
@@ -91,9 +91,9 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -372,7 +372,8 @@ asmlinkage long sys_read(unsigned int fd
+@@ -357,7 +357,8 @@ asmlinkage long sys_read(unsigned int fd
  }
- EXPORT_UNUSED_SYMBOL_GPL(sys_read); /* to be deleted for 2.6.25 */
+ EXPORT_SYMBOL_GPL(sys_read);
  
 -asmlinkage long sys_write(unsigned int fd, const char __user * buf, size_t count)
 +SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
@@ -101,7 +101,7 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -676,8 +677,8 @@ ssize_t vfs_writev(struct file *file, co
+@@ -610,8 +611,8 @@ ssize_t vfs_writev(struct file *file, co
  
  EXPORT_SYMBOL(vfs_writev);
  
@@ -112,7 +112,7 @@
  {
  	struct file *file;
  	ssize_t ret = -EBADF;
-@@ -697,8 +698,8 @@ sys_readv(unsigned long fd, const struct
+@@ -631,8 +632,8 @@ sys_readv(unsigned long fd, const struct
  	return ret;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/readdir.c linux-source-2.6.24/fs/readdir.c
---- linux-source-2.6.24.orig/fs/readdir.c	2009-01-21 00:13:05.000000000 -0700
-+++ linux-source-2.6.24/fs/readdir.c	2009-01-21 01:14:06.000000000 -0700
-@@ -180,7 +180,8 @@ efault:
+diff -urpN linux-source-2.6.18.orig/fs/readdir.c linux-source-2.6.18/fs/readdir.c
+--- linux-source-2.6.18.orig/fs/readdir.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/fs/readdir.c	2009-01-25 23:10:13.000000000 -0700
+@@ -173,7 +173,8 @@ efault:
  	return -EFAULT;
  }
  
@@ -25,7 +25,7 @@
  {
  	struct file * file;
  	struct linux_dirent __user * lastdirent;
-@@ -264,7 +265,8 @@ efault:
+@@ -259,7 +260,8 @@ efault:
  	return -EFAULT;
  }
  
@@ -35,10 +35,10 @@
  {
  	struct file * file;
  	struct linux_dirent64 __user * lastdirent;
-diff -urpN linux-source-2.6.24.orig/net/socket.c linux-source-2.6.24/net/socket.c
---- linux-source-2.6.24.orig/net/socket.c	2009-01-21 00:59:55.000000000 -0700
-+++ linux-source-2.6.24/net/socket.c	2009-01-21 01:14:06.000000000 -0700
-@@ -1324,7 +1324,7 @@ out_fd:
+diff -urpN linux-source-2.6.18.orig/net/socket.c linux-source-2.6.18/net/socket.c
+--- linux-source-2.6.18.orig/net/socket.c	2009-01-25 21:07:13.000000000 -0700
++++ linux-source-2.6.18/net/socket.c	2009-01-25 23:12:17.000000000 -0700
+@@ -1332,7 +1332,7 @@ out:
   *	the protocol layer (having also checked the address is ok).
   */
  
@@ -47,67 +47,61 @@
  {
  	struct socket *sock;
  	char address[MAX_SOCK_ADDR];
-@@ -1386,8 +1386,8 @@ asmlinkage long sys_listen(int fd, int b
+@@ -1391,7 +1391,8 @@ asmlinkage long sys_listen(int fd, int b
   *	clean when we restucture accept also.
   */
  
--asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
--			   int __user *upeer_addrlen)
+-asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr, int __user *upeer_addrlen)
 +SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
 +		int __user *, upeer_addrlen)
  {
  	struct socket *sock, *newsock;
  	struct file *newfile;
-@@ -1476,8 +1476,8 @@ out_fd:
+@@ -1474,7 +1475,8 @@ out_fd:
   *	include the -EINPROGRESS status for such sockets.
   */
  
--asmlinkage long sys_connect(int fd, struct sockaddr __user *uservaddr,
--			    int addrlen)
+-asmlinkage long sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
 +SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
 +		int, addrlen)
  {
  	struct socket *sock;
  	char address[MAX_SOCK_ADDR];
-@@ -1508,8 +1508,8 @@ out:
+@@ -1504,7 +1506,8 @@ out:
   *	name to user space.
   */
  
--asmlinkage long sys_getsockname(int fd, struct sockaddr __user *usockaddr,
--				int __user *usockaddr_len)
+-asmlinkage long sys_getsockname(int fd, struct sockaddr __user *usockaddr, int __user *usockaddr_len)
 +SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr,
 +		int __user *, usockaddr_len)
  {
  	struct socket *sock;
  	char address[MAX_SOCK_ADDR];
-@@ -1539,8 +1539,8 @@ out:
+@@ -1534,7 +1537,8 @@ out:
   *	name to user space.
   */
  
--asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr,
--				int __user *usockaddr_len)
+-asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr, int __user *usockaddr_len)
 +SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
 +		int __user *, usockaddr_len)
  {
  	struct socket *sock;
  	char address[MAX_SOCK_ADDR];
-@@ -1691,8 +1691,8 @@ asmlinkage long sys_recv(int fd, void __
+@@ -1675,7 +1679,8 @@ asmlinkage long sys_recv(int fd, void __
   *	to pass the user mode parameter for the protocols to sort out.
   */
  
--asmlinkage long sys_setsockopt(int fd, int level, int optname,
--			       char __user *optval, int optlen)
+-asmlinkage long sys_setsockopt(int fd, int level, int optname, char __user *optval, int optlen)
 +SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname,
 +		char __user *, optval, int, optlen)
  {
  	int err, fput_needed;
  	struct socket *sock;
-@@ -1725,8 +1725,8 @@ out_put:
+@@ -1704,7 +1709,8 @@ out_put:
   *	to pass a user mode parameter for the protocols to sort out.
   */
  
--asmlinkage long sys_getsockopt(int fd, int level, int optname,
--			       char __user *optval, int __user *optlen)
+-asmlinkage long sys_getsockopt(int fd, int level, int optname, char __user *optval, int __user *optlen)
 +SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname,
 +		char __user *, optval, int __user *, optlen)
  {

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch	Mon Feb  9 15:47:53 2009
@@ -10,13 +10,13 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/net/socket.c linux-source-2.6.24/net/socket.c
---- linux-source-2.6.24.orig/net/socket.c	2009-01-21 01:14:06.000000000 -0700
-+++ linux-source-2.6.24/net/socket.c	2009-01-21 01:14:32.000000000 -0700
-@@ -1199,7 +1199,7 @@ int sock_create_kern(int family, int typ
- 	return __sock_create(&init_net, family, type, protocol, res, 1);
+diff -urpN linux-source-2.6.18.orig/net/socket.c linux-source-2.6.18/net/socket.c
+--- linux-source-2.6.18.orig/net/socket.c	2009-01-25 23:12:17.000000000 -0700
++++ linux-source-2.6.18/net/socket.c	2009-01-25 23:15:18.000000000 -0700
+@@ -1236,7 +1236,7 @@ int sock_create_kern(int family, int typ
+ 	return __sock_create(family, type, protocol, res, 1);
  }
  
 -asmlinkage long sys_socket(int family, int type, int protocol)
@@ -24,88 +24,84 @@
  {
  	int retval;
  	struct socket *sock;
-@@ -1225,8 +1225,8 @@ out_release:
+@@ -1262,7 +1262,8 @@ out_release:
   *	Create a pair of connected sockets.
   */
  
--asmlinkage long sys_socketpair(int family, int type, int protocol,
--			       int __user *usockvec)
+-asmlinkage long sys_socketpair(int family, int type, int protocol, int __user *usockvec)
 +SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
 +		int __user *, usockvec)
  {
  	struct socket *sock1, *sock2;
  	int fd1, fd2, err;
-@@ -1355,7 +1355,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
+@@ -1360,7 +1361,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
  
- int sysctl_somaxconn __read_mostly = SOMAXCONN;
+ int sysctl_somaxconn = SOMAXCONN;
  
 -asmlinkage long sys_listen(int fd, int backlog)
 +SYSCALL_DEFINE2(listen, int, fd, int, backlog)
  {
  	struct socket *sock;
  	int err, fput_needed;
-@@ -1571,9 +1571,9 @@ SYSCALL_DEFINE3(getpeername, int, fd, st
+@@ -1565,8 +1566,9 @@ SYSCALL_DEFINE3(getpeername, int, fd, st
   *	the protocol.
   */
  
--asmlinkage long sys_sendto(int fd, void __user *buff, size_t len,
--			   unsigned flags, struct sockaddr __user *addr,
--			   int addr_len)
+-asmlinkage long sys_sendto(int fd, void __user * buff, size_t len, unsigned flags,
+-			   struct sockaddr __user *addr, int addr_len)
 +SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
 +		unsigned, flags, struct sockaddr __user *, addr,
 +		int, addr_len)
  {
  	struct socket *sock;
  	char address[MAX_SOCK_ADDR];
-@@ -1621,7 +1621,8 @@ out:
-  *	Send a datagram down a socket.
+@@ -1612,7 +1614,8 @@ out_put:		
+  *	Send a datagram down a socket. 
   */
  
--asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags)
+-asmlinkage long sys_send(int fd, void __user * buff, size_t len, unsigned flags)
 +SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len,
 +		unsigned, flags)
  {
  	return sys_sendto(fd, buff, len, flags, NULL, 0);
  }
-@@ -1632,9 +1633,9 @@ asmlinkage long sys_send(int fd, void __
+@@ -1623,8 +1626,9 @@ asmlinkage long sys_send(int fd, void __
   *	sender address from kernel to user space.
   */
  
--asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size,
--			     unsigned flags, struct sockaddr __user *addr,
--			     int __user *addr_len)
+-asmlinkage long sys_recvfrom(int fd, void __user * ubuf, size_t size, unsigned flags,
+-			     struct sockaddr __user *addr, int __user *addr_len)
 +SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
 +		unsigned, flags, struct sockaddr __user *, addr,
 +		int __user *, addr_len)
  {
  	struct socket *sock;
  	struct iovec iov;
-@@ -1781,7 +1782,7 @@ SYSCALL_DEFINE2(shutdown, int, fd, int, 
+@@ -1762,7 +1766,7 @@ SYSCALL_DEFINE2(shutdown, int, fd, int, 
   *	BSD sendmsg interface
   */
  
 -asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags)
 +SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags)
  {
- 	struct compat_msghdr __user *msg_compat =
- 	    (struct compat_msghdr __user *)msg;
-@@ -1883,8 +1884,8 @@ out:
+ 	struct compat_msghdr __user *msg_compat = (struct compat_msghdr __user *)msg;
+ 	struct socket *sock;
+@@ -1860,7 +1864,8 @@ out:       
   *	BSD recvmsg interface
   */
  
--asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg,
--			    unsigned int flags)
+-asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg, unsigned int flags)
 +SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg,
 +		unsigned int, flags)
  {
- 	struct compat_msghdr __user *msg_compat =
- 	    (struct compat_msghdr __user *)msg;
-@@ -2001,7 +2002,7 @@ static const unsigned char nargs[18]={
-  *  it is set by the callees.
+ 	struct compat_msghdr __user *msg_compat = (struct compat_msghdr __user *)msg;
+ 	struct socket *sock;
+@@ -1974,7 +1979,7 @@ static unsigned char nargs[18]={AL(0),AL
+  *  it is set by the callees. 
   */
  
 -asmlinkage long sys_socketcall(int call, unsigned long __user *args)
 +SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)
  {
  	unsigned long a[6];
- 	unsigned long a0, a1;
+ 	unsigned long a0,a1;

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch	Mon Feb  9 15:47:53 2009
@@ -10,32 +10,32 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/eventpoll.c linux-source-2.6.24/fs/eventpoll.c
---- linux-source-2.6.24.orig/fs/eventpoll.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/fs/eventpoll.c	2009-01-21 01:15:04.000000000 -0700
-@@ -1070,7 +1070,7 @@ retry:
-  * RB tree. With the current implementation, the "size" parameter is ignored
-  * (besides sanity checks).
+diff -urpN linux-source-2.6.18.orig/fs/eventpoll.c linux-source-2.6.18/fs/eventpoll.c
+--- linux-source-2.6.18.orig/fs/eventpoll.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/eventpoll.c	2009-01-25 23:17:12.000000000 -0700
+@@ -495,7 +495,7 @@ void eventpoll_release_file(struct file 
+  * file descriptors inside the epoll interface. It is the kernel part of
+  * the userspace epoll_create(2).
   */
 -asmlinkage long sys_epoll_create(int size)
 +SYSCALL_DEFINE1(epoll_create, int, size)
  {
- 	int error, fd = -1;
+ 	int error, fd;
  	struct eventpoll *ep;
-@@ -1115,8 +1115,8 @@ error_return:
-  * the eventpoll file that enables the insertion/removal/change of
-  * file descriptors inside the interest set.
+@@ -542,8 +542,8 @@ eexit_1:
+  * file descriptors inside the interest set.  It represents
+  * the kernel part of the user space epoll_ctl(2).
   */
--asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
--			      struct epoll_event __user *event)
+-asmlinkage long
+-sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event __user *event)
 +SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
 +		struct epoll_event __user *, event)
  {
  	int error;
  	struct file *file, *tfile;
-@@ -1213,8 +1213,8 @@ error_return:
+@@ -646,8 +646,8 @@ eexit_1:
   * Implement the event wait interface for the eventpoll file. It is the kernel
   * part of the user space epoll_wait(2).
   */
@@ -46,23 +46,10 @@
  {
  	int error;
  	struct file *file;
-@@ -1271,9 +1271,9 @@ error_return:
-  * Implement the event wait interface for the eventpoll file. It is the kernel
-  * part of the user space epoll_pwait(2).
-  */
--asmlinkage long sys_epoll_pwait(int epfd, struct epoll_event __user *events,
--		int maxevents, int timeout, const sigset_t __user *sigmask,
--		size_t sigsetsize)
-+SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events,
-+		int, maxevents, int, timeout, const sigset_t __user *, sigmask,
-+		size_t, sigsetsize)
- {
- 	int error;
- 	sigset_t ksigmask, sigsaved;
-diff -urpN linux-source-2.6.24.orig/fs/select.c linux-source-2.6.24/fs/select.c
---- linux-source-2.6.24.orig/fs/select.c	2009-01-21 00:41:11.000000000 -0700
-+++ linux-source-2.6.24/fs/select.c	2009-01-21 01:15:04.000000000 -0700
-@@ -373,8 +373,8 @@ out_nofds:
+diff -urpN linux-source-2.6.18.orig/fs/select.c linux-source-2.6.18/fs/select.c
+--- linux-source-2.6.18.orig/fs/select.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/fs/select.c	2009-01-25 23:16:04.000000000 -0700
+@@ -381,8 +381,8 @@ out_nofds:
  	return ret;
  }
  
@@ -73,8 +60,8 @@
  {
  	s64 timeout = -1;
  	struct timeval tv;
-@@ -726,8 +726,8 @@ static long do_restart_poll(struct resta
- 	return ret;
+@@ -743,8 +743,8 @@ out_fds:
+ 	return err;
  }
  
 -asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
@@ -83,11 +70,11 @@
 +		long, timeout_msecs)
  {
  	s64 timeout_jiffies;
- 	int ret;
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 00:59:55.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 01:15:04.000000000 -0700
-@@ -1354,7 +1354,7 @@ asmlinkage long sys_newuname(struct new_
+ 
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 21:07:13.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 23:16:04.000000000 -0700
+@@ -1682,7 +1682,7 @@ asmlinkage long sys_newuname(struct new_
  	return errno;
  }
  
@@ -96,7 +83,7 @@
  {
  	int errno;
  	char tmp[__NEW_UTS_LEN];
-@@ -1376,7 +1376,7 @@ asmlinkage long sys_sethostname(char __u
+@@ -1704,7 +1704,7 @@ asmlinkage long sys_sethostname(char __u
  
  #ifdef __ARCH_WANT_SYS_GETHOSTNAME
  
@@ -105,7 +92,7 @@
  {
  	int i, errno;
  
-@@ -1399,7 +1399,7 @@ asmlinkage long sys_gethostname(char __u
+@@ -1727,7 +1727,7 @@ asmlinkage long sys_gethostname(char __u
   * Only setdomainname; getdomainname can be implemented by calling
   * uname()
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch	Mon Feb  9 15:47:53 2009
@@ -10,21 +10,21 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/ipc/msg.c linux-source-2.6.24/ipc/msg.c
---- linux-source-2.6.24.orig/ipc/msg.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/ipc/msg.c	2009-01-21 01:15:34.000000000 -0700
-@@ -310,7 +310,7 @@ static inline int msg_security(struct ke
- 	return security_msg_queue_associate(msq, msgflg);
+diff -urpN linux-source-2.6.18.orig/ipc/msg.c linux-source-2.6.18/ipc/msg.c
+--- linux-source-2.6.18.orig/ipc/msg.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/ipc/msg.c	2009-01-25 23:18:41.000000000 -0700
+@@ -208,7 +208,7 @@ static void freeque(struct msg_queue *ms
+ 	ipc_rcu_putref(msq);
  }
  
 -asmlinkage long sys_msgget(key_t key, int msgflg)
 +SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
  {
- 	struct ipc_namespace *ns;
- 	struct ipc_ops msg_ops;
-@@ -421,7 +421,7 @@ copy_msqid_from_user(struct msq_setbuf *
+ 	struct msg_queue *msq;
+ 	int id, ret = -EPERM;
+@@ -335,7 +335,7 @@ copy_msqid_from_user(struct msq_setbuf *
  	}
  }
  
@@ -32,9 +32,9 @@
 +SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
  {
  	struct kern_ipc_perm *ipcp;
- 	struct msq_setbuf uninitialized_var(setbuf);
-@@ -749,8 +749,8 @@ out_free:
- 	return err;
+ 	struct msq_setbuf setbuf;
+@@ -575,8 +575,8 @@ static inline int pipelined_send(struct 
+ 	return 0;
  }
  
 -asmlinkage long
@@ -42,10 +42,10 @@
 +SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
 +		int, msgflg)
  {
- 	long mtype;
- 
-@@ -930,8 +930,8 @@ out_unlock:
- 	return msgsz;
+ 	struct msg_queue *msq;
+ 	struct msg_msg *msg;
+@@ -688,8 +688,8 @@ static inline int convert_mode(long *msg
+ 	return SEARCH_EQUAL;
  }
  
 -asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz,
@@ -53,12 +53,12 @@
 +SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
 +		long, msgtyp, int, msgflg)
  {
- 	long err, mtype;
- 
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 01:15:04.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 01:15:34.000000000 -0700
-@@ -1343,7 +1343,7 @@ DECLARE_RWSEM(uts_sem);
+ 	struct msg_queue *msq;
+ 	struct msg_msg *msg;
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 23:16:04.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 23:18:41.000000000 -0700
+@@ -1671,7 +1671,7 @@ DECLARE_RWSEM(uts_sem);
  
  EXPORT_SYMBOL(uts_sem);
  
@@ -67,7 +67,7 @@
  {
  	int errno = 0;
  
-@@ -1420,7 +1420,7 @@ SYSCALL_DEFINE2(setdomainname, char __us
+@@ -1748,7 +1748,7 @@ SYSCALL_DEFINE2(setdomainname, char __us
  	return errno;
  }
  
@@ -76,7 +76,7 @@
  {
  	if (resource >= RLIM_NLIMITS)
  		return -EINVAL;
-@@ -1439,7 +1439,8 @@ asmlinkage long sys_getrlimit(unsigned i
+@@ -1767,7 +1767,8 @@ asmlinkage long sys_getrlimit(unsigned i
   *	Back compatibility for getrlimit. Needed for some apps.
   */
   
@@ -86,7 +86,7 @@
  {
  	struct rlimit x;
  	if (resource >= RLIM_NLIMITS)
-@@ -1457,7 +1458,7 @@ asmlinkage long sys_old_getrlimit(unsign
+@@ -1785,7 +1786,7 @@ asmlinkage long sys_old_getrlimit(unsign
  
  #endif
  
@@ -95,7 +95,7 @@
  {
  	struct rlimit new_rlim, *old_rlim;
  	unsigned long it_prof_secs;
-@@ -1626,14 +1627,14 @@ int getrusage(struct task_struct *p, int
+@@ -1948,14 +1949,14 @@ int getrusage(struct task_struct *p, int
  	return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/ipc/mqueue.c linux-source-2.6.24/ipc/mqueue.c
---- linux-source-2.6.24.orig/ipc/mqueue.c	2009-01-21 00:05:39.000000000 -0700
-+++ linux-source-2.6.24/ipc/mqueue.c	2009-01-21 01:16:11.000000000 -0700
-@@ -647,8 +647,8 @@ static int oflag2acc[O_ACCMODE] = { MAY_
+diff -urpN linux-source-2.6.18.orig/ipc/mqueue.c linux-source-2.6.18/ipc/mqueue.c
+--- linux-source-2.6.18.orig/ipc/mqueue.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/ipc/mqueue.c	2009-01-25 23:19:11.000000000 -0700
+@@ -652,8 +652,8 @@ static int oflag2acc[O_ACCMODE] = { MAY_
  	return dentry_open(dentry, mqueue_mnt, oflag);
  }
  
@@ -26,7 +26,7 @@
  {
  	struct dentry *dentry;
  	struct file *filp;
-@@ -716,7 +716,7 @@ out_putname:
+@@ -719,7 +719,7 @@ out_putname:
  	return fd;
  }
  
@@ -35,19 +35,19 @@
  {
  	int err;
  	char *name;
-diff -urpN linux-source-2.6.24.orig/ipc/sem.c linux-source-2.6.24/ipc/sem.c
---- linux-source-2.6.24.orig/ipc/sem.c	2009-01-21 00:50:44.000000000 -0700
-+++ linux-source-2.6.24/ipc/sem.c	2009-01-21 01:16:11.000000000 -0700
-@@ -329,7 +329,7 @@ static inline int sem_more_checks(struct
- 	return 0;
+diff -urpN linux-source-2.6.18.orig/ipc/sem.c linux-source-2.6.18/ipc/sem.c
+--- linux-source-2.6.18.orig/ipc/sem.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/ipc/sem.c	2009-01-25 23:19:35.000000000 -0700
+@@ -211,7 +211,7 @@ static int newary (key_t key, int nsems,
+ 	return sma->sem_id;
  }
  
--asmlinkage long sys_semget(key_t key, int nsems, int semflg)
+-asmlinkage long sys_semget (key_t key, int nsems, int semflg)
 +SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
  {
- 	struct ipc_namespace *ns;
- 	struct ipc_ops sem_ops;
-@@ -1121,8 +1121,8 @@ out:
+ 	int id, err = -EINVAL;
+ 	struct sem_array *sma;
+@@ -1066,8 +1066,8 @@ out:
  	return un;
  }
  
@@ -58,7 +58,7 @@
  {
  	int error = -EINVAL;
  	struct sem_array *sma;
-@@ -1285,7 +1285,8 @@ out_free:
+@@ -1228,7 +1228,8 @@ out_free:
  	return error;
  }
  
@@ -68,19 +68,19 @@
  {
  	return sys_semtimedop(semid, tsops, nsops, NULL);
  }
-diff -urpN linux-source-2.6.24.orig/ipc/shm.c linux-source-2.6.24/ipc/shm.c
---- linux-source-2.6.24.orig/ipc/shm.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/ipc/shm.c	2009-01-21 01:16:37.000000000 -0700
-@@ -492,7 +492,7 @@ static inline int shm_more_checks(struct
- 	return 0;
+diff -urpN linux-source-2.6.18.orig/ipc/shm.c linux-source-2.6.18/ipc/shm.c
+--- linux-source-2.6.18.orig/ipc/shm.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/ipc/shm.c	2009-01-25 23:19:11.000000000 -0700
+@@ -269,7 +269,7 @@ no_file:
+ 	return error;
  }
  
 -asmlinkage long sys_shmget (key_t key, size_t size, int shmflg)
 +SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
  {
- 	struct ipc_namespace *ns;
- 	struct ipc_ops shm_ops;
-@@ -641,7 +641,7 @@ static void shm_get_stat(struct ipc_name
+ 	struct shmid_kernel *shp;
+ 	int err, id = 0;
+@@ -425,7 +425,7 @@ static void shm_get_stat(unsigned long *
  	}
  }
  
@@ -89,8 +89,8 @@
  {
  	struct shm_setbuf setbuf;
  	struct shmid_kernel *shp;
-@@ -1048,7 +1048,7 @@ out_put_dentry:
- 	goto out_nattch;
+@@ -802,7 +802,7 @@ out:
+ 	return err;
  }
  
 -asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
@@ -98,7 +98,7 @@
  {
  	unsigned long ret;
  	long err;
-@@ -1064,7 +1064,7 @@ asmlinkage long sys_shmat(int shmid, cha
+@@ -818,7 +818,7 @@ asmlinkage long sys_shmat(int shmid, cha
   * detach and kill segment if marked destroyed.
   * The work is done in shm_close.
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/drivers/pci/syscall.c linux-source-2.6.24/drivers/pci/syscall.c
---- linux-source-2.6.24.orig/drivers/pci/syscall.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/drivers/pci/syscall.c	2009-01-21 01:17:17.000000000 -0700
-@@ -14,10 +14,8 @@
+diff -urpN linux-source-2.6.18.orig/drivers/pci/syscall.c linux-source-2.6.18/drivers/pci/syscall.c
+--- linux-source-2.6.18.orig/drivers/pci/syscall.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/drivers/pci/syscall.c	2009-01-25 23:20:11.000000000 -0700
+@@ -15,10 +15,8 @@
  #include <asm/uaccess.h>
  #include "pci.h"
  
@@ -28,7 +28,7 @@
  {
  	struct pci_dev *dev;
  	u8 byte;
-@@ -89,10 +87,8 @@ error:
+@@ -88,10 +86,8 @@ error:
  	return err;
  }
  
@@ -41,10 +41,10 @@
  {
  	struct pci_dev *dev;
  	u8 byte;
-diff -urpN linux-source-2.6.24.orig/ipc/mqueue.c linux-source-2.6.24/ipc/mqueue.c
---- linux-source-2.6.24.orig/ipc/mqueue.c	2009-01-21 01:16:11.000000000 -0700
-+++ linux-source-2.6.24/ipc/mqueue.c	2009-01-21 01:17:17.000000000 -0700
-@@ -806,9 +806,9 @@ static inline void pipelined_receive(str
+diff -urpN linux-source-2.6.18.orig/ipc/mqueue.c linux-source-2.6.18/ipc/mqueue.c
+--- linux-source-2.6.18.orig/ipc/mqueue.c	2009-01-25 23:19:11.000000000 -0700
++++ linux-source-2.6.18/ipc/mqueue.c	2009-01-25 23:20:11.000000000 -0700
+@@ -808,9 +808,9 @@ static inline void pipelined_receive(str
  	sender->state = STATE_READY;
  }
  
@@ -57,7 +57,7 @@
  {
  	struct file *filp;
  	struct inode *inode;
-@@ -894,9 +894,9 @@ out:
+@@ -895,9 +895,9 @@ out:
  	return ret;
  }
  
@@ -81,7 +81,7 @@
  {
  	int ret;
  	struct file *filp;
-@@ -1105,9 +1105,9 @@ out:
+@@ -1102,9 +1102,9 @@ out:
  	return ret;
  }
  
@@ -94,10 +94,10 @@
  {
  	int ret;
  	struct mq_attr mqstat, omqstat;
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 01:15:34.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 01:18:10.000000000 -0700
-@@ -1640,8 +1640,8 @@ SYSCALL_DEFINE1(umask, int, mask)
+diff -urpN linux-source-2.6.18.orig/kernel/sys.c linux-source-2.6.18/kernel/sys.c
+--- linux-source-2.6.18.orig/kernel/sys.c	2009-01-25 23:18:41.000000000 -0700
++++ linux-source-2.6.18/kernel/sys.c	2009-01-25 23:20:11.000000000 -0700
+@@ -1962,8 +1962,8 @@ SYSCALL_DEFINE1(umask, int, mask)
  	return mask;
  }
      
@@ -108,10 +108,10 @@
  {
  	long error;
  
-diff -urpN linux-source-2.6.24.orig/mm/swapfile.c linux-source-2.6.24/mm/swapfile.c
---- linux-source-2.6.24.orig/mm/swapfile.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/swapfile.c	2009-01-21 01:17:17.000000000 -0700
-@@ -1172,7 +1172,7 @@ int page_queue_congested(struct page *pa
+diff -urpN linux-source-2.6.18.orig/mm/swapfile.c linux-source-2.6.18/mm/swapfile.c
+--- linux-source-2.6.18.orig/mm/swapfile.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/mm/swapfile.c	2009-01-25 23:20:11.000000000 -0700
+@@ -1135,7 +1135,7 @@ int page_queue_congested(struct page *pa
  }
  #endif
  
@@ -120,7 +120,7 @@
  {
  	struct swap_info_struct * p = NULL;
  	unsigned short *swap_map;
-@@ -1410,7 +1410,7 @@ __initcall(procswaps_init);
+@@ -1373,7 +1373,7 @@ __initcall(procswaps_init);
   *
   * The swapon system call
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/exec.c linux-source-2.6.24/fs/exec.c
---- linux-source-2.6.24.orig/fs/exec.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/exec.c	2009-01-21 01:18:48.000000000 -0700
-@@ -101,7 +101,7 @@ static inline void put_binfmt(struct lin
+diff -urpN linux-source-2.6.18.orig/fs/exec.c linux-source-2.6.18/fs/exec.c
+--- linux-source-2.6.18.orig/fs/exec.c	2008-12-25 14:04:13.000000000 -0700
++++ linux-source-2.6.18/fs/exec.c	2009-01-25 23:20:42.000000000 -0700
+@@ -121,7 +121,7 @@ static inline void put_binfmt(struct lin
   *
   * Also note that we take the address to load from from the file itself.
   */
@@ -24,10 +24,10 @@
  {
  	struct file * file;
  	struct nameidata nd;
-diff -urpN linux-source-2.6.24.orig/fs/filesystems.c linux-source-2.6.24/fs/filesystems.c
---- linux-source-2.6.24.orig/fs/filesystems.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/filesystems.c	2009-01-21 01:18:48.000000000 -0700
-@@ -177,7 +177,7 @@ static int fs_maxindex(void)
+diff -urpN linux-source-2.6.18.orig/fs/filesystems.c linux-source-2.6.18/fs/filesystems.c
+--- linux-source-2.6.18.orig/fs/filesystems.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/filesystems.c	2009-01-25 23:20:42.000000000 -0700
+@@ -178,7 +178,7 @@ static int fs_maxindex(void)
  /*
   * Whee.. Weird sysv syscall. 
   */
@@ -36,10 +36,10 @@
  {
  	int retval = -EINVAL;
  
-diff -urpN linux-source-2.6.24.orig/fs/nfsctl.c linux-source-2.6.24/fs/nfsctl.c
---- linux-source-2.6.24.orig/fs/nfsctl.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/nfsctl.c	2009-01-21 01:18:48.000000000 -0700
-@@ -82,8 +82,8 @@ static struct {
+diff -urpN linux-source-2.6.18.orig/fs/nfsctl.c linux-source-2.6.18/fs/nfsctl.c
+--- linux-source-2.6.18.orig/fs/nfsctl.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/nfsctl.c	2009-01-25 23:20:42.000000000 -0700
+@@ -86,8 +86,8 @@ static struct {
  	},
  };
  
@@ -50,10 +50,10 @@
  {
  	struct file *file;
  	void __user *p = &arg->u;
-diff -urpN linux-source-2.6.24.orig/kernel/printk.c linux-source-2.6.24/kernel/printk.c
---- linux-source-2.6.24.orig/kernel/printk.c	2009-01-21 00:42:57.000000000 -0700
-+++ linux-source-2.6.24/kernel/printk.c	2009-01-21 01:18:48.000000000 -0700
-@@ -421,7 +421,7 @@ out:
+diff -urpN linux-source-2.6.18.orig/kernel/printk.c linux-source-2.6.18/kernel/printk.c
+--- linux-source-2.6.18.orig/kernel/printk.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/kernel/printk.c	2009-01-25 23:20:42.000000000 -0700
+@@ -314,7 +314,7 @@ out:
  	return error;
  }
  
@@ -62,11 +62,11 @@
  {
  	return do_syslog(type, buf, len);
  }
-diff -urpN linux-source-2.6.24.orig/kernel/ptrace.c linux-source-2.6.24/kernel/ptrace.c
---- linux-source-2.6.24.orig/kernel/ptrace.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/kernel/ptrace.c	2009-01-21 01:19:33.000000000 -0700
-@@ -459,7 +459,7 @@ struct task_struct *ptrace_get_task_stru
- #endif
+diff -urpN linux-source-2.6.18.orig/kernel/ptrace.c linux-source-2.6.18/kernel/ptrace.c
+--- linux-source-2.6.18.orig/kernel/ptrace.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/kernel/ptrace.c	2009-01-25 23:20:42.000000000 -0700
+@@ -501,7 +501,7 @@ struct task_struct *ptrace_get_task_stru
+ }
  
  #ifndef __ARCH_SYS_PTRACE
 -asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
@@ -74,10 +74,10 @@
  {
  	struct task_struct *child;
  	long ret;
-diff -urpN linux-source-2.6.24.orig/kernel/sysctl.c linux-source-2.6.24/kernel/sysctl.c
---- linux-source-2.6.24.orig/kernel/sysctl.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/kernel/sysctl.c	2009-01-21 01:18:48.000000000 -0700
-@@ -1354,7 +1354,7 @@ int do_sysctl(int __user *name, int nlen
+diff -urpN linux-source-2.6.18.orig/kernel/sysctl.c linux-source-2.6.18/kernel/sysctl.c
+--- linux-source-2.6.18.orig/kernel/sysctl.c	2008-12-25 14:04:12.000000000 -0700
++++ linux-source-2.6.18/kernel/sysctl.c	2009-01-25 23:20:42.000000000 -0700
+@@ -1194,7 +1194,7 @@ int do_sysctl(int __user *name, int nlen
  	return error;
  }
  
@@ -86,30 +86,30 @@
  {
  	struct __sysctl_args tmp;
  	int error;
-@@ -2564,7 +2564,7 @@ int sysctl_ms_jiffies(struct ctl_table *
- #else /* CONFIG_SYSCTL_SYSCALL */
+@@ -2446,7 +2446,7 @@ int sysctl_ms_jiffies(ctl_table *table, 
+ #else /* CONFIG_SYSCTL */
  
  
 -asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
 +SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
  {
- 	struct __sysctl_args tmp;
- 	int error;
-diff -urpN linux-source-2.6.24.orig/kernel/timer.c linux-source-2.6.24/kernel/timer.c
---- linux-source-2.6.24.orig/kernel/timer.c	2009-01-21 00:55:17.000000000 -0700
-+++ linux-source-2.6.24/kernel/timer.c	2009-01-21 01:18:48.000000000 -0700
-@@ -1208,7 +1208,7 @@ out:
- 	return 0;
+ 	return -ENOSYS;
  }
- 
+diff -urpN linux-source-2.6.18.orig/kernel/timer.c linux-source-2.6.18/kernel/timer.c
+--- linux-source-2.6.18.orig/kernel/timer.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/kernel/timer.c	2009-01-25 23:21:09.000000000 -0700
+@@ -1473,7 +1473,7 @@ SYSCALL_DEFINE0(gettid)
+ /*
+  * sys_sysinfo - fill in sysinfo struct
+  */ 
 -asmlinkage long sys_sysinfo(struct sysinfo __user *info)
 +SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
  {
  	struct sysinfo val;
- 
-diff -urpN linux-source-2.6.24.orig/security/keys/keyctl.c linux-source-2.6.24/security/keys/keyctl.c
---- linux-source-2.6.24.orig/security/keys/keyctl.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/security/keys/keyctl.c	2009-01-21 01:18:48.000000000 -0700
+ 	unsigned long mem_total, sav_total;
+diff -urpN linux-source-2.6.18.orig/security/keys/keyctl.c linux-source-2.6.18/security/keys/keyctl.c
+--- linux-source-2.6.18.orig/security/keys/keyctl.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/security/keys/keyctl.c	2009-01-25 23:20:42.000000000 -0700
 @@ -52,11 +52,11 @@ static int key_get_type_from_user(char *
   * - returns the new key's serial number
   * - implements add_key()

Added: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037pre1-missing-include.patch
==============================================================================
--- (empty file)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0037pre1-missing-include.patch	Mon Feb  9 15:47:53 2009
@@ -0,0 +1,26 @@
+commit f17d30a803e8434c4ef381bb5cfa1956ff0201f0
+Author: Adrian Bunk <bunk at kernel.org>
+Date:   Wed Feb 6 01:36:44 2008 -0800
+
+    kernel/ptrace.c should #include <linux/syscalls.h>
+    
+    Every file should include the headers containing the prototypes for its global
+    functions (in this case sys_ptrace()).
+    
+    Signed-off-by: Adrian Bunk <bunk at kernel.org>
+    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
+
+diff -urpN a/kernel/ptrace.c b/kernel/ptrace.c
+--- a/kernel/ptrace.c	2009-01-28 23:17:04.000000000 -0700
++++ b/kernel/ptrace.c	2009-01-28 23:27:34.000000000 -0700
+@@ -18,6 +18,7 @@
+ #include <linux/ptrace.h>
+ #include <linux/security.h>
+ #include <linux/signal.h>
++#include <linux/syscalls.h>
+ 
+ #include <asm/pgtable.h>
+ #include <asm/uaccess.h>

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/inotify_user.c linux-source-2.6.24/fs/inotify_user.c
---- linux-source-2.6.24.orig/fs/inotify_user.c	2008-10-10 00:11:27.000000000 -0600
-+++ linux-source-2.6.24/fs/inotify_user.c	2009-01-21 01:21:24.000000000 -0700
-@@ -540,7 +540,7 @@ static const struct inotify_operations i
+diff -urpN linux-source-2.6.18.orig/fs/inotify_user.c linux-source-2.6.18/fs/inotify_user.c
+--- linux-source-2.6.18.orig/fs/inotify_user.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/inotify_user.c	2009-01-26 08:41:20.000000000 -0700
+@@ -531,7 +531,7 @@ static const struct inotify_operations i
  	.destroy_watch	= free_inotify_user_watch,
  };
  
@@ -24,10 +24,10 @@
  {
  	struct inotify_device *dev;
  	struct inotify_handle *ih;
-diff -urpN linux-source-2.6.24.orig/fs/ioprio.c linux-source-2.6.24/fs/ioprio.c
---- linux-source-2.6.24.orig/fs/ioprio.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/ioprio.c	2009-01-21 01:21:24.000000000 -0700
-@@ -55,7 +55,7 @@ static int set_task_ioprio(struct task_s
+diff -urpN linux-source-2.6.18.orig/fs/ioprio.c linux-source-2.6.18/fs/ioprio.c
+--- linux-source-2.6.18.orig/fs/ioprio.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/fs/ioprio.c	2009-01-26 08:41:20.000000000 -0700
+@@ -54,7 +54,7 @@ static int set_task_ioprio(struct task_s
  	return 0;
  }
  
@@ -36,7 +36,7 @@
  {
  	int class = IOPRIO_PRIO_CLASS(ioprio);
  	int data = IOPRIO_PRIO_DATA(ioprio);
-@@ -171,7 +171,7 @@ int ioprio_best(unsigned short aprio, un
+@@ -163,7 +163,7 @@ int ioprio_best(unsigned short aprio, un
  		return aprio;
  }
  
@@ -45,15 +45,15 @@
  {
  	struct task_struct *g, *p;
  	struct user_struct *user;
-@@ -235,4 +235,3 @@ asmlinkage long sys_ioprio_get(int which
- 	read_unlock(&tasklist_lock);
+@@ -224,4 +224,3 @@ asmlinkage long sys_ioprio_get(int which
+ 	read_unlock_irq(&tasklist_lock);
  	return ret;
  }
 -
-diff -urpN linux-source-2.6.24.orig/mm/mempolicy.c linux-source-2.6.24/mm/mempolicy.c
---- linux-source-2.6.24.orig/mm/mempolicy.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/mm/mempolicy.c	2009-01-21 01:21:24.000000000 -0700
-@@ -904,10 +904,9 @@ static int copy_nodes_to_user(unsigned l
+diff -urpN linux-source-2.6.18.orig/mm/mempolicy.c linux-source-2.6.18/mm/mempolicy.c
+--- linux-source-2.6.18.orig/mm/mempolicy.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/mm/mempolicy.c	2009-01-26 08:41:20.000000000 -0700
+@@ -866,10 +866,9 @@ static int copy_nodes_to_user(unsigned l
  	return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
  }
  
@@ -67,7 +67,7 @@
  {
  	nodemask_t nodes;
  	int err;
-@@ -923,8 +922,8 @@ asmlinkage long sys_mbind(unsigned long 
+@@ -881,8 +880,8 @@ asmlinkage long sys_mbind(unsigned long 
  }
  
  /* Set the process memory policy */
@@ -78,7 +78,7 @@
  {
  	int err;
  	nodemask_t nodes;
-@@ -937,9 +936,9 @@ asmlinkage long sys_set_mempolicy(int mo
+@@ -895,9 +894,9 @@ asmlinkage long sys_set_mempolicy(int mo
  	return do_set_mempolicy(mode, &nodes);
  }
  
@@ -91,7 +91,7 @@
  {
  	struct mm_struct *mm;
  	struct task_struct *task;
-@@ -1007,10 +1006,9 @@ out:
+@@ -960,10 +959,9 @@ out:
  
  
  /* Retrieve NUMA policy */
@@ -103,12 +103,12 @@
 +		unsigned long __user *, nmask, unsigned long, maxnode,
 +		unsigned long, addr, unsigned long, flags)
  {
- 	int err;
- 	int uninitialized_var(pval);
-diff -urpN linux-source-2.6.24.orig/mm/migrate.c linux-source-2.6.24/mm/migrate.c
---- linux-source-2.6.24.orig/mm/migrate.c	2009-01-21 01:20:29.000000000 -0700
-+++ linux-source-2.6.24/mm/migrate.c	2009-01-21 01:21:24.000000000 -0700
-@@ -915,10 +915,10 @@ set_status:
+ 	int err, pval;
+ 	nodemask_t nodes;
+diff -urpN linux-source-2.6.18.orig/mm/migrate.c linux-source-2.6.18/mm/migrate.c
+--- linux-source-2.6.18.orig/mm/migrate.c	2009-01-25 23:22:47.000000000 -0700
++++ linux-source-2.6.18/mm/migrate.c	2009-01-26 08:41:20.000000000 -0700
+@@ -860,10 +860,10 @@ set_status:
   * Move a list of pages in the address space of the currently executing
   * process.
   */
@@ -123,9 +123,9 @@
  {
  	int err = 0;
  	int i;
-diff -urpN linux-source-2.6.24.orig/security/keys/keyctl.c linux-source-2.6.24/security/keys/keyctl.c
---- linux-source-2.6.24.orig/security/keys/keyctl.c	2009-01-21 01:18:48.000000000 -0700
-+++ linux-source-2.6.24/security/keys/keyctl.c	2009-01-21 01:21:24.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/security/keys/keyctl.c linux-source-2.6.18/security/keys/keyctl.c
+--- linux-source-2.6.18.orig/security/keys/keyctl.c	2009-01-25 23:20:42.000000000 -0700
++++ linux-source-2.6.18/security/keys/keyctl.c	2009-01-26 08:41:20.000000000 -0700
 @@ -1059,8 +1059,8 @@ error:
  /*
   * the key control system call

Added: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038pre2-missing-include.patch
==============================================================================
--- (empty file)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0038pre2-missing-include.patch	Mon Feb  9 15:47:53 2009
@@ -0,0 +1,11 @@
+diff -urpN a/mm/mempolicy.c b/mm/mempolicy.c
+--- a/mm/mempolicy.c	2009-02-07 15:19:57.000000000 -0700
++++ b/mm/mempolicy.c	2009-02-07 15:24:57.000000000 -0700
+@@ -89,6 +89,7 @@
+ #include <linux/migrate.h>
+ #include <linux/rmap.h>
+ #include <linux/security.h>
++#include <linux/syscalls.h>
+ 
+ #include <asm/tlbflush.h>
+ #include <asm/uaccess.h>

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/inotify_user.c linux-source-2.6.24/fs/inotify_user.c
---- linux-source-2.6.24.orig/fs/inotify_user.c	2009-01-21 01:21:24.000000000 -0700
-+++ linux-source-2.6.24/fs/inotify_user.c	2009-01-21 01:21:53.000000000 -0700
-@@ -611,7 +611,8 @@ out_put_fd:
+diff -urpN linux-source-2.6.18.orig/fs/inotify_user.c linux-source-2.6.18/fs/inotify_user.c
+--- linux-source-2.6.18.orig/fs/inotify_user.c	2009-01-26 08:41:55.000000000 -0700
++++ linux-source-2.6.18/fs/inotify_user.c	2009-01-26 08:42:08.000000000 -0700
+@@ -602,7 +602,8 @@ out_put_fd:
  	return ret;
  }
  
@@ -25,7 +25,7 @@
  {
  	struct inode *inode;
  	struct inotify_device *dev;
-@@ -655,7 +656,7 @@ fput_and_out:
+@@ -646,7 +647,7 @@ fput_and_out:
  	return ret;
  }
  
@@ -34,10 +34,10 @@
  {
  	struct file *filp;
  	struct inotify_device *dev;
-diff -urpN linux-source-2.6.24.orig/fs/namei.c linux-source-2.6.24/fs/namei.c
---- linux-source-2.6.24.orig/fs/namei.c	2009-01-21 01:13:36.000000000 -0700
-+++ linux-source-2.6.24/fs/namei.c	2009-01-21 01:21:53.000000000 -0700
-@@ -1957,8 +1957,8 @@ int vfs_mknod(struct inode *dir, struct 
+diff -urpN linux-source-2.6.18.orig/fs/namei.c linux-source-2.6.18/fs/namei.c
+--- linux-source-2.6.18.orig/fs/namei.c	2009-01-25 23:09:50.000000000 -0700
++++ linux-source-2.6.18/fs/namei.c	2009-01-26 08:42:08.000000000 -0700
+@@ -1840,8 +1840,8 @@ int vfs_mknod(struct inode *dir, struct 
  	return error;
  }
  
@@ -48,7 +48,7 @@
  {
  	int error = 0;
  	char * tmp;
-@@ -2034,7 +2034,7 @@ int vfs_mkdir(struct inode *dir, struct 
+@@ -1917,7 +1917,7 @@ int vfs_mkdir(struct inode *dir, struct 
  	return error;
  }
  
@@ -57,7 +57,7 @@
  {
  	int error = 0;
  	char * tmp;
-@@ -2262,7 +2262,7 @@ slashes:
+@@ -2143,7 +2143,7 @@ slashes:
  	goto exit2;
  }
  
@@ -66,7 +66,7 @@
  {
  	if ((flag & ~AT_REMOVEDIR) != 0)
  		return -EINVAL;
-@@ -2299,8 +2299,8 @@ int vfs_symlink(struct inode *dir, struc
+@@ -2180,8 +2180,8 @@ int vfs_symlink(struct inode *dir, struc
  	return error;
  }
  
@@ -77,7 +77,7 @@
  {
  	int error = 0;
  	char * from;
-@@ -2388,9 +2388,8 @@ int vfs_link(struct dentry *old_dentry, 
+@@ -2266,9 +2266,8 @@ int vfs_link(struct dentry *old_dentry, 
   * with linux 2.0, and to avoid hard-linking to directories
   * and other special files.  --ADM
   */
@@ -89,7 +89,7 @@
  {
  	struct dentry *new_dentry;
  	struct nameidata nd, old_nd;
-@@ -2661,8 +2660,8 @@ exit:
+@@ -2538,8 +2537,8 @@ exit:
  	return error;
  }
  

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,22 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/open.c linux-source-2.6.24/fs/open.c
---- linux-source-2.6.24.orig/fs/open.c	2009-01-21 01:13:36.000000000 -0700
-+++ linux-source-2.6.24/fs/open.c	2009-01-21 01:22:18.000000000 -0700
-@@ -437,7 +437,7 @@ SYSCALL_ALIAS(sys_fallocate, SyS_falloca
+diff -urpN linux-source-2.6.18.orig/fs/open.c linux-source-2.6.18/fs/open.c
+--- linux-source-2.6.18.orig/fs/open.c	2009-01-25 23:09:50.000000000 -0700
++++ linux-source-2.6.18/fs/open.c	2009-01-26 08:42:38.000000000 -0700
+@@ -484,7 +484,8 @@ out:
+ 	return error;
+ }
+ 
+-asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes)
++SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename,
++		struct timeval __user *, utimes)
+ {
+ 	struct timeval times[2];
+ 
+@@ -505,7 +506,7 @@ SYSCALL_DEFINE2(utimes, char __user *, f
   * We do this by temporarily clearing all FS-related capabilities and
   * switching the fsuid/fsgid around to the real ones.
   */
@@ -24,7 +34,7 @@
  {
  	struct nameidata nd;
  	int old_fsuid, old_fsgid;
-@@ -610,8 +610,7 @@ out:
+@@ -671,8 +672,7 @@ out:
  	return err;
  }
  
@@ -34,7 +44,7 @@
  {
  	struct nameidata nd;
  	struct inode * inode;
-@@ -700,8 +699,8 @@ out:
+@@ -759,8 +759,8 @@ SYSCALL_DEFINE3(chown, const char __user
  	return error;
  }
  
@@ -45,9 +55,9 @@
  {
  	struct nameidata nd;
  	int error = -EINVAL;
-@@ -1081,8 +1080,8 @@ SYSCALL_DEFINE3(open, const char __user 
+@@ -1126,8 +1126,8 @@ SYSCALL_DEFINE3(open, const char __user 
  }
- EXPORT_UNUSED_SYMBOL_GPL(sys_open); /* To be deleted for 2.6.25 */
+ EXPORT_SYMBOL_GPL(sys_open);
  
 -asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
 -			   int mode)
@@ -56,10 +66,10 @@
  {
  	long ret;
  
-diff -urpN linux-source-2.6.24.orig/fs/stat.c linux-source-2.6.24/fs/stat.c
---- linux-source-2.6.24.orig/fs/stat.c	2009-01-21 01:11:46.000000000 -0700
-+++ linux-source-2.6.24/fs/stat.c	2009-01-21 01:22:18.000000000 -0700
-@@ -260,8 +260,8 @@ SYSCALL_DEFINE2(newlstat, char __user *,
+diff -urpN linux-source-2.6.18.orig/fs/stat.c linux-source-2.6.18/fs/stat.c
+--- linux-source-2.6.18.orig/fs/stat.c	2009-01-25 23:03:51.000000000 -0700
++++ linux-source-2.6.18/fs/stat.c	2009-01-26 08:42:33.000000000 -0700
+@@ -263,8 +263,8 @@ SYSCALL_DEFINE2(newlstat, char __user *,
  }
  
  #if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
@@ -70,7 +80,7 @@
  {
  	struct kstat stat;
  	int error = -EINVAL;
-@@ -293,8 +293,8 @@ SYSCALL_DEFINE2(newfstat, unsigned int, 
+@@ -296,8 +296,8 @@ SYSCALL_DEFINE2(newfstat, unsigned int, 
  	return error;
  }
  
@@ -81,7 +91,7 @@
  {
  	struct nameidata nd;
  	int error;
-@@ -399,8 +399,8 @@ SYSCALL_DEFINE2(fstat64, unsigned long, 
+@@ -400,8 +400,8 @@ SYSCALL_DEFINE2(fstat64, unsigned long, 
  	return error;
  }
  
@@ -92,33 +102,10 @@
  {
  	struct kstat stat;
  	int error = -EINVAL;
-diff -urpN linux-source-2.6.24.orig/fs/utimes.c linux-source-2.6.24/fs/utimes.c
---- linux-source-2.6.24.orig/fs/utimes.c	2009-01-21 01:13:03.000000000 -0700
-+++ linux-source-2.6.24/fs/utimes.c	2009-01-21 01:22:18.000000000 -0700
-@@ -155,7 +155,8 @@ out:
- 	return error;
- }
- 
--asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags)
-+SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename,
-+		struct timespec __user *, utimes, int, flags)
- {
- 	struct timespec tstimes[2];
- 
-@@ -180,7 +181,8 @@ asmlinkage long sys_utimensat(int dfd, c
- 	return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
- }
- 
--asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes)
-+SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename,
-+		struct timeval __user *, utimes)
- {
- 	struct timeval times[2];
- 	struct timespec tstimes[2];
-diff -urpN linux-source-2.6.24.orig/kernel/fork.c linux-source-2.6.24/kernel/fork.c
---- linux-source-2.6.24.orig/kernel/fork.c	2009-01-21 01:01:27.000000000 -0700
-+++ linux-source-2.6.24/kernel/fork.c	2009-01-21 01:22:18.000000000 -0700
-@@ -1638,7 +1638,7 @@ static int unshare_semundo(unsigned long
+diff -urpN linux-source-2.6.18.orig/kernel/fork.c linux-source-2.6.18/kernel/fork.c
+--- linux-source-2.6.18.orig/kernel/fork.c	2009-01-25 21:07:13.000000000 -0700
++++ linux-source-2.6.18/kernel/fork.c	2009-01-26 08:42:38.000000000 -0700
+@@ -1588,7 +1588,7 @@ static int unshare_semundo(unsigned long
   * constructed. Here we are modifying the current, active,
   * task_struct.
   */

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch	Mon Feb  9 15:47:53 2009
@@ -10,28 +10,15 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/signalfd.c linux-source-2.6.24/fs/signalfd.c
---- linux-source-2.6.24.orig/fs/signalfd.c	2008-10-10 00:11:28.000000000 -0600
-+++ linux-source-2.6.24/fs/signalfd.c	2009-01-21 01:22:49.000000000 -0700
-@@ -204,7 +204,8 @@ static const struct file_operations sign
- 	.read		= signalfd_read,
- };
+diff -urpN linux-source-2.6.18.orig/fs/splice.c linux-source-2.6.18/fs/splice.c
+--- linux-source-2.6.18.orig/fs/splice.c	2008-12-25 14:04:14.000000000 -0700
++++ linux-source-2.6.18/fs/splice.c	2009-01-26 08:47:27.000000000 -0700
+@@ -1277,8 +1277,8 @@ static long do_vmsplice(struct file *fil
+ 	return splice_to_pipe(pipe, &spd);
+ }
  
--asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, size_t sizemask)
-+SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
-+		size_t, sizemask)
- {
- 	int error;
- 	sigset_t sigmask;
-diff -urpN linux-source-2.6.24.orig/fs/splice.c linux-source-2.6.24/fs/splice.c
---- linux-source-2.6.24.orig/fs/splice.c	2008-10-10 00:11:29.000000000 -0600
-+++ linux-source-2.6.24/fs/splice.c	2009-01-21 01:22:49.000000000 -0700
-@@ -1478,8 +1478,8 @@ static long vmsplice_to_pipe(struct file
-  * Currently we punt and implement it as a normal copy, see pipe_to_user().
-  *
-  */
 -asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
 -			     unsigned long nr_segs, unsigned int flags)
 +SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov,
@@ -39,7 +26,7 @@
  {
  	struct file *file;
  	long error;
-@@ -1504,9 +1504,9 @@ asmlinkage long sys_vmsplice(int fd, con
+@@ -1296,9 +1296,9 @@ asmlinkage long sys_vmsplice(int fd, con
  	return error;
  }
  
@@ -52,7 +39,7 @@
  {
  	long error;
  	struct file *in, *out;
-@@ -1724,7 +1724,7 @@ static long do_tee(struct file *in, stru
+@@ -1523,7 +1523,7 @@ static long do_tee(struct file *in, stru
  	return ret;
  }
  
@@ -61,10 +48,10 @@
  {
  	struct file *in;
  	int error, fput_in;
-diff -urpN linux-source-2.6.24.orig/kernel/futex.c linux-source-2.6.24/kernel/futex.c
---- linux-source-2.6.24.orig/kernel/futex.c	2009-01-21 01:01:27.000000000 -0700
-+++ linux-source-2.6.24/kernel/futex.c	2009-01-21 01:22:49.000000000 -0700
-@@ -1854,9 +1854,8 @@ error:
+diff -urpN linux-source-2.6.18.orig/kernel/futex.c linux-source-2.6.18/kernel/futex.c
+--- linux-source-2.6.18.orig/kernel/futex.c	2009-01-25 21:07:13.000000000 -0700
++++ linux-source-2.6.18/kernel/futex.c	2009-01-26 08:46:56.000000000 -0700
+@@ -1590,9 +1590,8 @@ error:
   * @head: pointer to the list-head
   * @len: length of the list-head, as userspace expects
   */
@@ -74,32 +61,18 @@
 +SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head,
 +		size_t, len)
  {
- 	if (!futex_cmpxchg_enabled)
- 		return -ENOSYS;
-@@ -1877,9 +1876,9 @@ sys_set_robust_list(struct robust_list_h
+ 	/*
+ 	 * The kernel knows only one size for now:
+@@ -1611,9 +1610,9 @@ sys_set_robust_list(struct robust_list_h
   * @head_ptr: pointer to a list-head pointer, the kernel fills it in
   * @len_ptr: pointer to a length field, the kernel fills in the header size
   */
 -asmlinkage long
--sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr,
+-sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr,
 -		    size_t __user *len_ptr)
 +SYSCALL_DEFINE3(get_robust_list, int, pid,
-+		struct robust_list_head __user * __user *, head_ptr,
++		struct robust_list_head __user **, head_ptr,
 +		size_t __user *, len_ptr)
  {
- 	struct robust_list_head __user *head;
+ 	struct robust_list_head *head;
  	unsigned long ret;
-diff -urpN linux-source-2.6.24.orig/kernel/sys.c linux-source-2.6.24/kernel/sys.c
---- linux-source-2.6.24.orig/kernel/sys.c	2009-01-21 01:18:10.000000000 -0700
-+++ linux-source-2.6.24/kernel/sys.c	2009-01-21 01:22:49.000000000 -0700
-@@ -1751,8 +1751,8 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
- 	return error;
- }
- 
--asmlinkage long sys_getcpu(unsigned __user *cpup, unsigned __user *nodep,
--			   struct getcpu_cache __user *unused)
-+SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep,
-+		struct getcpu_cache __user *, unused)
- {
- 	int err = 0;
- 	int cpu = raw_smp_processor_id();

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch	Mon Feb  9 15:47:53 2009
@@ -10,24 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/eventfd.c linux-source-2.6.24/fs/eventfd.c
---- linux-source-2.6.24.orig/fs/eventfd.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/fs/eventfd.c	2009-01-21 01:25:43.000000000 -0700
-@@ -197,7 +197,7 @@ struct file *eventfd_fget(int fd)
- 	return file;
- }
- 
--asmlinkage long sys_eventfd(unsigned int count)
-+SYSCALL_DEFINE1(eventfd, unsigned int, count)
- {
- 	int error, fd;
- 	struct eventfd_ctx *ctx;
-diff -urpN linux-source-2.6.24.orig/fs/readdir.c linux-source-2.6.24/fs/readdir.c
---- linux-source-2.6.24.orig/fs/readdir.c	2009-01-21 01:14:06.000000000 -0700
-+++ linux-source-2.6.24/fs/readdir.c	2009-01-21 01:25:43.000000000 -0700
-@@ -97,7 +97,8 @@ efault:
+diff -urpN linux-source-2.6.18.orig/fs/readdir.c linux-source-2.6.18/fs/readdir.c
+--- linux-source-2.6.18.orig/fs/readdir.c	2009-01-25 23:10:13.000000000 -0700
++++ linux-source-2.6.18/fs/readdir.c	2009-01-26 08:49:49.000000000 -0700
+@@ -94,7 +94,8 @@ efault:
  	return -EFAULT;
  }
  
@@ -37,10 +25,10 @@
  {
  	int error;
  	struct file * file;
-diff -urpN linux-source-2.6.24.orig/fs/select.c linux-source-2.6.24/fs/select.c
---- linux-source-2.6.24.orig/fs/select.c	2009-01-21 01:15:04.000000000 -0700
-+++ linux-source-2.6.24/fs/select.c	2009-01-21 01:26:21.000000000 -0700
-@@ -512,8 +512,9 @@ sticky:
+diff -urpN linux-source-2.6.18.orig/fs/select.c linux-source-2.6.18/fs/select.c
+--- linux-source-2.6.18.orig/fs/select.c	2009-01-25 23:16:04.000000000 -0700
++++ linux-source-2.6.18/fs/select.c	2009-01-26 08:49:49.000000000 -0700
+@@ -520,8 +520,9 @@ sticky:
   * which has a pointer to the sigset_t itself followed by a size_t containing
   * the sigset size.
   */
@@ -52,7 +40,7 @@
  {
  	size_t sigsetsize = 0;
  	sigset_t __user *up = NULL;
-@@ -760,9 +761,9 @@ SYSCALL_DEFINE3(poll, struct pollfd __us
+@@ -765,9 +766,9 @@ SYSCALL_DEFINE3(poll, struct pollfd __us
  }
  
  #ifdef TIF_RESTORE_SIGMASK
@@ -65,12 +53,12 @@
  {
  	sigset_t ksigmask, sigsaved;
  	struct timespec ts;
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 00:45:15.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 01:25:43.000000000 -0700
-@@ -668,6 +668,13 @@ asmlinkage long sys_timerfd(int ufd, int
- asmlinkage long sys_eventfd(unsigned int count);
- asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-26 08:49:49.000000000 -0700
+@@ -653,5 +653,12 @@ asmlinkage long sys_get_robust_list(int 
+ asmlinkage long sys_set_robust_list(struct robust_list_head __user *head,
+ 				    size_t len);
  asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
 +asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *,
 +			     fd_set __user *, struct timespec __user *,
@@ -80,12 +68,11 @@
 +			  size_t);
 +asmlinkage long sys_pipe2(int __user *, int);
  
- int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
- 
-diff -urpN linux-source-2.6.24.orig/kernel/signal.c linux-source-2.6.24/kernel/signal.c
---- linux-source-2.6.24.orig/kernel/signal.c	2009-01-21 01:02:55.000000000 -0700
-+++ linux-source-2.6.24/kernel/signal.c	2009-01-21 01:25:43.000000000 -0700
-@@ -2475,11 +2475,10 @@ out:
+ #endif
+diff -urpN linux-source-2.6.18.orig/kernel/signal.c linux-source-2.6.18/kernel/signal.c
+--- linux-source-2.6.18.orig/kernel/signal.c	2009-01-25 21:07:37.000000000 -0700
++++ linux-source-2.6.18/kernel/signal.c	2009-01-26 08:49:49.000000000 -0700
+@@ -2455,11 +2455,10 @@ out:
  #endif /* __ARCH_WANT_SYS_SIGPROCMASK */
  
  #ifdef __ARCH_WANT_SYS_RT_SIGACTION
@@ -101,7 +88,7 @@
  {
  	struct k_sigaction new_sa, old_sa;
  	int ret = -EINVAL;
-@@ -2562,7 +2561,7 @@ SYSCALL_DEFINE0(pause)
+@@ -2542,7 +2541,7 @@ SYSCALL_DEFINE0(pause)
  #endif
  
  #ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
@@ -110,17 +97,3 @@
  {
  	sigset_t newset;
  
-diff -urpN linux-source-2.6.24.orig/fs/timerfd.c linux-source-2.6.24/fs/timerfd.c
---- linux-source-2.6.24.orig/fs/timerfd.c	2009-01-21 01:25:43.000000000 -0700
-+++ linux-source-2.6.24/fs/timerfd.c	2009-01-21 01:30:08.000000000 -0700
-@@ -150,8 +150,8 @@ static const struct file_operations time
- 	.read		= timerfd_read,
- };
- 
--asmlinkage long sys_timerfd(int ufd, int clockid, int flags,
--			    const struct itimerspec __user *utmr)
-+SYSCALL_DEFINE4(timerfd, int, ufd, int, clockid, int, flags,
-+		const struct itimerspec __user *, utmr)
- {
- 	int error;
- 	struct timerfd_ctx *ctx;

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch	Mon Feb  9 15:47:53 2009
@@ -10,12 +10,12 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/fs/pipe.c linux-source-2.6.24/fs/pipe.c
---- linux-source-2.6.24.orig/fs/pipe.c	2009-01-21 00:29:57.000000000 -0700
-+++ linux-source-2.6.24/fs/pipe.c	2009-01-21 01:31:29.000000000 -0700
-@@ -1079,7 +1079,7 @@ int do_pipe(int *fd)
+diff -urpN linux-source-2.6.18.orig/fs/pipe.c linux-source-2.6.18/fs/pipe.c
+--- linux-source-2.6.18.orig/fs/pipe.c	2009-01-26 08:51:59.000000000 -0700
++++ linux-source-2.6.18/fs/pipe.c	2009-01-26 08:52:31.000000000 -0700
+@@ -978,7 +978,7 @@ no_files:
   * sys_pipe() is the normal C calling standard for creating
   * a pipe. It's not the way Unix traditionally does this, though.
   */
@@ -24,14 +24,13 @@
  {
  	int fd[2];
  	int error;
-diff -urpN linux-source-2.6.24.orig/include/linux/syscalls.h linux-source-2.6.24/include/linux/syscalls.h
---- linux-source-2.6.24.orig/include/linux/syscalls.h	2009-01-21 01:25:43.000000000 -0700
-+++ linux-source-2.6.24/include/linux/syscalls.h	2009-01-21 01:31:29.000000000 -0700
-@@ -675,6 +675,7 @@ asmlinkage long sys_ppoll(struct pollfd 
+diff -urpN linux-source-2.6.18.orig/include/linux/syscalls.h linux-source-2.6.18/include/linux/syscalls.h
+--- linux-source-2.6.18.orig/include/linux/syscalls.h	2009-01-26 08:49:49.000000000 -0700
++++ linux-source-2.6.18/include/linux/syscalls.h	2009-01-26 08:52:31.000000000 -0700
+@@ -660,5 +660,6 @@ asmlinkage long sys_ppoll(struct pollfd 
  			  struct timespec __user *, const sigset_t __user *,
  			  size_t);
  asmlinkage long sys_pipe2(int __user *, int);
 +asmlinkage long sys_pipe(int __user *);
  
- int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
- 
+ #endif

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043pre1-missing-include.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0043pre1-missing-include.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0043pre1-missing-include.patch	Mon Feb  9 15:47:53 2009
@@ -1,10 +1,10 @@
-diff -urpN linux-source-2.6.24.orig/fs/pipe.c linux-source-2.6.24/fs/pipe.c
---- linux-source-2.6.24.orig/fs/pipe.c	2009-01-21 09:02:19.000000000 -0700
-+++ linux-source-2.6.24/fs/pipe.c	2009-01-21 09:03:06.000000000 -0700
-@@ -17,6 +17,7 @@
+diff -urpN linux-source-2.6.18.orig/fs/pipe.c linux-source-2.6.18/fs/pipe.c
+--- linux-source-2.6.18.orig/fs/pipe.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/fs/pipe.c	2009-01-26 08:51:59.000000000 -0700
+@@ -16,6 +16,7 @@
+ #include <linux/uio.h>
  #include <linux/highmem.h>
  #include <linux/pagemap.h>
- #include <linux/audit.h>
 +#include <linux/syscalls.h>
  
  #include <asm/uaccess.h>

Modified: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
==============================================================================
--- /dists/etch-security/linux-2.6.24/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch	Mon Feb  9 15:47:53 2009
@@ -10,32 +10,32 @@
 Signed-off-by: Heiko Carstens <heiko.carstens at de.ibm.com>
 Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
 
-Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf at debian.org>
 
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/compat_wrapper.S linux-source-2.6.24/arch/s390/kernel/compat_wrapper.S
---- linux-source-2.6.24.orig/arch/s390/kernel/compat_wrapper.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/compat_wrapper.S	2009-01-21 01:31:52.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/compat_wrapper.S linux-source-2.6.18/arch/s390/kernel/compat_wrapper.S
+--- linux-source-2.6.18.orig/arch/s390/kernel/compat_wrapper.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/kernel/compat_wrapper.S	2009-01-26 08:52:53.000000000 -0700
 @@ -549,7 +549,7 @@ sys32_setdomainname_wrapper:
- 	.globl	sys32_newuname_wrapper
+ 	.globl  sys32_newuname_wrapper 
  sys32_newuname_wrapper:
  	llgtr	%r2,%r2			# struct new_utsname *
 -	jg	s390x_newuname		# branch to system call
 +	jg	sys_s390_newuname	# branch to system call
  
- 	.globl	compat_sys_adjtimex_wrapper
+ 	.globl  compat_sys_adjtimex_wrapper
  compat_sys_adjtimex_wrapper:
 @@ -617,7 +617,7 @@ sys32_sysfs_wrapper:
- 	.globl	sys32_personality_wrapper
+ 	.globl  sys32_personality_wrapper 
  sys32_personality_wrapper:
  	llgfr	%r2,%r2			# unsigned long
 -	jg	s390x_personality	# branch to system call
 +	jg	sys_s390_personality	# branch to system call
  
- 	.globl	sys32_setfsuid16_wrapper
+ 	.globl  sys32_setfsuid16_wrapper 
  sys32_setfsuid16_wrapper:
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/process.c linux-source-2.6.24/arch/s390/kernel/process.c
---- linux-source-2.6.24.orig/arch/s390/kernel/process.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/process.c	2009-01-21 01:32:50.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/process.c linux-source-2.6.18/arch/s390/kernel/process.c
+--- linux-source-2.6.18.orig/arch/s390/kernel/process.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/kernel/process.c	2009-01-26 09:08:21.000000000 -0700
 @@ -36,7 +36,7 @@
  #include <linux/init.h>
  #include <linux/module.h>
@@ -45,44 +45,43 @@
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
  #include <asm/system.h>
-@@ -298,13 +298,13 @@ int copy_thread(int nr, unsigned long cl
+@@ -279,12 +279,12 @@ int copy_thread(int nr, unsigned long cl
          return 0;
  }
  
--asmlinkage long sys_fork(void)
-+SYSCALL_DEFINE0(fork)
+-asmlinkage long sys_fork(struct pt_regs regs)
++SYSCALL_DEFINE1(fork, struct pt_regs, regs)
  {
- 	struct pt_regs *regs = task_pt_regs(current);
- 	return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL);
+ 	return do_fork(SIGCHLD, regs.gprs[15], &regs, 0, NULL, NULL);
  }
  
--asmlinkage long sys_clone(void)
-+SYSCALL_DEFINE0(clone)
+-asmlinkage long sys_clone(struct pt_regs regs)
++SYSCALL_DEFINE1(clone, struct pt_regs, regs)
  {
- 	struct pt_regs *regs = task_pt_regs(current);
- 	unsigned long clone_flags;
-@@ -331,7 +331,7 @@ asmlinkage long sys_clone(void)
+         unsigned long clone_flags;
+         unsigned long newsp;
+@@ -310,7 +310,7 @@ asmlinkage long sys_clone(struct pt_regs
   * do not have enough call-clobbered registers to hold all
   * the information you need.
   */
--asmlinkage long sys_vfork(void)
-+SYSCALL_DEFINE0(vfork)
+-asmlinkage long sys_vfork(struct pt_regs regs)
++SYSCALL_DEFINE1(vfork, struct pt_regs, regs)
  {
- 	struct pt_regs *regs = task_pt_regs(current);
  	return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
-@@ -351,7 +351,7 @@ asmlinkage void execve_tail(void)
+ 		       regs.gprs[15], &regs, 0, NULL, NULL);
+@@ -319,7 +319,7 @@ asmlinkage long sys_vfork(struct pt_regs
  /*
   * sys_execve() executes a new program.
   */
--asmlinkage long sys_execve(void)
-+SYSCALL_DEFINE0(execve)
+-asmlinkage long sys_execve(struct pt_regs regs)
++SYSCALL_DEFINE1(execve, struct pt_regs, regs)
  {
- 	struct pt_regs *regs = task_pt_regs(current);
- 	char *filename;
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/signal.c linux-source-2.6.24/arch/s390/kernel/signal.c
---- linux-source-2.6.24.orig/arch/s390/kernel/signal.c	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/signal.c	2009-01-21 01:31:56.000000000 -0700
-@@ -24,6 +24,7 @@
+         int error;
+         char * filename;
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/signal.c linux-source-2.6.18/arch/s390/kernel/signal.c
+--- linux-source-2.6.18.orig/arch/s390/kernel/signal.c	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/kernel/signal.c	2009-01-26 08:54:25.000000000 -0700
+@@ -25,6 +25,7 @@
  #include <linux/tty.h>
  #include <linux/personality.h>
  #include <linux/binfmts.h>
@@ -90,7 +89,7 @@
  #include <asm/ucontext.h>
  #include <asm/uaccess.h>
  #include <asm/lowcore.h>
-@@ -51,8 +52,7 @@ typedef struct 
+@@ -52,8 +53,7 @@ typedef struct 
  /*
   * Atomically swap in the new signal mask, and wait for a signal.
   */
@@ -100,7 +99,7 @@
  {
  	mask &= _BLOCKABLE;
  	spin_lock_irq(&current->sighand->siglock);
-@@ -68,9 +68,8 @@ sys_sigsuspend(int history0, int history
+@@ -69,9 +69,8 @@ sys_sigsuspend(int history0, int history
  	return -ERESTARTNOHAND;
  }
  
@@ -112,45 +111,21 @@
  {
  	struct k_sigaction new_ka, old_ka;
  	int ret;
-@@ -100,15 +99,13 @@ sys_sigaction(int sig, const struct old_
+@@ -101,9 +100,8 @@ sys_sigaction(int sig, const struct old_
  	return ret;
  }
  
 -asmlinkage long
--sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
-+SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss,
-+		stack_t __user *, uoss)
+-sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
+-					struct pt_regs *regs)
++SYSCALL_DEFINE3(sigaltstack, const stack_t __user *, uss,
++		stack_t __user *, uoss, struct pt_regs *, regs)
  {
- 	struct pt_regs *regs = task_pt_regs(current);
  	return do_sigaltstack(uss, uoss, regs->gprs[15]);
  }
- 
--
--
- /* Returns non-zero on fault. */
- static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
- {
-@@ -162,7 +159,7 @@ static int restore_sigregs(struct pt_reg
- 	return 0;
- }
- 
--asmlinkage long sys_sigreturn(void)
-+SYSCALL_DEFINE0(sigreturn)
- {
- 	struct pt_regs *regs = task_pt_regs(current);
- 	sigframe __user *frame = (sigframe __user *)regs->gprs[15];
-@@ -189,7 +186,7 @@ badframe:
- 	return 0;
- }
- 
--asmlinkage long sys_rt_sigreturn(void)
-+SYSCALL_DEFINE0(rt_sigreturn)
- {
- 	struct pt_regs *regs = task_pt_regs(current);
- 	rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/syscalls.S linux-source-2.6.24/arch/s390/kernel/syscalls.S
---- linux-source-2.6.24.orig/arch/s390/kernel/syscalls.S	2008-01-24 15:58:37.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/syscalls.S	2009-01-21 01:31:56.000000000 -0700
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/syscalls.S linux-source-2.6.18/arch/s390/kernel/syscalls.S
+--- linux-source-2.6.18.orig/arch/s390/kernel/syscalls.S	2006-09-19 21:42:06.000000000 -0600
++++ linux-source-2.6.18/arch/s390/kernel/syscalls.S	2009-01-26 08:52:53.000000000 -0700
 @@ -98,7 +98,7 @@ SYSCALL(sys_uselib,sys_uselib,sys32_usel
  SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper)
  SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper)
@@ -161,8 +136,8 @@
  SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper)
  SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper)
 @@ -130,7 +130,7 @@ SYSCALL(sys_fsync,sys_fsync,sys32_fsync_
- SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
- SYSCALL(sys_clone,sys_clone,sys32_clone)			/* 120 */
+ SYSCALL(sys_sigreturn_glue,sys_sigreturn_glue,sys32_sigreturn_glue)
+ SYSCALL(sys_clone_glue,sys_clone_glue,sys32_clone_glue)		/* 120 */
  SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
 -SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper)
 +SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper)
@@ -196,28 +171,18 @@
  SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
  SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
  SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper)
-@@ -322,7 +322,7 @@ NI_SYSCALL							/* 310 sys_move_pages *
- SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper)
- SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper)
- SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper)
--SYSCALL(s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
-+SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
- SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper)	/* 315 */
- SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
- SYSCALL(sys_timerfd,sys_timerfd,compat_sys_timerfd_wrapper)
-diff -urpN linux-source-2.6.24.orig/arch/s390/kernel/sys_s390.c linux-source-2.6.24/arch/s390/kernel/sys_s390.c
---- linux-source-2.6.24.orig/arch/s390/kernel/sys_s390.c	2009-01-21 00:27:49.000000000 -0700
-+++ linux-source-2.6.24/arch/s390/kernel/sys_s390.c	2009-01-21 01:33:16.000000000 -0700
-@@ -29,7 +29,7 @@
+diff -urpN linux-source-2.6.18.orig/arch/s390/kernel/sys_s390.c linux-source-2.6.18/arch/s390/kernel/sys_s390.c
+--- linux-source-2.6.18.orig/arch/s390/kernel/sys_s390.c	2009-01-25 21:05:36.000000000 -0700
++++ linux-source-2.6.18/arch/s390/kernel/sys_s390.c	2009-01-26 09:11:20.000000000 -0700
+@@ -27,6 +27,7 @@
+ #include <linux/file.h>
+ #include <linux/utsname.h>
  #include <linux/personality.h>
- #include <linux/unistd.h>
- #include <linux/ipc.h>
--
 +#include <linux/syscalls.h>
- #include <asm/uaccess.h>
  
- /* common code for old and new mmaps */
-@@ -74,7 +74,7 @@ struct mmap_arg_struct {
+ #include <asm/uaccess.h>
+ #include <asm/ipc.h>
+@@ -73,7 +74,7 @@ struct mmap_arg_struct {
  	unsigned long offset;
  };
  
@@ -226,7 +191,7 @@
  {
  	struct mmap_arg_struct a;
  	int error = -EFAULT;
-@@ -86,7 +86,7 @@ out:
+@@ -85,7 +86,7 @@ out:
  	return error;
  }
  
@@ -235,7 +200,7 @@
  {
  	struct mmap_arg_struct a;
  	long error = -EFAULT;
-@@ -127,8 +127,8 @@ asmlinkage long old_select(struct sel_ar
+@@ -126,8 +127,8 @@ asmlinkage long old_select(struct sel_ar
   *
   * This is really horribly ugly.
   */
@@ -246,7 +211,7 @@
  {
          struct ipc_kludge tmp;
  	int ret;
-@@ -194,7 +194,7 @@ asmlinkage long sys_ipc(uint call, int f
+@@ -193,7 +194,7 @@ asmlinkage long sys_ipc(uint call, int f
  }
  
  #ifdef CONFIG_64BIT
@@ -255,7 +220,7 @@
  {
  	int ret = sys_newuname(name);
  
-@@ -205,7 +205,7 @@ asmlinkage long s390x_newuname(struct ne
+@@ -204,7 +205,7 @@ asmlinkage long s390x_newuname(struct ne
  	return ret;
  }
  
@@ -264,7 +229,7 @@
  {
  	int ret;
  
-@@ -224,15 +224,13 @@ asmlinkage long s390x_personality(unsign
+@@ -223,15 +224,13 @@ asmlinkage long s390x_personality(unsign
   */
  #ifndef CONFIG_64BIT
  
@@ -282,7 +247,7 @@
  struct fadvise64_64_args {
  	int fd;
  	long long offset;
-@@ -240,8 +238,7 @@ struct fadvise64_64_args {
+@@ -239,8 +238,7 @@ struct fadvise64_64_args {
  	int advice;
  };
  
@@ -292,32 +257,3 @@
  {
  	struct fadvise64_64_args a;
  
-@@ -250,7 +247,6 @@ s390_fadvise64_64(struct fadvise64_64_ar
- 	return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
- }
- 
--#ifndef CONFIG_64BIT
- /*
-  * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last
-  * 64 bit argument "len" is split into the upper and lower 32 bits. The
-@@ -263,9 +259,19 @@ s390_fadvise64_64(struct fadvise64_64_ar
-  * to
-  *   %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
-  */
--asmlinkage long s390_fallocate(int fd, int mode, loff_t offset,
-+SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset,
- 			       u32 len_high, u32 len_low)
- {
- 	return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
- }
-+#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
-+asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
-+				   long len_high, long len_low)
-+{
-+	return SYSC_s390_fallocate((int) fd, (int) mode, offset,
-+				   (u32) len_high, (u32) len_low);
-+}
-+SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
-+#endif
-+
- #endif

Added: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0090-i386-remove-sys_pipe-proto.patch
==============================================================================
--- (empty file)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0090-i386-remove-sys_pipe-proto.patch	Mon Feb  9 15:47:53 2009
@@ -0,0 +1,11 @@
+diff -urpN a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h
+--- a/include/asm-i386/unistd.h	2009-01-28 22:46:43.000000000 -0700
++++ b/include/asm-i386/unistd.h	2009-01-28 23:12:27.000000000 -0700
+@@ -478,7 +478,6 @@ asmlinkage int sys_execve(struct pt_regs
+ asmlinkage int sys_clone(struct pt_regs regs);
+ asmlinkage int sys_fork(struct pt_regs regs);
+ asmlinkage int sys_vfork(struct pt_regs regs);
+-asmlinkage int sys_pipe(unsigned long __user *fildes);
+ asmlinkage long sys_iopl(unsigned long unused);
+ struct sigaction;
+ asmlinkage long sys_rt_sigaction(int sig,

Added: dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0091-avoid-abi-change.patch
==============================================================================
--- (empty file)
+++ dists/etch-security/linux-2.6/debian/patches/bugfix/all/CVE-2009-0029/0091-avoid-abi-change.patch	Mon Feb  9 15:47:53 2009
@@ -0,0 +1,31 @@
+diff -urpN a/fs/read_write.c b/fs/read_write.c
+--- a/fs/read_write.c	2009-02-03 23:17:08.000000000 -0700
++++ b/fs/read_write.c	2009-02-04 21:31:42.000000000 -0700
+@@ -339,7 +339,12 @@ static inline void file_pos_write(struct
+ 	file->f_pos = pos;
+ }
+ 
++/*asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)*/
++#ifndef __GENKSYMS__
+ SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
++#else
++asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
++#endif
+ {
+ 	struct file *file;
+ 	ssize_t ret = -EBADF;
+diff -urpN a/include/linux/syscalls.h b/include/linux/syscalls.h
+--- a/include/linux/syscalls.h	2009-02-04 21:33:34.000000000 -0700
++++ b/include/linux/syscalls.h	2009-02-04 21:53:44.000000000 -0700
+@@ -439,7 +439,11 @@ asmlinkage long sys_lseek(unsigned int f
+ asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
+ 			unsigned long offset_low, loff_t __user *result,
+ 			unsigned int origin);
++#ifndef __GENKSYMS__
+ asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);
++#else
++asmlinkage ssize_t sys_read(unsigned int fd, char __user *buf, size_t count);
++#endif
+ asmlinkage long sys_readahead(int fd, loff_t offset, size_t count);
+ asmlinkage long sys_readv(unsigned long fd,
+ 			  const struct iovec __user *vec,

Modified: dists/etch-security/linux-2.6/debian/patches/features/all/vserver/vs2.0.2.2-rc9.patch
==============================================================================
--- dists/etch-security/linux-2.6/debian/patches/features/all/vserver/vs2.0.2.2-rc9.patch	(original)
+++ dists/etch-security/linux-2.6/debian/patches/features/all/vserver/vs2.0.2.2-rc9.patch	Mon Feb  9 15:47:53 2009
@@ -1041,7 +1041,7 @@
  SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
 -NI_SYSCALL							/* reserved for vserver */
 +SYSCALL(sys_vserver,sys_vserver,sys32_vserver)
- SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
+ SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
  SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
  SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
 --- linux-2.6.18.5/arch/sh/Kconfig	2006-09-20 16:58:01 +0200
@@ -13840,25 +13840,25 @@
  
  /**
   * sys_getpid - return the thread group id of the current process
-@@ -1320,7 +1316,7 @@ asmlinkage unsigned long sys_alarm(unsig
+@@ -1320,7 +1316,7 @@ SYSCALL_DEFINE1(alarm, unsigned int, sec
   */
- asmlinkage long sys_getpid(void)
+ SYSCALL_DEFINE0(getpid)
  {
 -	return current->tgid;
 +	return vx_map_tgid(current->tgid);
  }
  
  /*
-@@ -1336,10 +1332,23 @@ asmlinkage long sys_getppid(void)
+@@ -1336,10 +1332,23 @@ SYSCALL_DEFINE0(getppid)
  	rcu_read_lock();
  	pid = rcu_dereference(current->real_parent)->tgid;
  	rcu_read_unlock();
 +	return vx_map_pid(pid);
 +}
++
++#ifdef __alpha__
  
 -	return pid;
-+#ifdef __alpha__
-+
 +/*
 + * The Alpha uses getxpid, getxuid, and getxgid instead.
 + */
@@ -13871,7 +13871,7 @@
  
 +#else /* _alpha_ */
 +
- asmlinkage long sys_getuid(void)
+ SYSCALL_DEFINE0(getuid)
  {
  	/* Only we change this so SMP safe */
 @@ -1500,6 +1509,8 @@ asmlinkage long sys_sysinfo(struct sysin
@@ -20347,7 +20347,7 @@
  		ret = -EAGAIN;
 @@ -123,7 +124,7 @@ static int do_mlock(unsigned long start,
  
- asmlinkage long sys_mlock(unsigned long start, size_t len)
+ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
  {
 -	unsigned long locked;
 +	unsigned long locked, grow;

Modified: dists/etch-security/linux-2.6/debian/patches/series/23etch2
==============================================================================
--- dists/etch-security/linux-2.6/debian/patches/series/23etch2	(original)
+++ dists/etch-security/linux-2.6/debian/patches/series/23etch2	Mon Feb  9 15:47:53 2009
@@ -1,3 +1,55 @@
 + bugfix/all/watchdog-ib700wdt-buffer_underflow.patch
 + bugfix/all/nfs-remove-buggy-lock-if-signalled-case.patch
 + bugfix/all/sctp-avoid-memory-overflow.patch
++ bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch
++ bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch
++ bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch
++ bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch
++ bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch
++ bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch
++ bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch
++ bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch
++ bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch
++ bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch
++ bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch
++ bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch
++ bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch
++ bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch
++ bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch
++ bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch
++ bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch
++ bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch
++ bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch
++ bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch
++ bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch
++ bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch
++ bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch
++ bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch
++ bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch
++ bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch
++ bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch
++ bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch
++ bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch
++ bugfix/all/CVE-2009-0029/0028-System-call-wrappers-part-18.patch
++ bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch
++ bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch
++ bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch
++ bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch
++ bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch
++ bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch
++ bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch
++ bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch
++ bugfix/all/CVE-2009-0029/0037pre1-missing-include.patch
++ bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch
++ bugfix/all/CVE-2009-0029/0038pre1-missing-include.patch
++ bugfix/all/CVE-2009-0029/0038pre2-missing-include.patch
++ bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch
++ bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch
++ bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch
++ bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch
++ bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch
++ bugfix/all/CVE-2009-0029/0043pre1-missing-include.patch
++ bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch
++ bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
++ bugfix/all/CVE-2009-0029/0090-i386-remove-sys_pipe-proto.patch
++ bugfix/all/CVE-2009-0029/0091-avoid-abi-change.patch



More information about the Kernel-svn-changes mailing list