[kernel] r12586 - in people/dannf/2.6.24+CVE-2009-0029/debian: . patches/bugfix/all/CVE-2009-0029 patches/series
Dann Frazier
dannf at alioth.debian.org
Wed Jan 21 08:39:17 UTC 2009
Author: dannf
Date: Wed Jan 21 08:39:04 2009
New Revision: 12586
Log:
first pass - not yet compile-tested
Added:
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/ (props changed)
- copied from r12585, /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch
Modified:
people/dannf/2.6.24+CVE-2009-0029/debian/changelog
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038pre1-missing-include.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
people/dannf/2.6.24+CVE-2009-0029/debian/patches/series/6~etchnhalf.7etch1
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/changelog
==============================================================================
--- people/dannf/2.6.24+CVE-2009-0029/debian/changelog (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/changelog Wed Jan 21 08:39:04 2009
@@ -7,8 +7,10 @@
* [mips] Fix potential DOS by untrusted user app (CVE-2008-5701)
* sctp: Fix memory overflow (CVE-2009-0065)
* nfs: Fix fcntl/close race (CVE-2008-4307)
+ * Fix sign-extend ABI issue w/ system calls on various 64-bit architectures
+ (CVE-2009-0029)
- -- dann frazier <dannf at debian.org> Tue, 13 Jan 2009 21:56:46 -0700
+ -- dann frazier <dannf at debian.org> Wed, 21 Jan 2009 01:35:50 -0700
linux-2.6.24 (2.6.24-6~etchnhalf.7) stable-security; urgency=high
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0001-Move-compat-system-call-declarations.patch Wed Jan 21 08:39:04 2009
@@ -16,14 +16,14 @@
include/linux/syscalls.h | 12 ------------
2 files changed, 13 insertions(+), 12 deletions(-)
-Adjusted to apply to Debian's 2.6.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/include/linux/compat.h linux-source-2.6.26/include/linux/compat.h
---- linux-source-2.6.26.orig/include/linux/compat.h 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/include/linux/compat.h 2009-01-19 11:09:53.000000000 -0700
-@@ -278,5 +278,18 @@ asmlinkage long compat_sys_timerfd_setti
- asmlinkage long compat_sys_timerfd_gettime(int ufd,
- struct compat_itimerspec __user *otmr);
+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);
+asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
+ __u32 __user *pages,
@@ -40,10 +40,10 @@
+
#endif /* CONFIG_COMPAT */
#endif /* _LINUX_COMPAT_H */
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 11:09:54.000000000 -0700
-@@ -527,11 +527,6 @@ asmlinkage long sys_move_pages(pid_t pid
+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
const int __user *nodes,
int __user *status,
int flags);
@@ -55,7 +55,7 @@
asmlinkage long sys_mbind(unsigned long start, unsigned long len,
unsigned long mode,
unsigned long __user *nmask,
-@@ -579,13 +574,6 @@ asmlinkage long sys_readlinkat(int dfd,
+@@ -578,13 +573,6 @@ asmlinkage long sys_readlinkat(int dfd,
int bufsiz);
asmlinkage long sys_utimensat(int dfd, char __user *filename,
struct timespec __user *utimes, int flags);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0002-Convert-all-system-calls-to-return-a.patch Wed Jan 21 08:39:04 2009
@@ -15,11 +15,11 @@
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.26 by dann frazier <dannf at debian.org)
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org)
-diff -urpN linux-source-2.6.26.orig/fs/read_write.c linux-source-2.6.26/fs/read_write.c
---- linux-source-2.6.26.orig/fs/read_write.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/read_write.c 2009-01-19 11:12:44.000000000 -0700
+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
}
EXPORT_SYMBOL(vfs_llseek);
@@ -29,7 +29,7 @@
{
off_t retval;
struct file * file;
-@@ -350,7 +350,7 @@ static inline void file_pos_write(struct
+@@ -354,7 +354,7 @@ static inline void file_pos_write(struct
file->f_pos = pos;
}
@@ -38,16 +38,16 @@
{
struct file *file;
ssize_t ret = -EBADF;
-@@ -367,7 +367,7 @@ asmlinkage ssize_t sys_read(unsigned int
- return ret;
+@@ -372,7 +372,7 @@ asmlinkage ssize_t sys_read(unsigned int
}
+ EXPORT_UNUSED_SYMBOL_GPL(sys_read); /* to be deleted for 2.6.25 */
-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;
-@@ -384,7 +384,7 @@ asmlinkage ssize_t sys_write(unsigned in
+@@ -389,7 +389,7 @@ asmlinkage ssize_t sys_write(unsigned in
return ret;
}
@@ -56,7 +56,7 @@
size_t count, loff_t pos)
{
struct file *file;
-@@ -405,7 +405,7 @@ asmlinkage ssize_t sys_pread64(unsigned
+@@ -410,7 +410,7 @@ asmlinkage ssize_t sys_pread64(unsigned
return ret;
}
@@ -65,7 +65,7 @@
size_t count, loff_t pos)
{
struct file *file;
-@@ -653,7 +653,7 @@ ssize_t vfs_writev(struct file *file, co
+@@ -660,7 +660,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;
-@@ -674,7 +674,7 @@ sys_readv(unsigned long fd, const struct
+@@ -681,7 +681,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;
-@@ -793,7 +793,7 @@ out:
+@@ -808,7 +808,7 @@ out:
return retval;
}
@@ -92,7 +92,7 @@
{
loff_t pos;
off_t off;
-@@ -812,7 +812,7 @@ asmlinkage ssize_t sys_sendfile(int out_
+@@ -827,7 +827,7 @@ asmlinkage ssize_t sys_sendfile(int out_
return do_sendfile(out_fd, in_fd, NULL, count, 0);
}
@@ -101,55 +101,55 @@
{
loff_t pos;
ssize_t ret;
-diff -urpN linux-source-2.6.26.orig/fs/xattr.c linux-source-2.6.26/fs/xattr.c
---- linux-source-2.6.26.orig/fs/xattr.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/xattr.c 2009-01-19 11:14:17.000000000 -0700
-@@ -349,7 +349,7 @@ getxattr(struct dentry *d, const char __
+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 *
return error;
}
-asmlinkage ssize_t
+asmlinkage long
- sys_getxattr(const char __user *path, const char __user *name,
- void __user *value, size_t size)
+ sys_getxattr(char __user *path, char __user *name, void __user *value,
+ size_t size)
{
-@@ -364,7 +364,7 @@ sys_getxattr(const char __user *path, co
+@@ -325,7 +325,7 @@ sys_getxattr(char __user *path, char __u
return error;
}
-asmlinkage ssize_t
+asmlinkage long
- sys_lgetxattr(const char __user *path, const char __user *name, void __user *value,
+ sys_lgetxattr(char __user *path, char __user *name, void __user *value,
size_t size)
{
-@@ -379,7 +379,7 @@ sys_lgetxattr(const char __user *path, c
+@@ -340,7 +340,7 @@ sys_lgetxattr(char __user *path, char __
return error;
}
-asmlinkage ssize_t
+asmlinkage long
- sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size)
+ sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size)
{
struct file *f;
-@@ -424,7 +424,7 @@ listxattr(struct dentry *d, char __user
+@@ -385,7 +385,7 @@ listxattr(struct dentry *d, char __user
return error;
}
-asmlinkage ssize_t
+asmlinkage long
- sys_listxattr(const char __user *path, char __user *list, size_t size)
+ sys_listxattr(char __user *path, char __user *list, size_t size)
{
struct nameidata nd;
-@@ -438,7 +438,7 @@ sys_listxattr(const char __user *path, c
+@@ -399,7 +399,7 @@ sys_listxattr(char __user *path, char __
return error;
}
-asmlinkage ssize_t
+asmlinkage long
- sys_llistxattr(const char __user *path, char __user *list, size_t size)
+ sys_llistxattr(char __user *path, char __user *list, size_t size)
{
struct nameidata nd;
-@@ -452,7 +452,7 @@ sys_llistxattr(const char __user *path,
+@@ -413,7 +413,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.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 11:09:54.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 11:12:44.000000000 -0700
-@@ -77,7 +77,7 @@ asmlinkage long sys_times(struct tms __u
+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
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);
-@@ -166,7 +166,7 @@ asmlinkage long sys_kexec_load(unsigned
+@@ -167,7 +167,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,
-@@ -196,7 +196,7 @@ asmlinkage long sys_tkill(int pid, int s
+@@ -197,7 +197,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,37 +188,35 @@
asmlinkage long sys_pause(void);
asmlinkage long sys_sync(void);
-@@ -246,29 +246,29 @@ asmlinkage long sys_lsetxattr(const char
- const void __user *value, size_t size, int flags);
- asmlinkage long sys_fsetxattr(int fd, const char __user *name,
- const void __user *value, size_t size, int flags);
--asmlinkage ssize_t sys_getxattr(const char __user *path, const char __user *name,
+@@ -247,27 +247,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);
+-asmlinkage ssize_t sys_getxattr(char __user *path, char __user *name,
- void __user *value, size_t size);
--asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name,
+-asmlinkage ssize_t sys_lgetxattr(char __user *path, char __user *name,
- void __user *value, size_t size);
--asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name,
+-asmlinkage ssize_t sys_fgetxattr(int fd, char __user *name,
- void __user *value, size_t size);
--asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list,
+-asmlinkage ssize_t sys_listxattr(char __user *path, char __user *list,
- size_t size);
--asmlinkage ssize_t sys_llistxattr(const char __user *path, char __user *list,
+-asmlinkage ssize_t sys_llistxattr(char __user *path, char __user *list,
- size_t size);
-asmlinkage ssize_t sys_flistxattr(int fd, char __user *list, size_t size);
-+asmlinkage long sys_getxattr(const char __user *path, const char __user *name,
++asmlinkage long sys_getxattr(char __user *path, char __user *name,
+ void __user *value, size_t size);
-+asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name,
++asmlinkage long sys_lgetxattr(char __user *path, char __user *name,
+ void __user *value, size_t size);
-+asmlinkage long sys_fgetxattr(int fd, const char __user *name,
++asmlinkage long sys_fgetxattr(int fd, char __user *name,
+ void __user *value, size_t size);
-+asmlinkage long sys_listxattr(const char __user *path, char __user *list,
++asmlinkage long sys_listxattr(char __user *path, char __user *list,
+ size_t size);
-+asmlinkage long sys_llistxattr(const char __user *path, char __user *list,
++asmlinkage long sys_llistxattr(char __user *path, char __user *list,
+ size_t size);
+asmlinkage long sys_flistxattr(int fd, char __user *list, size_t size);
- asmlinkage long sys_removexattr(const char __user *path,
- const char __user *name);
- asmlinkage long sys_lremovexattr(const char __user *path,
- const char __user *name);
- asmlinkage long sys_fremovexattr(int fd, const char __user *name);
+ asmlinkage long sys_removexattr(char __user *path, char __user *name);
+ asmlinkage long sys_lremovexattr(char __user *path, char __user *name);
+ asmlinkage long sys_fremovexattr(int fd, char __user *name);
-asmlinkage unsigned long sys_brk(unsigned long brk);
+asmlinkage long sys_brk(unsigned long brk);
@@ -233,7 +231,7 @@
asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
unsigned long prot, unsigned long pgoff,
unsigned long flags);
-@@ -320,10 +320,10 @@ asmlinkage long sys_io_submit(aio_contex
+@@ -319,10 +319,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);
@@ -248,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);
-@@ -367,26 +367,25 @@ asmlinkage long sys_utime(char __user *f
+@@ -366,26 +366,25 @@ asmlinkage long sys_utime(char __user *f
struct utimbuf __user *times);
asmlinkage long sys_utimes(char __user *filename,
struct timeval __user *utimes);
@@ -291,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);
-@@ -473,7 +472,7 @@ asmlinkage long sys_shmctl(int shmid, in
+@@ -472,7 +471,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);
@@ -300,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.26.orig/ipc/mqueue.c linux-source-2.6.26/ipc/mqueue.c
---- linux-source-2.6.26.orig/ipc/mqueue.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/ipc/mqueue.c 2009-01-19 11:12:44.000000000 -0700
-@@ -907,7 +907,7 @@ out:
+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:
return ret;
}
@@ -312,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.26.orig/kernel/exit.c linux-source-2.6.26/kernel/exit.c
---- linux-source-2.6.26.orig/kernel/exit.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/kernel/exit.c 2009-01-19 11:12:44.000000000 -0700
-@@ -1162,9 +1162,11 @@ do_group_exit(int exit_code)
+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)
* wait4()-ing process will get the correct exit code - even if this
* thread is not the thread group leader.
*/
@@ -327,11 +325,11 @@
+ return 0;
}
- static struct pid *task_pid_type(struct task_struct *task, enum pid_type type)
-diff -urpN linux-source-2.6.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 11:12:44.000000000 -0700
-@@ -2532,7 +2532,7 @@ sys_ssetmask(int newmask)
+ 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)
/*
* For backwards compatibility. Functionality superseded by sigaction.
*/
@@ -340,10 +338,10 @@
sys_signal(int sig, __sighandler_t handler)
{
struct k_sigaction new_sa, old_sa;
-diff -urpN linux-source-2.6.26.orig/kernel/timer.c linux-source-2.6.26/kernel/timer.c
---- linux-source-2.6.26.orig/kernel/timer.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/timer.c 2009-01-19 11:12:44.000000000 -0700
-@@ -1082,7 +1082,7 @@ void do_timer(unsigned long ticks)
+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)
* For backwards compatibility? This can be done in libc so Alpha
* and all newer ports shouldn't need it.
*/
@@ -352,10 +350,10 @@
{
return alarm_setitimer(seconds);
}
-diff -urpN linux-source-2.6.26.orig/mm/filemap.c linux-source-2.6.26/mm/filemap.c
---- linux-source-2.6.26.orig/mm/filemap.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/mm/filemap.c 2009-01-19 11:12:44.000000000 -0700
-@@ -1253,7 +1253,7 @@ do_readahead(struct address_space *mappi
+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
return 0;
}
@@ -364,10 +362,10 @@
{
ssize_t ret;
struct file *file;
-diff -urpN linux-source-2.6.26.orig/mm/mmap.c linux-source-2.6.26/mm/mmap.c
---- linux-source-2.6.26.orig/mm/mmap.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/mmap.c 2009-01-19 11:12:44.000000000 -0700
-@@ -240,7 +240,7 @@ static struct vm_area_struct *remove_vma
+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
return next;
}
@@ -376,9 +374,9 @@
{
unsigned long rlim, retval;
unsigned long newbrk, oldbrk;
-diff -urpN linux-source-2.6.26.orig/mm/mremap.c linux-source-2.6.26/mm/mremap.c
---- linux-source-2.6.26.orig/mm/mremap.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/mremap.c 2009-01-19 11:12:44.000000000 -0700
+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:
return ret;
}
@@ -388,10 +386,10 @@
unsigned long old_len, unsigned long new_len,
unsigned long flags, unsigned long new_addr)
{
-diff -urpN linux-source-2.6.26.orig/mm/nommu.c linux-source-2.6.26/mm/nommu.c
---- linux-source-2.6.26.orig/mm/nommu.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/nommu.c 2009-01-19 11:12:44.000000000 -0700
-@@ -334,7 +334,7 @@ EXPORT_SYMBOL(vm_insert_page);
+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);
* to a regular file. in this case, the unmapping will need
* to invoke file system routines that need the global lock.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0003-Rename-old_readdir-to-sys_old_readdi.patch Wed Jan 21 08:39:04 2009
@@ -12,11 +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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+(mn10300 and sh arch-specific changes ignored)
-diff -urpN linux-source-2.6.26.orig/arch/arm/kernel/calls.S linux-source-2.6.26/arch/arm/kernel/calls.S
---- linux-source-2.6.26.orig/arch/arm/kernel/calls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/arm/kernel/calls.S 2009-01-19 11:16:52.000000000 -0700
+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
@@ -98,7 +98,7 @@
CALL(sys_uselib)
CALL(sys_swapon)
@@ -26,10 +27,10 @@
/* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
CALL(sys_munmap)
CALL(sys_truncate)
-diff -urpN linux-source-2.6.26.orig/arch/cris/arch-v10/kernel/entry.S linux-source-2.6.26/arch/cris/arch-v10/kernel/entry.S
---- linux-source-2.6.26.orig/arch/cris/arch-v10/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/cris/arch-v10/kernel/entry.S 2009-01-19 11:16:52.000000000 -0700
-@@ -691,7 +691,7 @@ sys_call_table:
+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:
.long sys_uselib
.long sys_swapon
.long sys_reboot
@@ -38,10 +39,10 @@
.long old_mmap /* 90 */
.long sys_munmap
.long sys_truncate
-diff -urpN linux-source-2.6.26.orig/arch/cris/arch-v32/kernel/entry.S linux-source-2.6.26/arch/cris/arch-v32/kernel/entry.S
---- linux-source-2.6.26.orig/arch/cris/arch-v32/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/cris/arch-v32/kernel/entry.S 2009-01-19 11:16:52.000000000 -0700
-@@ -614,7 +614,7 @@ sys_call_table:
+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
+@@ -609,7 +609,7 @@ sys_call_table:
.long sys_uselib
.long sys_swapon
.long sys_reboot
@@ -50,9 +51,9 @@
.long old_mmap /* 90 */
.long sys_munmap
.long sys_truncate
-diff -urpN linux-source-2.6.26.orig/arch/h8300/kernel/syscalls.S linux-source-2.6.26/arch/h8300/kernel/syscalls.S
---- linux-source-2.6.26.orig/arch/h8300/kernel/syscalls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/h8300/kernel/syscalls.S 2009-01-19 11:16:52.000000000 -0700
+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
@@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
.long SYMBOL_NAME(sys_uselib)
.long SYMBOL_NAME(sys_swapon)
@@ -62,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.26.orig/arch/m68k/kernel/entry.S linux-source-2.6.26/arch/m68k/kernel/entry.S
---- linux-source-2.6.26.orig/arch/m68k/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/m68k/kernel/entry.S 2009-01-19 11:16:52.000000000 -0700
+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
@@ -513,7 +513,7 @@ sys_call_table:
.long sys_uselib
.long sys_swapon
@@ -74,9 +75,9 @@
.long old_mmap /* 90 */
.long sys_munmap
.long sys_truncate
-diff -urpN linux-source-2.6.26.orig/arch/m68knommu/kernel/syscalltable.S linux-source-2.6.26/arch/m68knommu/kernel/syscalltable.S
---- linux-source-2.6.26.orig/arch/m68knommu/kernel/syscalltable.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/m68knommu/kernel/syscalltable.S 2009-01-19 11:16:52.000000000 -0700
+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
@@ -107,7 +107,7 @@ ENTRY(sys_call_table)
.long sys_uselib
.long sys_ni_syscall /* sys_swapon */
@@ -86,10 +87,10 @@
.long old_mmap /* 90 */
.long sys_munmap
.long sys_truncate
-diff -urpN linux-source-2.6.26.orig/arch/mips/kernel/scall32-o32.S linux-source-2.6.26/arch/mips/kernel/scall32-o32.S
---- linux-source-2.6.26.orig/arch/mips/kernel/scall32-o32.S 2009-01-10 05:42:16.000000000 -0700
-+++ linux-source-2.6.26/arch/mips/kernel/scall32-o32.S 2009-01-19 11:16:52.000000000 -0700
-@@ -413,7 +413,7 @@ einval: li v0, -EINVAL
+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
sys sys_uselib 1
sys sys_swapon 2
sys sys_reboot 3
@@ -98,45 +99,9 @@
sys old_mmap 6 /* 4090 */
sys sys_munmap 2
sys sys_truncate 2
-diff -urpN linux-source-2.6.26.orig/arch/mn10300/kernel/entry.S linux-source-2.6.26/arch/mn10300/kernel/entry.S
---- linux-source-2.6.26.orig/arch/mn10300/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/mn10300/kernel/entry.S 2009-01-19 11:16:52.000000000 -0700
-@@ -477,7 +477,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.26.orig/arch/sh/kernel/syscalls_32.S linux-source-2.6.26/arch/sh/kernel/syscalls_32.S
---- linux-source-2.6.26.orig/arch/sh/kernel/syscalls_32.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sh/kernel/syscalls_32.S 2009-01-19 11:17:08.000000000 -0700
-@@ -105,7 +105,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.26.orig/arch/sh/kernel/syscalls_64.S linux-source-2.6.26/arch/sh/kernel/syscalls_64.S
---- linux-source-2.6.26.orig/arch/sh/kernel/syscalls_64.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sh/kernel/syscalls_64.S 2009-01-19 11:17:08.000000000 -0700
-@@ -109,7 +109,7 @@ 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.26.orig/arch/sparc/kernel/systbls.S linux-source-2.6.26/arch/sparc/kernel/systbls.S
---- linux-source-2.6.26.orig/arch/sparc/kernel/systbls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sparc/kernel/systbls.S 2009-01-19 11:17:08.000000000 -0700
+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:
/*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
@@ -146,9 +111,9 @@
/*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.26.orig/arch/x86/kernel/syscall_table_32.S linux-source-2.6.26/arch/x86/kernel/syscall_table_32.S
---- linux-source-2.6.26.orig/arch/x86/kernel/syscall_table_32.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/x86/kernel/syscall_table_32.S 2009-01-19 11:17:08.000000000 -0700
+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
@@ -158,10 +123,10 @@
.long old_mmap /* 90 */
.long sys_munmap
.long sys_truncate
-diff -urpN linux-source-2.6.26.orig/fs/readdir.c linux-source-2.6.26/fs/readdir.c
---- linux-source-2.6.26.orig/fs/readdir.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/readdir.c 2009-01-19 11:17:08.000000000 -0700
-@@ -100,7 +100,7 @@ efault:
+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:
return -EFAULT;
}
@@ -170,9 +135,9 @@
{
int error;
struct file * file;
-diff -urpN linux-source-2.6.26.orig/include/asm-powerpc/systbl.h linux-source-2.6.26/include/asm-powerpc/systbl.h
---- linux-source-2.6.26.orig/include/asm-powerpc/systbl.h 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/include/asm-powerpc/systbl.h 2009-01-19 11:18:35.000000000 -0700
+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
@@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink)
SYSCALL(uselib)
SYSCALL(swapon)
@@ -182,9 +147,9 @@
SYSCALL_SPU(mmap)
SYSCALL_SPU(munmap)
SYSCALL_SPU(truncate)
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 11:17:08.000000000 -0700
+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;
struct compat_timeval;
struct robust_list_head;
@@ -193,8 +158,8 @@
#include <linux/types.h>
#include <linux/aio_abi.h>
-@@ -602,6 +603,7 @@ asmlinkage long sys_timerfd_settime(int
- asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr);
+@@ -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);
+asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004-Remove-__attribute__-weak-from-sy.patch Wed Jan 21 08:39:04 2009
@@ -19,11 +19,11 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/arch/alpha/kernel/entry.S linux-source-2.6.26/arch/alpha/kernel/entry.S
---- linux-source-2.6.26.orig/arch/alpha/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/alpha/kernel/entry.S 2009-01-19 11:38:17.000000000 -0700
+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:
.end sys_getxpid
@@ -46,9 +46,9 @@
.align 4
.globl sys_execve
-diff -urpN linux-source-2.6.26.orig/arch/alpha/kernel/systbls.S linux-source-2.6.26/arch/alpha/kernel/systbls.S
---- linux-source-2.6.26.orig/arch/alpha/kernel/systbls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/alpha/kernel/systbls.S 2009-01-19 11:38:17.000000000 -0700
+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:
.quad sys_setpgid
.quad alpha_ni_syscall /* 40 */
@@ -58,9 +58,9 @@
.quad osf_set_program_attributes
.quad alpha_ni_syscall
.quad sys_open /* 45 */
-diff -urpN linux-source-2.6.26.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.26/arch/ia64/ia32/ia32_entry.S
---- linux-source-2.6.26.orig/arch/ia64/ia32/ia32_entry.S 2009-01-19 11:33:32.000000000 -0700
-+++ linux-source-2.6.26/arch/ia64/ia32/ia32_entry.S 2009-01-19 11:38:17.000000000 -0700
+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:
data8 sys_mkdir
data8 sys_rmdir /* 40 */
@@ -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.26.orig/arch/ia64/kernel/entry.S linux-source-2.6.26/arch/ia64/kernel/entry.S
---- linux-source-2.6.26.orig/arch/ia64/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/ia64/kernel/entry.S 2009-01-19 11:38:32.000000000 -0700
-@@ -1408,7 +1408,7 @@ sys_call_table:
+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:
data8 sys_mkdir // 1055
data8 sys_rmdir
data8 sys_dup
@@ -82,9 +82,9 @@
data8 sys_times
data8 ia64_brk // 1060
data8 sys_setgid
-diff -urpN linux-source-2.6.26.orig/arch/ia64/kernel/sys_ia64.c linux-source-2.6.26/arch/ia64/kernel/sys_ia64.c
---- linux-source-2.6.26.orig/arch/ia64/kernel/sys_ia64.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/ia64/kernel/sys_ia64.c 2009-01-19 11:38:32.000000000 -0700
+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:
* and r9) as this is faster than doing a copy_to_user().
*/
@@ -94,46 +94,11 @@
{
struct pt_regs *regs = task_pt_regs(current);
int fd[2];
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/entry.h linux-source-2.6.26/arch/s390/kernel/entry.h
---- linux-source-2.6.26.orig/arch/s390/kernel/entry.h 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/entry.h 2009-01-19 11:38:32.000000000 -0700
-@@ -30,7 +30,6 @@ struct fadvise64_64_args;
- struct old_sigaction;
- struct sel_arg_struct;
-
--long sys_pipe(unsigned long __user *fildes);
- long sys_mmap2(struct mmap_arg_struct __user *arg);
- long old_mmap(struct mmap_arg_struct __user *arg);
- long sys_ipc(uint call, int first, unsigned long second,
-diff -urpN linux-source-2.6.26.orig/arch/sh/kernel/syscalls_32.S linux-source-2.6.26/arch/sh/kernel/syscalls_32.S
---- linux-source-2.6.26.orig/arch/sh/kernel/syscalls_32.S 2009-01-19 11:17:08.000000000 -0700
-+++ linux-source-2.6.26/arch/sh/kernel/syscalls_32.S 2009-01-19 11:38:35.000000000 -0700
-@@ -58,7 +58,7 @@ ENTRY(sys_call_table)
- .long sys_mkdir
- .long sys_rmdir /* 40 */
- .long sys_dup
-- .long sys_pipe
-+ .long sys_sh_pipe
- .long sys_times
- .long sys_ni_syscall /* old prof syscall holder */
- .long sys_brk /* 45 */
-diff -urpN linux-source-2.6.26.orig/arch/sh/kernel/sys_sh32.c linux-source-2.6.26/arch/sh/kernel/sys_sh32.c
---- linux-source-2.6.26.orig/arch/sh/kernel/sys_sh32.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sh/kernel/sys_sh32.c 2009-01-19 11:38:35.000000000 -0700
-@@ -21,7 +21,7 @@
- * 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 r4, unsigned long r5,
-+asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
- unsigned long r6, unsigned long r7,
- struct pt_regs __regs)
- {
-diff -urpN linux-source-2.6.26.orig/arch/sparc/kernel/entry.S linux-source-2.6.26/arch/sparc/kernel/entry.S
---- linux-source-2.6.26.orig/arch/sparc/kernel/entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sparc/kernel/entry.S 2009-01-19 11:38:35.000000000 -0700
-@@ -1141,8 +1141,8 @@ sunos_execv:
- ld [%sp + STACKFRAME_SZ + PT_I0], %o0
+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:
+ mov %l5, %o7
.align 4
- .globl sys_pipe
@@ -143,9 +108,9 @@
mov %o7, %l5
add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
call sparc_pipe
-diff -urpN linux-source-2.6.26.orig/arch/sparc/kernel/systbls.S linux-source-2.6.26/arch/sparc/kernel/systbls.S
---- linux-source-2.6.26.orig/arch/sparc/kernel/systbls.S 2009-01-19 11:17:08.000000000 -0700
-+++ linux-source-2.6.26/arch/sparc/kernel/systbls.S 2009-01-19 11:38:35.000000000 -0700
+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:
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
@@ -155,23 +120,11 @@
/*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.26.orig/arch/sparc64/kernel/syscalls.S linux-source-2.6.26/arch/sparc64/kernel/syscalls.S
---- linux-source-2.6.26.orig/arch/sparc64/kernel/syscalls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sparc64/kernel/syscalls.S 2009-01-19 11:38:35.000000000 -0700
-@@ -20,7 +20,7 @@ execve_merge:
- add %sp, PTREGS_OFF, %o0
-
- .align 32
--sys_pipe:
-+sys_sparc_pipe:
- ba,pt %xcc, sparc_pipe
- add %sp, PTREGS_OFF, %o0
- sys_nis_syscall:
-diff -urpN linux-source-2.6.26.orig/arch/sparc64/kernel/systbls.S linux-source-2.6.26/arch/sparc64/kernel/systbls.S
---- linux-source-2.6.26.orig/arch/sparc64/kernel/systbls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/sparc64/kernel/systbls.S 2009-01-19 11:40:10.000000000 -0700
+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:
- /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
+ /*25*/ .word sys32_vmsplice, sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
.word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
-/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid
@@ -179,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
-@@ -99,7 +99,7 @@ sys_call_table:
+@@ -98,7 +98,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
@@ -188,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.26.orig/fs/pipe.c linux-source-2.6.26/fs/pipe.c
---- linux-source-2.6.26.orig/fs/pipe.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/pipe.c 2009-01-19 11:38:50.000000000 -0700
-@@ -1078,7 +1078,7 @@ int do_pipe(int *fd)
+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)
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
@@ -200,10 +153,10 @@
{
int fd[2];
int error;
-diff -urpN linux-source-2.6.26.orig/include/asm-ia64/unistd.h linux-source-2.6.26/include/asm-ia64/unistd.h
---- linux-source-2.6.26.orig/include/asm-ia64/unistd.h 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/include/asm-ia64/unistd.h 2009-01-19 11:38:32.000000000 -0700
-@@ -357,7 +357,7 @@ struct pt_regs;
+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;
struct sigaction;
long sys_execve(char __user *filename, char __user * __user *argv,
char __user * __user *envp, struct pt_regs *regs);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre1-ia64-kill-sys32_pipe.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/arch/ia64/ia32/ia32_entry.S linux-source-2.6.26/arch/ia64/ia32/ia32_entry.S
---- linux-source-2.6.26.orig/arch/ia64/ia32/ia32_entry.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/ia64/ia32/ia32_entry.S 2009-01-19 11:33:32.000000000 -0700
+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:
data8 sys_mkdir
data8 sys_rmdir /* 40 */
@@ -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.26.orig/arch/ia64/ia32/sys_ia32.c linux-source-2.6.26/arch/ia64/ia32/sys_ia32.c
---- linux-source-2.6.26.orig/arch/ia64/ia32/sys_ia32.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/ia64/ia32/sys_ia32.c 2009-01-19 11:34:39.000000000 -0700
-@@ -1133,21 +1133,6 @@ sys32_mremap (unsigned int addr, unsigne
+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
return ret;
}
Added: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch
==============================================================================
--- (empty file)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0004pre2-unify-sys_pipe.patch Wed Jan 21 08:39:04 2009
@@ -0,0 +1,407 @@
+commit d35c7b0e54a596c5a8134d75999b7f391a9c6550
+Author: Ulrich Drepper <drepper at redhat.com>
+Date: Sat May 3 15:10:37 2008 -0400
+
+ unified (weak) sys_pipe implementation
+
+ This replaces the duplicated arch-specific versions of "sys_pipe()" with
+ one unified implementation. This removes almost 250 lines of duplicated
+ code.
+
+ It's marked __weak, so that *if* an architecture wants to override the
+ default implementation it can do so by simply having its own replacement
+ version, since many architectures use alternate calling conventions for
+ the 'pipe()' system call for legacy reasons (ie traditional UNIX
+ implementations often return the two file descriptors in registers)
+
+ I still haven't changed the cris version even though Linus says the BKL
+ isn't needed. The arch maintainer can easily do it if there are really
+ no obstacles.
+
+ 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>
+
+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
+@@ -34,23 +34,6 @@ extern unsigned long do_mremap(unsigned
+ unsigned long new_len, unsigned long flags,
+ unsigned long new_addr);
+
+-/*
+- * 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;
+-}
+-
+ /* 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>
+ #include <asm/uaccess.h>
+
+-asmlinkage int sys_pipe(unsigned long __user *filedes)
+-{
+- int fd[2];
+- int error;
+-
+- error = do_pipe(fd);
+- if (!error) {
+- if (copy_to_user(filedes, fd, sizeof(fd)))
+- error = -EFAULT;
+- }
+- return error;
+-}
+-
+ 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>
+
+-/*
+- * 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(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/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>
+
+-/*
+- * 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 * 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;
+-}
+-
+ /* 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 @@
+ #include <asm/page.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;
+-}
+-
+ /* 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 @@
+ #include <asm/cacheflush.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 * 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;
+-}
+-
+ /* 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>
+
+-int sys_pipe(int __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;
+-}
+-
+ 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
+ return ret;
+ }
+
+-/*
+- * sys_pipe() is the normal C calling standard for creating
+- * a pipe. It's not the way unix traditionally does this, though.
+- */
+-int sys_pipe(int __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;
+-}
+-
+ 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 @@
+
+ #include <asm/uaccess.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)
+-{
+- int fd[2];
+- int error;
+-
+- error = do_pipe(fd);
+- if (!error) {
+- if (copy_to_user(fildes, fd, 2*sizeof(int)))
+- error = -EFAULT;
+- }
+- 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/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
+ out:
+ return err;
+ }
+-/*
+- * sys_pipe() is the normal C calling standard for creating
+- * a pipe. It's not the way unix traditionally does this, though.
+- */
+-long sys_pipe(unsigned long __user * fildes)
+-{
+- int fd[2];
+- long error;
+-
+- error = do_pipe(fd);
+- if (!error) {
+- if (copy_to_user(fildes, fd, sizeof(fd)))
+- 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
+ return ret;
+ }
+
+-/*
+- * sys_pipe() is the normal C calling standard for creating
+- * a pipe. It's not the way unix traditionally does this, though.
+- */
+-int sys_pipe (int *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;
+-}
+-
+ 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 @@
+ #include <asm/uaccess.h>
+ #include <asm/ia32.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(int __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_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)
+ }
+
+ /*
++ * sys_pipe() is the normal C calling standard for creating
++ * a pipe. It's not the way Unix traditionally does this, though.
++ */
++asmlinkage long __weak sys_pipe(int __user *fildes)
++{
++ int fd[2];
++ int error;
++
++ error = do_pipe(fd);
++ if (!error) {
++ if (copy_to_user(fildes, fd, sizeof(fd)))
++ error = -EFAULT;
++ }
++ return error;
++}
++
++/*
+ * 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
+@@ -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,
+ unsigned long p6, struct pt_regs *regs);
+-asmlinkage int sys_pipe(int __user *fildes);
++asmlinkage long sys_pipe(int __user *fildes);
+ asmlinkage long sys_rt_sigaction(int sig,
+ const struct sigaction __user *act,
+ struct sigaction __user *oact, size_t sigsetsize);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0005-Make-sys_pselect7-static.patch Wed Jan 21 08:39:04 2009
@@ -14,21 +14,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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/compat.c linux-source-2.6.26/fs/compat.c
---- linux-source-2.6.26.orig/fs/compat.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/compat.c 2009-01-19 11:42:04.000000000 -0700
-@@ -1636,7 +1636,7 @@ sticky:
+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:
}
- #ifdef HAVE_SET_RESTORE_SIGMASK
+ #ifdef TIF_RESTORE_SIGMASK
-asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp,
+static long do_compat_pselect(int n, compat_ulong_t __user *inp,
compat_ulong_t __user *outp, compat_ulong_t __user *exp,
struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
compat_size_t sigsetsize)
-@@ -1744,8 +1744,8 @@ asmlinkage long compat_sys_pselect6(int
+@@ -1750,8 +1750,8 @@ asmlinkage long compat_sys_pselect6(int
(compat_size_t __user *)(sig+sizeof(up))))
return -EFAULT;
}
@@ -39,13 +39,13 @@
}
asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
-diff -urpN linux-source-2.6.26.orig/fs/select.c linux-source-2.6.26/fs/select.c
---- linux-source-2.6.26.orig/fs/select.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/select.c 2009-01-19 11:42:04.000000000 -0700
-@@ -427,9 +427,9 @@ sticky:
+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:
}
- #ifdef HAVE_SET_RESTORE_SIGMASK
+ #ifdef TIF_RESTORE_SIGMASK
-asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
- fd_set __user *exp, struct timespec __user *tsp,
- const sigset_t __user *sigmask, size_t sigsetsize)
@@ -55,12 +55,12 @@
{
s64 timeout = MAX_SCHEDULE_TIMEOUT;
sigset_t ksigmask, sigsaved;
-@@ -527,7 +527,7 @@ asmlinkage long sys_pselect6(int n, fd_s
+@@ -526,7 +526,7 @@ asmlinkage long sys_pselect6(int n, fd_s
return -EFAULT;
}
- return sys_pselect7(n, inp, outp, exp, tsp, up, sigsetsize);
+ return do_pselect(n, inp, outp, exp, tsp, up, sigsetsize);
}
- #endif /* HAVE_SET_RESTORE_SIGMASK */
+ #endif /* TIF_RESTORE_SIGMASK */
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0006-Make-sys_syslog-a-conditional-system.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/printk.c linux-source-2.6.26/kernel/printk.c
---- linux-source-2.6.26.orig/kernel/printk.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/printk.c 2009-01-19 11:44:54.000000000 -0700
-@@ -802,11 +802,6 @@ EXPORT_SYMBOL(vprintk);
+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);
#else
@@ -28,13 +28,13 @@
- return -ENOSYS;
-}
-
- static void call_console_drivers(unsigned start, unsigned end)
+ static void call_console_drivers(unsigned long start, unsigned long end)
{
}
-diff -urpN linux-source-2.6.26.orig/kernel/sys_ni.c linux-source-2.6.26/kernel/sys_ni.c
---- linux-source-2.6.26.orig/kernel/sys_ni.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys_ni.c 2009-01-19 11:48:00.000000000 -0700
-@@ -122,6 +122,7 @@ cond_syscall(sys_vm86old);
+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);
cond_syscall(sys_vm86);
cond_syscall(compat_sys_ipc);
cond_syscall(compat_sys_sysctl);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0007-System-call-wrapper-infrastructure.patch Wed Jan 21 08:39:04 2009
@@ -21,25 +21,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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/arch/Kconfig linux-source-2.6.26/arch/Kconfig
---- linux-source-2.6.26.orig/arch/Kconfig 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/Kconfig 2009-01-19 11:50:53.000000000 -0700
-@@ -27,6 +27,9 @@ config KPROBES
- for kernel debugging, non-intrusive instrumentation and testing.
- If in doubt, say "N".
-
-+config HAVE_SYSCALL_WRAPPERS
-+ bool
-+
- config KRETPROBES
- def_bool y
- depends on KPROBES && HAVE_KRETPROBES
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 11:17:08.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 11:50:53.000000000 -0700
-@@ -66,6 +66,68 @@ struct old_linux_dirent;
+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;
#include <linux/quota.h>
#include <linux/key.h>
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0008-powerpc-Enable-syscall-wrappers-for.patch Wed Jan 21 08:39:04 2009
@@ -14,23 +14,23 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/arch/powerpc/Kconfig linux-source-2.6.26/arch/powerpc/Kconfig
---- linux-source-2.6.26.orig/arch/powerpc/Kconfig 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/powerpc/Kconfig 2009-01-19 11:54:09.000000000 -0700
-@@ -110,6 +110,7 @@ config PPC
- select HAVE_KPROBES
- select HAVE_KRETPROBES
- select HAVE_LMB
+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
+ config PPC
+ bool
+ default y
+ select HAVE_SYSCALL_WRAPPERS if PPC64
config EARLY_PRINTK
bool
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 11:50:53.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 11:53:03.000000000 -0700
-@@ -103,8 +103,14 @@ struct old_linux_dirent;
+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;
#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0009-s390-enable-system-call-wrappers.patch Wed Jan 21 08:39:04 2009
@@ -13,13 +13,16 @@
arch/s390/Kconfig | 1 +
1 file changed, 1 insertion(+)
---- a/arch/s390/Kconfig
-+++ b/arch/s390/Kconfig
-@@ -70,6 +70,7 @@ mainmenu "Linux Kernel Configuration"
+Backported to Debian's 2.6.24 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"
config S390
def_bool y
+ select HAVE_SYSCALL_WRAPPERS
- select HAVE_OPROFILE
- select HAVE_KPROBES
- select HAVE_KRETPROBES
+
+ source "init/Kconfig"
+
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0010-System-call-wrapper-special-cases.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/dcookies.c linux-source-2.6.26/fs/dcookies.c
---- linux-source-2.6.26.orig/fs/dcookies.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/dcookies.c 2009-01-19 11:55:54.000000000 -0700
-@@ -140,7 +140,7 @@ out:
+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:
/* 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;
-@@ -193,7 +193,13 @@ out:
+@@ -196,7 +196,13 @@ out:
mutex_unlock(&dcookie_mutex);
return err;
}
@@ -47,10 +47,10 @@
static int dcookie_init(void)
{
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 11:55:54.000000000 -0700
-@@ -345,21 +345,35 @@ asmlinkage long sys_ftruncate(unsigned i
+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
/* LFS versions of truncate are only needed on 32 bit machines */
#if BITS_PER_LONG == 32
@@ -72,7 +72,7 @@
{
long ret = do_sys_ftruncate(fd, length, 0);
/* avoid REGPARM breakage on x86: */
- asmlinkage_protect(2, ret, fd, length);
+ prevent_tail_call(ret);
return ret;
}
+#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
@@ -89,7 +89,7 @@
{
struct file *file;
struct inode *inode;
-@@ -416,6 +430,13 @@ out_fput:
+@@ -412,6 +426,13 @@ out_fput:
out:
return ret;
}
@@ -103,10 +103,10 @@
/*
* access() needs to use the real uid/gid, not the effective uid/gid.
-diff -urpN linux-source-2.6.26.orig/fs/read_write.c linux-source-2.6.26/fs/read_write.c
---- linux-source-2.6.26.orig/fs/read_write.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/fs/read_write.c 2009-01-19 11:55:54.000000000 -0700
-@@ -384,8 +384,8 @@ asmlinkage long sys_write(unsigned int f
+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
return ret;
}
@@ -117,7 +117,7 @@
{
struct file *file;
ssize_t ret = -EBADF;
-@@ -404,9 +404,17 @@ asmlinkage long sys_pread64(unsigned int
+@@ -409,9 +409,17 @@ asmlinkage long sys_pread64(unsigned int
return ret;
}
@@ -137,7 +137,7 @@
{
struct file *file;
ssize_t ret = -EBADF;
-@@ -425,6 +433,14 @@ asmlinkage long sys_pwrite64(unsigned in
+@@ -430,6 +438,14 @@ asmlinkage long sys_pwrite64(unsigned in
return ret;
}
@@ -152,9 +152,9 @@
/*
* Reduce an iovec's length in-place. Return the resulting number of segments
-diff -urpN linux-source-2.6.26.orig/fs/sync.c linux-source-2.6.26/fs/sync.c
---- linux-source-2.6.26.orig/fs/sync.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/sync.c 2009-01-19 11:55:54.000000000 -0700
+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
* already-instantiated disk blocks, there are no guarantees here that the data
* will be available after a crash.
@@ -201,10 +201,10 @@
/*
* `endbyte' is inclusive
-diff -urpN linux-source-2.6.26.orig/ipc/sem.c linux-source-2.6.26/ipc/sem.c
---- linux-source-2.6.26.orig/ipc/sem.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/ipc/sem.c 2009-01-19 11:55:54.000000000 -0700
-@@ -893,7 +893,7 @@ out_up:
+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:
return err;
}
@@ -213,7 +213,7 @@
{
int err = -EINVAL;
int version;
-@@ -929,6 +929,13 @@ asmlinkage long sys_semctl (int semid, i
+@@ -998,6 +998,13 @@ asmlinkage long sys_semctl (int semid, i
return -EINVAL;
}
}
@@ -227,9 +227,9 @@
/* 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.26.orig/mm/fadvise.c linux-source-2.6.26/mm/fadvise.c
---- linux-source-2.6.26.orig/mm/fadvise.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/fadvise.c 2009-01-19 11:55:54.000000000 -0700
+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
@@ -24,7 +24,7 @@
* POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
* deactivate the pages and clear PG_Referenced.
@@ -239,7 +239,7 @@
{
struct file *file = fget(fd);
struct address_space *mapping;
-@@ -126,12 +126,26 @@ out:
+@@ -114,12 +114,26 @@ out:
fput(file);
return ret;
}
@@ -267,10 +267,10 @@
+#endif
#endif
-diff -urpN linux-source-2.6.26.orig/mm/filemap.c linux-source-2.6.26/mm/filemap.c
---- linux-source-2.6.26.orig/mm/filemap.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/mm/filemap.c 2009-01-19 11:55:54.000000000 -0700
-@@ -1253,7 +1253,7 @@ do_readahead(struct address_space *mappi
+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
return 0;
}
@@ -279,7 +279,7 @@
{
ssize_t ret;
struct file *file;
-@@ -1272,6 +1272,13 @@ asmlinkage long sys_readahead(int fd, lo
+@@ -1250,6 +1250,13 @@ asmlinkage long sys_readahead(int fd, lo
}
return ret;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0011-System-call-wrappers-part-01.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/hrtimer.c linux-source-2.6.26/kernel/hrtimer.c
---- linux-source-2.6.26.orig/kernel/hrtimer.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/hrtimer.c 2009-01-19 11:57:28.000000000 -0700
-@@ -1561,8 +1561,8 @@ out:
- return ret;
+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 *
+ return -ERESTART_RESTARTBLOCK;
}
-asmlinkage long
@@ -26,10 +26,10 @@
{
struct timespec tu;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 11:57:28.000000000 -0700
-@@ -868,7 +868,7 @@ asmlinkage long sys_setfsgid(gid_t gid)
+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)
return old_fsgid;
}
@@ -38,10 +38,10 @@
{
/*
* In the SMP world we might just be unlucky and have one of
-diff -urpN linux-source-2.6.26.orig/kernel/time.c linux-source-2.6.26/kernel/time.c
---- linux-source-2.6.26.orig/kernel/time.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/time.c 2009-01-19 11:57:28.000000000 -0700
-@@ -59,7 +59,7 @@ EXPORT_SYMBOL(sys_tz);
+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);
* why not move it into the appropriate arch directory (for those
* architectures that need it).
*/
@@ -50,7 +50,7 @@
{
time_t i = get_seconds();
-@@ -77,7 +77,7 @@ asmlinkage long sys_time(time_t __user *
+@@ -73,7 +73,7 @@ asmlinkage long sys_time(time_t __user *
* architectures that need it).
*/
@@ -59,18 +59,17 @@
{
struct timespec tv;
int err;
-@@ -97,8 +97,8 @@ asmlinkage long sys_stime(time_t __user
+@@ -93,7 +93,8 @@ asmlinkage long sys_stime(time_t __user
#endif /* __ARCH_WANT_SYS_TIME */
--asmlinkage long sys_gettimeofday(struct timeval __user *tv,
-- struct timezone __user *tz)
+-asmlinkage long sys_gettimeofday(struct timeval __user *tv, struct timezone __user *tz)
+SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv,
+ struct timezone __user *, tz)
{
if (likely(tv != NULL)) {
struct timeval ktv;
-@@ -182,8 +182,8 @@ int do_sys_settimeofday(struct timespec
+@@ -176,8 +177,8 @@ int do_sys_settimeofday(struct timespec
return 0;
}
@@ -81,7 +80,7 @@
{
struct timeval user_tv;
struct timespec new_ts;
-@@ -203,7 +203,7 @@ asmlinkage long sys_settimeofday(struct
+@@ -197,7 +198,7 @@ asmlinkage long sys_settimeofday(struct
return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL);
}
@@ -90,10 +89,10 @@
{
struct timex txc; /* Local copy of parameter */
int ret;
-diff -urpN linux-source-2.6.26.orig/kernel/timer.c linux-source-2.6.26/kernel/timer.c
---- linux-source-2.6.26.orig/kernel/timer.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/kernel/timer.c 2009-01-19 11:57:28.000000000 -0700
-@@ -1082,7 +1082,7 @@ void do_timer(unsigned long ticks)
+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)
* For backwards compatibility? This can be done in libc so Alpha
* and all newer ports shouldn't need it.
*/
@@ -102,7 +101,7 @@
{
return alarm_setitimer(seconds);
}
-@@ -1105,7 +1105,7 @@ asmlinkage long sys_alarm(unsigned int s
+@@ -970,7 +970,7 @@ asmlinkage long sys_alarm(unsigned int s
*
* This is SMP safe as current->tgid does not change.
*/
@@ -111,7 +110,7 @@
{
return task_tgid_vnr(current);
}
-@@ -1261,7 +1261,7 @@ signed long __sched schedule_timeout_uni
+@@ -1116,7 +1116,7 @@ signed long __sched schedule_timeout_uni
EXPORT_SYMBOL(schedule_timeout_uninterruptible);
/* Thread ID - the internal kernel "pid" */
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0012-System-call-wrappers-part-02.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 11:57:28.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 11:58:42.000000000 -0700
-@@ -748,7 +748,7 @@ asmlinkage long sys_setresuid(uid_t ruid
+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
return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RES);
}
@@ -24,7 +24,7 @@
{
int retval;
-@@ -799,7 +799,7 @@ asmlinkage long sys_setresgid(gid_t rgid
+@@ -793,7 +793,7 @@ asmlinkage long sys_setresgid(gid_t rgid
return 0;
}
@@ -33,36 +33,37 @@
{
int retval;
-@@ -989,7 +989,7 @@ out:
+@@ -987,7 +987,7 @@ out:
return err;
}
-asmlinkage long sys_getpgid(pid_t pid)
+SYSCALL_DEFINE1(getpgid, pid_t, pid)
{
- struct task_struct *p;
- struct pid *grp;
-@@ -1019,14 +1019,14 @@ out:
+ if (!pid)
+ return task_pgrp_vnr(current);
+@@ -1013,7 +1013,7 @@ asmlinkage long sys_getpgid(pid_t pid)
#ifdef __ARCH_WANT_SYS_GETPGRP
-asmlinkage long sys_getpgrp(void)
+SYSCALL_DEFINE0(getpgrp)
{
- return sys_getpgid(0);
- }
+ /* SMP - assuming writes are word atomic this is fine */
+ return task_pgrp_vnr(current);
+@@ -1021,7 +1021,7 @@ asmlinkage long sys_getpgrp(void)
#endif
-asmlinkage long sys_getsid(pid_t pid)
+SYSCALL_DEFINE1(getsid, pid_t, pid)
{
- struct task_struct *p;
- struct pid *sid;
-diff -urpN linux-source-2.6.26.orig/kernel/timer.c linux-source-2.6.26/kernel/timer.c
---- linux-source-2.6.26.orig/kernel/timer.c 2009-01-19 11:57:28.000000000 -0700
-+++ linux-source-2.6.26/kernel/timer.c 2009-01-19 11:58:42.000000000 -0700
-@@ -1116,7 +1116,7 @@ SYSCALL_DEFINE0(getpid)
+ 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)
* value of ->real_parent under rcu_read_lock(), see
* release_task()->call_rcu(delayed_put_task_struct).
*/
@@ -71,7 +72,7 @@
{
int pid;
-@@ -1127,25 +1127,25 @@ asmlinkage long sys_getppid(void)
+@@ -992,25 +992,25 @@ asmlinkage long sys_getppid(void)
return pid;
}
@@ -101,3 +102,1405 @@
{
/* 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: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0013-System-call-wrappers-part-03.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 11:58:42.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 11:59:57.000000000 -0700
-@@ -485,7 +485,7 @@ void ctrl_alt_del(void)
+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)
* 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;
-@@ -534,7 +534,7 @@ asmlinkage long sys_setregid(gid_t rgid,
+@@ -528,7 +528,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;
-@@ -604,7 +604,7 @@ static int set_user(uid_t new_ruid, int
+@@ -598,7 +598,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;
-@@ -666,7 +666,7 @@ asmlinkage long sys_setreuid(uid_t ruid,
+@@ -660,7 +660,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.
*/
@@ -51,7 +51,7 @@
{
int old_euid = current->euid;
int old_ruid, old_suid, new_suid;
-@@ -705,7 +705,7 @@ asmlinkage long sys_setuid(uid_t uid)
+@@ -699,7 +699,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;
-@@ -762,7 +762,7 @@ SYSCALL_DEFINE3(getresuid, uid_t __user
+@@ -756,7 +756,7 @@ SYSCALL_DEFINE3(getresuid, uid_t __user
/*
* Same as above, but for rgid, egid, sgid.
*/
@@ -69,7 +69,7 @@
{
int retval;
-@@ -817,7 +817,7 @@ SYSCALL_DEFINE3(getresgid, gid_t __user
+@@ -811,7 +811,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,7 +78,7 @@
{
int old_fsuid;
-@@ -846,7 +846,7 @@ asmlinkage long sys_setfsuid(uid_t uid)
+@@ -840,7 +840,7 @@ asmlinkage long sys_setfsuid(uid_t uid)
/*
* Samma på svenska..
*/
@@ -87,7 +87,7 @@
{
int old_fsgid;
-@@ -1260,7 +1260,7 @@ int set_current_groups(struct group_info
+@@ -1257,7 +1257,7 @@ int set_current_groups(struct group_info
EXPORT_SYMBOL(set_current_groups);
@@ -96,3 +96,1405 @@
{
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: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0014-System-call-wrappers-part-04.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/acct.c linux-source-2.6.26/kernel/acct.c
---- linux-source-2.6.26.orig/kernel/acct.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/acct.c 2009-01-19 12:00:45.000000000 -0700
-@@ -255,7 +255,7 @@ static int acct_on(char *name)
+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)
* should be written. If the filename is NULL, accounting will be
* shutdown.
*/
@@ -24,10 +24,10 @@
{
int error;
-diff -urpN linux-source-2.6.26.orig/kernel/capability.c linux-source-2.6.26/kernel/capability.c
---- linux-source-2.6.26.orig/kernel/capability.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/capability.c 2009-01-19 12:00:45.000000000 -0700
-@@ -151,7 +151,7 @@ EXPORT_SYMBOL(cap_set_effective);
+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
*
* Returns 0 on success and < 0 on error.
*/
@@ -36,18 +36,18 @@
{
int ret = 0;
pid_t pid;
-@@ -308,7 +308,7 @@ static inline int cap_set_all(kernel_cap
+@@ -165,7 +165,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)
{
- struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S];
- unsigned i, tocopy;
-diff -urpN linux-source-2.6.26.orig/kernel/exec_domain.c linux-source-2.6.26/kernel/exec_domain.c
---- linux-source-2.6.26.orig/kernel/exec_domain.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/exec_domain.c 2009-01-19 12:00:45.000000000 -0700
+ 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
@@ -189,8 +189,7 @@ get_exec_domain_list(char *page)
return (len);
}
@@ -58,9 +58,9 @@
{
u_long old = current->personality;
-diff -urpN linux-source-2.6.26.orig/kernel/itimer.c linux-source-2.6.26/kernel/itimer.c
---- linux-source-2.6.26.orig/kernel/itimer.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/itimer.c 2009-01-19 12:00:45.000000000 -0700
+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
return 0;
}
@@ -70,10 +70,10 @@
{
int error = -EFAULT;
struct itimerval get_buffer;
-diff -urpN linux-source-2.6.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 12:00:45.000000000 -0700
-@@ -2407,8 +2407,7 @@ out:
+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:
#ifdef __ARCH_WANT_SYS_SIGPENDING
@@ -83,7 +83,7 @@
{
return do_sigpending(set, sizeof(*set));
}
-@@ -2419,8 +2418,8 @@ sys_sigpending(old_sigset_t __user *set)
+@@ -2430,8 +2429,8 @@ sys_sigpending(old_sigset_t __user *set)
/* Some platforms have their own version with special arguments others
support only sys_rt_sigprocmask. */
@@ -94,10 +94,10 @@
{
int error;
old_sigset_t old_set, new_set;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 11:59:57.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:00:45.000000000 -0700
-@@ -918,7 +918,7 @@ SYSCALL_DEFINE1(times, struct tms __user
+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.
* LBT 04.03.94
*/
@@ -106,16 +106,16 @@
{
struct task_struct *p;
struct task_struct *group_leader = current->group_leader;
-@@ -1054,7 +1054,7 @@ out:
- return retval;
+@@ -1045,7 +1045,7 @@ SYSCALL_DEFINE1(getsid, pid_t, pid)
+ }
}
-asmlinkage long sys_setsid(void)
+SYSCALL_DEFINE0(setsid)
{
struct task_struct *group_leader = current->group_leader;
- struct pid *sid = task_pid(group_leader);
-@@ -1293,7 +1293,7 @@ out:
+ pid_t session;
+@@ -1290,7 +1290,7 @@ out:
* without another task interfering.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0015-System-call-wrappers-part-05.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/itimer.c linux-source-2.6.26/kernel/itimer.c
---- linux-source-2.6.26.orig/kernel/itimer.c 2009-01-19 12:00:45.000000000 -0700
-+++ linux-source-2.6.26/kernel/itimer.c 2009-01-19 12:03:27.000000000 -0700
+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
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.26.orig/kernel/posix-timers.c linux-source-2.6.26/kernel/posix-timers.c
---- linux-source-2.6.26.orig/kernel/posix-timers.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/posix-timers.c 2009-01-19 12:03:27.000000000 -0700
-@@ -466,10 +466,9 @@ static void release_posix_timer(struct k
+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
/* Create a POSIX.1b interval timer. */
@@ -44,7 +44,7 @@
{
int error = 0;
struct k_itimer *new_timer = NULL;
-@@ -685,8 +684,8 @@ common_timer_get(struct k_itimer *timr,
+@@ -678,8 +677,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;
-@@ -715,8 +714,7 @@ sys_timer_gettime(timer_t timer_id, stru
+@@ -708,8 +707,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;
-@@ -786,10 +784,9 @@ common_timer_set(struct k_itimer *timr,
+@@ -779,10 +777,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;
-@@ -842,8 +839,7 @@ static inline int timer_delete_hook(stru
+@@ -835,8 +832,7 @@ static inline int timer_delete_hook(stru
}
/* Delete a POSIX.1b interval timer. */
@@ -89,7 +89,7 @@
{
struct k_itimer *timer;
unsigned long flags;
-@@ -935,8 +931,8 @@ int do_posix_clock_nonanosleep(const clo
+@@ -928,8 +924,8 @@ int do_posix_clock_nonanosleep(const clo
}
EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep);
@@ -100,7 +100,7 @@
{
struct timespec new_tp;
-@@ -948,8 +944,8 @@ asmlinkage long sys_clock_settime(const
+@@ -941,8 +937,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;
-@@ -965,8 +961,8 @@ sys_clock_gettime(const clockid_t which_
+@@ -958,8 +954,8 @@ sys_clock_gettime(const clockid_t which_
}
@@ -122,7 +122,7 @@
{
struct timespec rtn_tp;
int error;
-@@ -995,10 +991,9 @@ static int common_nsleep(const clockid_t
+@@ -988,10 +984,9 @@ static int common_nsleep(const clockid_t
which_clock);
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0016-System-call-wrappers-part-06.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/sched.c linux-source-2.6.26/kernel/sched.c
---- linux-source-2.6.26.orig/kernel/sched.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/kernel/sched.c 2009-01-19 12:05:32.000000000 -0700
-@@ -4694,7 +4694,7 @@ int can_nice(const struct task_struct *p
+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
* sys_setpriority is a more generic, but much slower function that
* does similar things.
*/
@@ -24,7 +24,7 @@
{
long nice, retval;
-@@ -4959,8 +4959,8 @@ do_sched_setscheduler(pid_t pid, int pol
+@@ -4442,8 +4442,8 @@ do_sched_setscheduler(pid_t pid, int pol
* @policy: new policy.
* @param: structure containing the new RT priority.
*/
@@ -35,7 +35,7 @@
{
/* negative values for policy are not valid */
if (policy < 0)
-@@ -4974,7 +4974,7 @@ sys_sched_setscheduler(pid_t pid, int po
+@@ -4457,7 +4457,7 @@ sys_sched_setscheduler(pid_t pid, int po
* @pid: the pid in question.
* @param: structure containing the new RT priority.
*/
@@ -44,7 +44,7 @@
{
return do_sched_setscheduler(pid, -1, param);
}
-@@ -4983,7 +4983,7 @@ asmlinkage long sys_sched_setparam(pid_t
+@@ -4466,7 +4466,7 @@ asmlinkage long sys_sched_setparam(pid_t
* sys_sched_getscheduler - get the policy (scheduling class) of a thread
* @pid: the pid in question.
*/
@@ -53,7 +53,7 @@
{
struct task_struct *p;
int retval;
-@@ -5008,7 +5008,7 @@ asmlinkage long sys_sched_getscheduler(p
+@@ -4491,7 +4491,7 @@ asmlinkage long sys_sched_getscheduler(p
* @pid: the pid in question.
* @param: structure containing the RT priority.
*/
@@ -62,7 +62,7 @@
{
struct sched_param lp;
struct task_struct *p;
-@@ -5116,8 +5116,8 @@ static int get_user_cpu_mask(unsigned lo
+@@ -4598,8 +4598,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;
-@@ -5179,8 +5179,8 @@ out_unlock:
+@@ -4661,8 +4661,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,7 +84,7 @@
{
int ret;
cpumask_t mask;
-@@ -5204,7 +5204,7 @@ asmlinkage long sys_sched_getaffinity(pi
+@@ -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.
*/
@@ -93,7 +93,7 @@
{
struct rq *rq = this_rq_lock();
-@@ -5345,7 +5345,7 @@ long __sched io_schedule_timeout(long ti
+@@ -4831,7 +4831,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;
-@@ -5370,7 +5370,7 @@ asmlinkage long sys_sched_get_priority_m
+@@ -4856,7 +4856,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: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0017-System-call-wrappers-part-07.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/exit.c linux-source-2.6.26/kernel/exit.c
---- linux-source-2.6.26.orig/kernel/exit.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/kernel/exit.c 2009-01-19 12:07:11.000000000 -0700
-@@ -1121,7 +1121,7 @@ NORET_TYPE void complete_and_exit(struct
+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
EXPORT_SYMBOL(complete_and_exit);
@@ -24,7 +24,7 @@
{
do_exit((error_code&0xff)<<8);
}
-@@ -1162,7 +1162,7 @@ do_group_exit(int exit_code)
+@@ -1104,7 +1104,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,21 +33,21 @@
{
do_group_exit((error_code & 0xff) << 8);
/* NOTREACHED */
-@@ -1698,8 +1698,8 @@ asmlinkage long sys_waitid(int which, pi
+@@ -1728,8 +1728,8 @@ asmlinkage long sys_waitid(int which, pi
return ret;
}
--asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
+-asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr,
- int options, struct rusage __user *ru)
-+SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
++SYSCALL_DEFINE4(wait4, pid_t, pid, int __user *, stat_addr,
+ int, options, struct rusage __user *, ru)
{
- struct pid *pid = NULL;
- enum pid_type type;
-diff -urpN linux-source-2.6.26.orig/kernel/kexec.c linux-source-2.6.26/kernel/kexec.c
---- linux-source-2.6.26.orig/kernel/kexec.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/kexec.c 2009-01-19 12:07:11.000000000 -0700
-@@ -921,9 +921,8 @@ struct kimage *kexec_crash_image;
+ 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;
*/
static int kexec_lock;
@@ -59,10 +59,10 @@
{
struct kimage **dest_image, *image;
int locked;
-diff -urpN linux-source-2.6.26.orig/kernel/sched.c linux-source-2.6.26/kernel/sched.c
---- linux-source-2.6.26.orig/kernel/sched.c 2009-01-19 12:05:32.000000000 -0700
-+++ linux-source-2.6.26/kernel/sched.c 2009-01-19 12:07:11.000000000 -0700
-@@ -5395,8 +5395,8 @@ SYSCALL_DEFINE1(sched_get_priority_min,
+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,
* this syscall writes the default timeslice value of a given process
* into the user-space timespec buffer. A value of '0' means infinity.
*/
@@ -73,10 +73,10 @@
{
struct task_struct *p;
unsigned int time_slice;
-diff -urpN linux-source-2.6.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-19 12:00:45.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 12:07:11.000000000 -0700
-@@ -1934,7 +1934,7 @@ EXPORT_SYMBOL(unblock_all_signals);
+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);
* System call entry points.
*/
@@ -85,10 +85,10 @@
{
struct restart_block *restart = ¤t_thread_info()->restart_block;
return restart->fn(restart);
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 12:00:45.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:07:11.000000000 -0700
-@@ -137,7 +137,7 @@ out:
+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:
return error;
}
@@ -97,7 +97,7 @@
{
struct task_struct *g, *p;
struct user_struct *user;
-@@ -201,7 +201,7 @@ out:
+@@ -195,7 +195,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;
-@@ -367,7 +367,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
+@@ -361,7 +361,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.26.orig/net/socket.c linux-source-2.6.26/net/socket.c
---- linux-source-2.6.26.orig/net/socket.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/net/socket.c 2009-01-19 12:07:11.000000000 -0700
-@@ -1758,7 +1758,7 @@ out_put:
+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:
* Shutdown a socket.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0018-System-call-wrappers-part-08.patch Wed Jan 21 08:39:04 2009
@@ -10,24 +10,24 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/kernel/exit.c linux-source-2.6.26/kernel/exit.c
---- linux-source-2.6.26.orig/kernel/exit.c 2009-01-19 12:07:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/exit.c 2009-01-19 12:08:21.000000000 -0700
-@@ -1657,9 +1657,8 @@ end:
+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:
return retval;
}
--asmlinkage long sys_waitid(int which, pid_t upid,
+-asmlinkage long sys_waitid(int which, pid_t pid,
- struct siginfo __user *infop, int options,
- struct rusage __user *ru)
-+SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
++SYSCALL_DEFINE5(waitid, int, which, pid_t, pid, struct siginfo __user *,
+ infop, int, options, struct rusage __user *, ru)
{
- struct pid *pid = NULL;
- enum pid_type type;
-@@ -1736,7 +1735,7 @@ SYSCALL_DEFINE4(wait4, pid_t, upid, int
+ long ret;
+
+@@ -1749,7 +1748,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,10 +36,10 @@
{
return sys_wait4(pid, stat_addr, options, NULL);
}
-diff -urpN linux-source-2.6.26.orig/kernel/fork.c linux-source-2.6.26/kernel/fork.c
---- linux-source-2.6.26.orig/kernel/fork.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/fork.c 2009-01-19 12:08:21.000000000 -0700
-@@ -838,7 +838,7 @@ static void copy_flags(unsigned long clo
+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);
}
@@ -48,10 +48,10 @@
{
current->clear_child_tid = tidptr;
-diff -urpN linux-source-2.6.26.orig/kernel/futex.c linux-source-2.6.26/kernel/futex.c
---- linux-source-2.6.26.orig/kernel/futex.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/futex.c 2009-01-19 12:08:21.000000000 -0700
-@@ -2036,9 +2036,9 @@ long do_futex(u32 __user *uaddr, int op,
+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,
}
@@ -64,10 +64,10 @@
{
struct timespec ts;
ktime_t t, *tp = NULL;
-diff -urpN linux-source-2.6.26.orig/kernel/module.c linux-source-2.6.26/kernel/module.c
---- linux-source-2.6.26.orig/kernel/module.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/kernel/module.c 2009-01-19 12:08:21.000000000 -0700
-@@ -685,8 +685,8 @@ static void wait_for_zero_refcount(struc
+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
mutex_lock(&module_mutex);
}
@@ -78,7 +78,7 @@
{
struct module *mod;
char name[MODULE_NAME_LEN];
-@@ -2189,10 +2189,8 @@ static struct module *load_module(void _
+@@ -2088,10 +2088,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.26.orig/kernel/sched.c linux-source-2.6.26/kernel/sched.c
---- linux-source-2.6.26.orig/kernel/sched.c 2009-01-19 12:07:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/sched.c 2009-01-19 12:08:21.000000000 -0700
-@@ -5395,7 +5395,7 @@ SYSCALL_DEFINE1(sched_get_priority_min,
+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,
* 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.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-19 12:07:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 12:09:29.000000000 -0700
-@@ -1987,8 +1987,8 @@ int sigprocmask(int how, sigset_t *set,
+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,
return error;
}
@@ -117,7 +117,7 @@
{
int error = -EINVAL;
sigset_t old_set, new_set;
-@@ -2047,8 +2047,7 @@ out:
+@@ -2060,8 +2060,7 @@ out:
return error;
}
@@ -127,7 +127,7 @@
{
return do_sigpending(set, sigsetsize);
}
-@@ -2119,11 +2118,9 @@ int copy_siginfo_to_user(siginfo_t __use
+@@ -2132,11 +2131,9 @@ int copy_siginfo_to_user(siginfo_t __use
#endif
@@ -142,7 +142,7 @@
{
int ret, sig;
sigset_t these;
-@@ -2196,8 +2193,7 @@ sys_rt_sigtimedwait(const sigset_t __use
+@@ -2209,8 +2206,7 @@ sys_rt_sigtimedwait(const sigset_t __use
return ret;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0019-System-call-wrappers-part-09.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/sync.c linux-source-2.6.26/fs/sync.c
---- linux-source-2.6.26.orig/fs/sync.c 2009-01-19 11:55:54.000000000 -0700
-+++ linux-source-2.6.26/fs/sync.c 2009-01-19 12:11:32.000000000 -0700
+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)
laptop_sync_completion();
}
@@ -39,10 +39,10 @@
{
return __do_fsync(fd, 1);
}
-diff -urpN linux-source-2.6.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-19 12:09:29.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 12:13:12.000000000 -0700
-@@ -2252,7 +2252,7 @@ static int do_tkill(int tgid, int pid, i
+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
* 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)
-@@ -2264,8 +2264,7 @@ asmlinkage long sys_tgkill(int tgid, int
+@@ -2274,8 +2274,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)
-@@ -2274,8 +2273,8 @@ sys_tkill(int pid, int sig)
+@@ -2284,8 +2283,8 @@ sys_tkill(int pid, int sig)
return do_tkill(0, pid, sig);
}
@@ -72,7 +72,7 @@
{
siginfo_t info;
-@@ -2499,15 +2498,13 @@ out:
+@@ -2510,15 +2509,13 @@ out:
/*
* For backwards compatibility. Functionality superseded by sigprocmask.
*/
@@ -90,7 +90,7 @@
{
int old;
-@@ -2527,8 +2524,7 @@ sys_ssetmask(int newmask)
+@@ -2538,8 +2535,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;
-@@ -2545,8 +2541,7 @@ sys_signal(int sig, __sighandler_t handl
+@@ -2556,8 +2552,7 @@ sys_signal(int sig, __sighandler_t handl
#ifdef __ARCH_WANT_SYS_PAUSE
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0020-System-call-wrappers-part-10.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/buffer.c linux-source-2.6.26/fs/buffer.c
---- linux-source-2.6.26.orig/fs/buffer.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/fs/buffer.c 2009-01-19 12:15:07.000000000 -0700
-@@ -3119,7 +3119,7 @@ void block_sync_page(struct page *page)
+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)
* 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.26.orig/fs/namespace.c linux-source-2.6.26/fs/namespace.c
---- linux-source-2.6.26.orig/fs/namespace.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/namespace.c 2009-01-19 12:15:07.000000000 -0700
-@@ -1119,7 +1119,7 @@ static int do_umount(struct vfsmount *mn
+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
* unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
*/
@@ -36,7 +36,7 @@
{
struct nameidata nd;
int retval;
-@@ -1151,7 +1151,7 @@ out:
+@@ -658,7 +658,7 @@ out:
/*
* The 2.0 compatible umount. No flags.
*/
@@ -45,7 +45,7 @@
{
return sys_umount(name, 0);
}
-@@ -2045,9 +2045,8 @@ struct mnt_namespace *copy_mnt_ns(unsign
+@@ -1547,9 +1547,8 @@ struct mnt_namespace *copy_mnt_ns(unsign
return new_ns;
}
@@ -57,10 +57,10 @@
{
int retval;
unsigned long data_page;
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 11:55:54.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:17:22.000000000 -0700
-@@ -121,7 +121,7 @@ static int vfs_statfs64(struct dentry *d
+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
return 0;
}
@@ -69,7 +69,7 @@
{
struct nameidata nd;
int error;
-@@ -137,8 +137,7 @@ asmlinkage long sys_statfs(const char __
+@@ -135,8 +135,7 @@ asmlinkage long sys_statfs(const char __
return error;
}
@@ -79,7 +79,7 @@
{
struct nameidata nd;
long error;
-@@ -156,8 +155,7 @@ asmlinkage long sys_statfs64(const char
+@@ -154,8 +153,7 @@ asmlinkage long sys_statfs64(const char
return error;
}
@@ -89,7 +89,7 @@
{
struct file * file;
struct statfs tmp;
-@@ -286,7 +284,7 @@ out:
+@@ -282,7 +280,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);
-@@ -335,7 +333,7 @@ out:
+@@ -331,7 +329,7 @@ out:
return error;
}
@@ -107,9 +107,9 @@
{
long ret = do_sys_ftruncate(fd, length, 1);
/* avoid REGPARM breakage on x86: */
-diff -urpN linux-source-2.6.26.orig/fs/stat.c linux-source-2.6.26/fs/stat.c
---- linux-source-2.6.26.orig/fs/stat.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/stat.c 2009-01-19 12:15:07.000000000 -0700
+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
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0021-System-call-wrappers-part-11.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:17:22.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:18:41.000000000 -0700
-@@ -173,7 +173,7 @@ out:
+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:
return error;
}
@@ -24,9 +24,9 @@
{
struct file * file;
struct statfs64 tmp;
-diff -urpN linux-source-2.6.26.orig/fs/stat.c linux-source-2.6.26/fs/stat.c
---- linux-source-2.6.26.orig/fs/stat.c 2009-01-19 12:15:07.000000000 -0700
-+++ linux-source-2.6.26/fs/stat.c 2009-01-19 12:18:41.000000000 -0700
+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
return error;
@@ -74,7 +74,7 @@
{
struct kstat stat;
int error = vfs_fstat(fd, &stat);
-@@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat *
+@@ -364,7 +366,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);
-@@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user *
+@@ -374,7 +376,8 @@ asmlinkage long sys_stat64(char __user *
return error;
}
@@ -93,7 +93,7 @@
{
struct kstat stat;
int error = vfs_lstat(filename, &stat);
-@@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user
+@@ -384,7 +387,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.26.orig/fs/super.c linux-source-2.6.26/fs/super.c
---- linux-source-2.6.26.orig/fs/super.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/super.c 2009-01-19 12:18:41.000000000 -0700
-@@ -533,7 +533,7 @@ rescan:
+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:
return NULL;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0022-System-call-wrappers-part-12.patch Wed Jan 21 08:39:04 2009
@@ -10,107 +10,107 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/xattr.c linux-source-2.6.26/fs/xattr.c
---- linux-source-2.6.26.orig/fs/xattr.c 2009-01-19 11:14:17.000000000 -0700
-+++ linux-source-2.6.26/fs/xattr.c 2009-01-19 12:22:58.000000000 -0700
-@@ -251,9 +251,9 @@ setxattr(struct dentry *d, const char __
+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 *
return error;
}
-asmlinkage long
--sys_setxattr(const char __user *path, const char __user *name,
-- const void __user *value, size_t size, int flags)
-+SYSCALL_DEFINE5(setxattr, const char __user *, path,
-+ const char __user *, name, const void __user *, value,
+-sys_setxattr(char __user *path, char __user *name, void __user *value,
+- size_t size, int flags)
++SYSCALL_DEFINE5(setxattr, char __user *, path,
++ char __user *, name, void __user *, value,
+ size_t, size, int, flags)
{
struct nameidata nd;
int error;
-@@ -270,9 +270,9 @@ sys_setxattr(const char __user *path, co
+@@ -240,9 +240,9 @@ sys_setxattr(char __user *path, char __u
return error;
}
-asmlinkage long
--sys_lsetxattr(const char __user *path, const char __user *name,
-- const void __user *value, size_t size, int flags)
-+SYSCALL_DEFINE5(lsetxattr, const char __user *, path,
-+ const char __user *, name, const void __user *, value,
+-sys_lsetxattr(char __user *path, char __user *name, void __user *value,
+- size_t size, int flags)
++SYSCALL_DEFINE5(lsetxattr, char __user *, path,
++ char __user *, name, void __user *, value,
+ size_t, size, int, flags)
{
struct nameidata nd;
int error;
-@@ -289,9 +289,8 @@ sys_lsetxattr(const char __user *path, c
+@@ -255,9 +255,8 @@ sys_lsetxattr(char __user *path, char __
return error;
}
-asmlinkage long
--sys_fsetxattr(int fd, const char __user *name, const void __user *value,
+-sys_fsetxattr(int fd, char __user *name, void __user *value,
- size_t size, int flags)
-+SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
-+ const void __user *,value, size_t, size, int, flags)
++SYSCALL_DEFINE5(fsetxattr, int, fd, char __user *, name,
++ void __user *,value, size_t, size, int, flags)
{
struct file *f;
struct dentry *dentry;
-@@ -349,9 +348,8 @@ getxattr(struct dentry *d, const char __
+@@ -310,9 +309,8 @@ getxattr(struct dentry *d, char __user *
return error;
}
-asmlinkage long
--sys_getxattr(const char __user *path, const char __user *name,
-- void __user *value, size_t size)
-+SYSCALL_DEFINE4(getxattr, const char __user *, path,
-+ const char __user *, name, void __user *, value, size_t, size)
+-sys_getxattr(char __user *path, char __user *name, void __user *value,
+- size_t size)
++SYSCALL_DEFINE4(getxattr, char __user *, path,
++ char __user *, name, void __user *, value, size_t, size)
{
struct nameidata nd;
ssize_t error;
-@@ -364,9 +362,8 @@ sys_getxattr(const char __user *path, co
+@@ -325,9 +323,8 @@ sys_getxattr(char __user *path, char __u
return error;
}
-asmlinkage long
--sys_lgetxattr(const char __user *path, const char __user *name, void __user *value,
+-sys_lgetxattr(char __user *path, char __user *name, void __user *value,
- size_t size)
-+SYSCALL_DEFINE4(lgetxattr, const char __user *, path,
-+ const char __user *, name, void __user *, value, size_t, size)
++SYSCALL_DEFINE4(lgetxattr, char __user *, path,
++ char __user *, name, void __user *, value, size_t, size)
{
struct nameidata nd;
ssize_t error;
-@@ -379,8 +376,8 @@ sys_lgetxattr(const char __user *path, c
+@@ -340,8 +337,8 @@ sys_lgetxattr(char __user *path, char __
return error;
}
-asmlinkage long
--sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size)
-+SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
+-sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size)
++SYSCALL_DEFINE4(fgetxattr, int, fd, char __user *, name,
+ void __user *, value, size_t, size)
{
struct file *f;
ssize_t error = -EBADF;
-@@ -424,8 +421,8 @@ listxattr(struct dentry *d, char __user
+@@ -385,8 +382,8 @@ listxattr(struct dentry *d, char __user
return error;
}
-asmlinkage long
--sys_listxattr(const char __user *path, char __user *list, size_t size)
-+SYSCALL_DEFINE3(listxattr, const char __user *, path, char __user *, list,
+-sys_listxattr(char __user *path, char __user *list, size_t size)
++SYSCALL_DEFINE3(listxattr, char __user *, path, char __user *, list,
+ size_t, size)
{
struct nameidata nd;
ssize_t error;
-@@ -438,8 +435,8 @@ sys_listxattr(const char __user *path, c
+@@ -399,8 +396,8 @@ sys_listxattr(char __user *path, char __
return error;
}
-asmlinkage long
--sys_llistxattr(const char __user *path, char __user *list, size_t size)
-+SYSCALL_DEFINE3(llistxattr, const char __user *, path, char __user *, list,
+-sys_llistxattr(char __user *path, char __user *list, size_t size)
++SYSCALL_DEFINE3(llistxattr, char __user *, path, char __user *, list,
+ size_t, size)
{
struct nameidata nd;
ssize_t error;
-@@ -452,8 +449,7 @@ sys_llistxattr(const char __user *path,
+@@ -413,8 +410,7 @@ sys_llistxattr(char __user *path, char _
return error;
}
@@ -120,14 +120,14 @@
{
struct file *f;
ssize_t error = -EBADF;
-@@ -485,8 +481,8 @@ removexattr(struct dentry *d, const char
+@@ -446,8 +442,8 @@ removexattr(struct dentry *d, char __use
return vfs_removexattr(d, kname);
}
-asmlinkage long
--sys_removexattr(const char __user *path, const char __user *name)
-+SYSCALL_DEFINE2(removexattr, const char __user *, path,
-+ const char __user *, name)
+-sys_removexattr(char __user *path, char __user *name)
++SYSCALL_DEFINE2(removexattr, char __user *, path,
++ char __user *, name)
{
struct nameidata nd;
int error;
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0023-System-call-wrappers-part-13.patch Wed Jan 21 08:39:04 2009
@@ -10,35 +10,35 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/xattr.c linux-source-2.6.26/fs/xattr.c
---- linux-source-2.6.26.orig/fs/xattr.c 2009-01-19 12:22:58.000000000 -0700
-+++ linux-source-2.6.26/fs/xattr.c 2009-01-19 12:24:41.000000000 -0700
-@@ -499,8 +499,8 @@ SYSCALL_DEFINE2(removexattr, const char
+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
return error;
}
-asmlinkage long
--sys_lremovexattr(const char __user *path, const char __user *name)
-+SYSCALL_DEFINE2(lremovexattr, const char __user *, path,
-+ const char __user *, name)
+-sys_lremovexattr(char __user *path, char __user *name)
++SYSCALL_DEFINE2(lremovexattr, char __user *, path,
++ char __user *, name)
{
struct nameidata nd;
int error;
-@@ -517,8 +517,7 @@ sys_lremovexattr(const char __user *path
+@@ -470,8 +470,7 @@ sys_lremovexattr(char __user *path, char
return error;
}
-asmlinkage long
--sys_fremovexattr(int fd, const char __user *name)
-+SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
+-sys_fremovexattr(int fd, char __user *name)
++SYSCALL_DEFINE2(fremovexattr, int, fd, char __user *, name)
{
struct file *f;
struct dentry *dentry;
-diff -urpN linux-source-2.6.26.orig/mm/fremap.c linux-source-2.6.26/mm/fremap.c
---- linux-source-2.6.26.orig/mm/fremap.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/fremap.c 2009-01-19 12:24:06.000000000 -0700
+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.
@@ -50,10 +50,10 @@
{
struct mm_struct *mm = current->mm;
struct address_space *mapping;
-diff -urpN linux-source-2.6.26.orig/mm/mlock.c linux-source-2.6.26/mm/mlock.c
---- linux-source-2.6.26.orig/mm/mlock.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/mm/mlock.c 2009-01-19 12:24:06.000000000 -0700
-@@ -130,7 +130,7 @@ static int do_mlock(unsigned long start,
+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,
return error;
}
@@ -62,7 +62,7 @@
{
unsigned long locked;
unsigned long lock_limit;
-@@ -156,7 +156,7 @@ asmlinkage long sys_mlock(unsigned long
+@@ -158,7 +158,7 @@ asmlinkage long sys_mlock(unsigned long
return error;
}
@@ -71,10 +71,10 @@
{
int ret;
-diff -urpN linux-source-2.6.26.orig/mm/mmap.c linux-source-2.6.26/mm/mmap.c
---- linux-source-2.6.26.orig/mm/mmap.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/mm/mmap.c 2009-01-19 12:24:06.000000000 -0700
-@@ -240,7 +240,7 @@ static struct vm_area_struct *remove_vma
+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
return next;
}
@@ -83,7 +83,7 @@
{
unsigned long rlim, retval;
unsigned long newbrk, oldbrk;
-@@ -1915,7 +1915,7 @@ int do_munmap(struct mm_struct *mm, unsi
+@@ -1894,7 +1894,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.26.orig/mm/mprotect.c linux-source-2.6.26/mm/mprotect.c
---- linux-source-2.6.26.orig/mm/mprotect.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/mm/mprotect.c 2009-01-19 12:24:06.000000000 -0700
-@@ -218,8 +218,8 @@ fail:
+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:
return error;
}
@@ -106,9 +106,9 @@
{
unsigned long vm_flags, nstart, end, tmp, reqprot;
struct vm_area_struct *vma, *prev;
-diff -urpN linux-source-2.6.26.orig/mm/mremap.c linux-source-2.6.26/mm/mremap.c
---- linux-source-2.6.26.orig/mm/mremap.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/mm/mremap.c 2009-01-19 12:24:06.000000000 -0700
+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:
return ret;
}
@@ -122,9 +122,9 @@
{
unsigned long ret;
-diff -urpN linux-source-2.6.26.orig/mm/msync.c linux-source-2.6.26/mm/msync.c
---- linux-source-2.6.26.orig/mm/msync.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/msync.c 2009-01-19 12:24:06.000000000 -0700
+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.
@@ -134,10 +134,10 @@
{
unsigned long end;
struct mm_struct *mm = current->mm;
-diff -urpN linux-source-2.6.26.orig/mm/nommu.c linux-source-2.6.26/mm/nommu.c
---- linux-source-2.6.26.orig/mm/nommu.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/mm/nommu.c 2009-01-19 12:24:06.000000000 -0700
-@@ -334,7 +334,7 @@ EXPORT_SYMBOL(vm_insert_page);
+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);
* to a regular file. in this case, the unmapping will need
* to invoke file system routines that need the global lock.
*/
@@ -146,7 +146,7 @@
{
struct mm_struct *mm = current->mm;
-@@ -1149,7 +1149,7 @@ int do_munmap(struct mm_struct *mm, unsi
+@@ -1099,7 +1099,7 @@ int do_munmap(struct mm_struct *mm, unsi
}
EXPORT_SYMBOL(do_munmap);
@@ -155,7 +155,7 @@
{
int ret;
struct mm_struct *mm = current->mm;
-@@ -1240,9 +1240,9 @@ unsigned long do_mremap(unsigned long ad
+@@ -1190,9 +1190,9 @@ unsigned long do_mremap(unsigned long ad
}
EXPORT_SYMBOL(do_mremap);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0024-System-call-wrappers-part-14.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/namei.c linux-source-2.6.26/fs/namei.c
---- linux-source-2.6.26.orig/fs/namei.c 2009-01-10 05:42:11.000000000 -0700
-+++ linux-source-2.6.26/fs/namei.c 2009-01-19 12:25:45.000000000 -0700
-@@ -2138,7 +2138,7 @@ out:
+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:
return error;
}
@@ -24,7 +24,7 @@
{
return sys_mknodat(AT_FDCWD, filename, mode, dev);
}
-@@ -2419,7 +2419,7 @@ asmlinkage long sys_unlinkat(int dfd, co
+@@ -2273,7 +2273,7 @@ asmlinkage long sys_unlinkat(int dfd, co
return do_unlinkat(dfd, pathname);
}
@@ -33,7 +33,7 @@
{
return do_unlinkat(AT_FDCWD, pathname);
}
-@@ -2487,7 +2487,7 @@ out_putname:
+@@ -2336,7 +2336,7 @@ out_putname:
return error;
}
@@ -42,7 +42,7 @@
{
return sys_symlinkat(oldname, AT_FDCWD, newname);
}
-@@ -2589,7 +2589,7 @@ exit:
+@@ -2433,7 +2433,7 @@ exit:
return error;
}
@@ -51,10 +51,10 @@
{
return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
}
-diff -urpN linux-source-2.6.26.orig/fs/namespace.c linux-source-2.6.26/fs/namespace.c
---- linux-source-2.6.26.orig/fs/namespace.c 2009-01-19 12:15:07.000000000 -0700
-+++ linux-source-2.6.26/fs/namespace.c 2009-01-19 12:25:45.000000000 -0700
-@@ -2171,8 +2171,8 @@ static void chroot_fs_refs(struct path *
+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
* though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
* first.
*/
@@ -64,11 +64,11 @@
+ const char __user *, put_old)
{
struct vfsmount *tmp;
- struct nameidata new_nd, old_nd;
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:18:41.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:25:45.000000000 -0700
-@@ -562,7 +562,7 @@ out:
+ 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:
return error;
}
@@ -77,9 +77,9 @@
{
struct nameidata nd;
int error;
-diff -urpN linux-source-2.6.26.orig/mm/madvise.c linux-source-2.6.26/mm/madvise.c
---- linux-source-2.6.26.orig/mm/madvise.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/madvise.c 2009-01-19 12:25:45.000000000 -0700
+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,
* -EBADF - map exists, but area maps something that isn't a file.
* -EAGAIN - a kernel resource was temporarily unavailable.
@@ -89,9 +89,9 @@
{
unsigned long end, tmp;
struct vm_area_struct * vma, *prev;
-diff -urpN linux-source-2.6.26.orig/mm/mincore.c linux-source-2.6.26/mm/mincore.c
---- linux-source-2.6.26.orig/mm/mincore.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/mincore.c 2009-01-19 12:25:45.000000000 -0700
+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:
* mapped
* -EAGAIN - A kernel resource was temporarily unavailable.
@@ -103,10 +103,10 @@
{
long retval;
unsigned long pages;
-diff -urpN linux-source-2.6.26.orig/mm/mlock.c linux-source-2.6.26/mm/mlock.c
---- linux-source-2.6.26.orig/mm/mlock.c 2009-01-19 12:24:06.000000000 -0700
-+++ linux-source-2.6.26/mm/mlock.c 2009-01-19 12:25:45.000000000 -0700
-@@ -193,7 +193,7 @@ out:
+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:
return 0;
}
@@ -115,7 +115,7 @@
{
unsigned long lock_limit;
int ret = -EINVAL;
-@@ -219,7 +219,7 @@ out:
+@@ -221,7 +221,7 @@ out:
return ret;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0025-System-call-wrappers-part-15.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/fcntl.c linux-source-2.6.26/fs/fcntl.c
---- linux-source-2.6.26.orig/fs/fcntl.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/fcntl.c 2009-01-19 12:26:42.000000000 -0700
-@@ -126,7 +126,7 @@ static int dupfd(struct file *file, unsi
+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
return fd;
}
@@ -24,7 +24,7 @@
{
int err = -EBADF;
struct file * file, *tofree;
-@@ -182,7 +182,7 @@ out_fput:
+@@ -193,7 +193,7 @@ out_fput:
goto out;
}
@@ -33,7 +33,7 @@
{
int ret = -EBADF;
struct file * file = fget(fildes);
-@@ -376,7 +376,7 @@ static long do_fcntl(int fd, unsigned in
+@@ -387,7 +387,7 @@ static long do_fcntl(int fd, unsigned in
return err;
}
@@ -42,7 +42,7 @@
{
struct file *filp;
long err = -EBADF;
-@@ -399,7 +399,8 @@ out:
+@@ -410,7 +410,8 @@ out:
}
#if BITS_PER_LONG == 32
@@ -52,22 +52,22 @@
{
struct file * filp;
long err;
-diff -urpN linux-source-2.6.26.orig/fs/ioctl.c linux-source-2.6.26/fs/ioctl.c
---- linux-source-2.6.26.orig/fs/ioctl.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/ioctl.c 2009-01-19 12:26:42.000000000 -0700
-@@ -191,7 +191,7 @@ int do_vfs_ioctl(struct file *filp, unsi
+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
return error;
}
-asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
+SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
{
- struct file *filp;
+ struct file * filp;
int error = -EBADF;
-diff -urpN linux-source-2.6.26.orig/fs/namei.c linux-source-2.6.26/fs/namei.c
---- linux-source-2.6.26.orig/fs/namei.c 2009-01-19 12:25:45.000000000 -0700
-+++ linux-source-2.6.26/fs/namei.c 2009-01-19 12:26:42.000000000 -0700
-@@ -2841,7 +2841,7 @@ asmlinkage long sys_renameat(int olddfd,
+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,
return error;
}
@@ -76,10 +76,10 @@
{
return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
}
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:25:45.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:26:42.000000000 -0700
-@@ -588,7 +588,7 @@ out:
+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:
return error;
}
@@ -88,7 +88,7 @@
{
struct inode * inode;
struct dentry * dentry;
-@@ -664,7 +664,7 @@ out:
+@@ -645,7 +645,7 @@ out:
return error;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0026-System-call-wrappers-part-16.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/aio.c linux-source-2.6.26/fs/aio.c
---- linux-source-2.6.26.orig/fs/aio.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/aio.c 2009-01-19 12:30:49.000000000 -0700
-@@ -1260,7 +1260,7 @@ static void io_destroy(struct kioctx *io
+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
* pointer is passed for ctxp. Will fail with -ENOSYS if not
* implemented.
*/
@@ -24,7 +24,7 @@
{
struct kioctx *ioctx = NULL;
unsigned long ctx;
-@@ -1298,7 +1298,7 @@ out:
+@@ -1285,7 +1285,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)) {
-@@ -1652,8 +1652,8 @@ out_put_req:
+@@ -1628,8 +1628,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;
-@@ -1727,8 +1727,8 @@ static struct kiocb *lookup_kiocb(struct
+@@ -1703,8 +1703,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;
-@@ -1789,11 +1789,11 @@ asmlinkage long sys_io_cancel(aio_contex
+@@ -1765,11 +1765,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.26.orig/fs/locks.c linux-source-2.6.26/fs/locks.c
---- linux-source-2.6.26.orig/fs/locks.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/locks.c 2009-01-19 12:30:49.000000000 -0700
-@@ -1564,7 +1564,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
+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);
* %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.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:26:42.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:30:49.000000000 -0700
-@@ -1155,7 +1155,7 @@ asmlinkage long sys_openat(int dfd, cons
+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
* 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.26.orig/fs/read_write.c linux-source-2.6.26/fs/read_write.c
---- linux-source-2.6.26.orig/fs/read_write.c 2009-01-19 11:55:54.000000000 -0700
-+++ linux-source-2.6.26/fs/read_write.c 2009-01-19 12:30:49.000000000 -0700
-@@ -809,7 +809,7 @@ out:
+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:
return retval;
}
@@ -108,7 +108,7 @@
{
loff_t pos;
off_t off;
-@@ -828,7 +828,7 @@ asmlinkage long sys_sendfile(int out_fd,
+@@ -843,7 +843,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.26.orig/fs/stat.c linux-source-2.6.26/fs/stat.c
---- linux-source-2.6.26.orig/fs/stat.c 2009-01-19 12:18:41.000000000 -0700
-+++ linux-source-2.6.26/fs/stat.c 2009-01-19 12:30:49.000000000 -0700
-@@ -320,8 +320,8 @@ asmlinkage long sys_readlinkat(int dfd,
+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,
return error;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0027-System-call-wrappers-part-17.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:30:49.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:31:38.000000000 -0700
-@@ -509,7 +509,7 @@ out:
+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:
return res;
}
@@ -24,7 +24,7 @@
{
return sys_faccessat(AT_FDCWD, filename, mode);
}
-@@ -702,7 +702,7 @@ out:
+@@ -686,7 +686,7 @@ out:
return error;
}
@@ -33,7 +33,7 @@
{
struct nameidata nd;
int error;
-@@ -746,7 +746,7 @@ out:
+@@ -720,7 +720,7 @@ out:
return error;
}
@@ -42,7 +42,7 @@
{
struct nameidata nd;
int error;
-@@ -765,8 +765,7 @@ out:
+@@ -734,8 +734,7 @@ out:
return error;
}
@@ -52,7 +52,7 @@
{
struct file * file;
int error = -EBADF;
-@@ -1122,7 +1121,7 @@ long do_sys_open(int dfd, const char __u
+@@ -1068,7 +1067,7 @@ long do_sys_open(int dfd, const char __u
return fd;
}
@@ -61,7 +61,7 @@
{
long ret;
-@@ -1191,7 +1190,7 @@ EXPORT_SYMBOL(filp_close);
+@@ -1138,7 +1137,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;
-@@ -1224,14 +1223,13 @@ out_unlock:
+@@ -1171,14 +1170,13 @@ out_unlock:
spin_unlock(&files->file_lock);
return -EBADF;
}
@@ -86,9 +86,9 @@
{
if (capable(CAP_SYS_TTY_CONFIG)) {
/* XXX: this needs locking */
-diff -urpN linux-source-2.6.26.orig/kernel/uid16.c linux-source-2.6.26/kernel/uid16.c
---- linux-source-2.6.26.orig/kernel/uid16.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/uid16.c 2009-01-19 12:31:38.000000000 -0700
+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 @@
#include <asm/uaccess.h>
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0029-System-call-wrappers-part-19.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/read_write.c linux-source-2.6.26/fs/read_write.c
---- linux-source-2.6.26.orig/fs/read_write.c 2009-01-19 12:30:49.000000000 -0700
-+++ linux-source-2.6.26/fs/read_write.c 2009-01-19 12:32:59.000000000 -0700
+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
}
EXPORT_SYMBOL(vfs_llseek);
@@ -37,10 +37,10 @@
{
int retval;
struct file * file;
-diff -urpN linux-source-2.6.26.orig/fs/utimes.c linux-source-2.6.26/fs/utimes.c
---- linux-source-2.6.26.orig/fs/utimes.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/utimes.c 2009-01-19 12:32:59.000000000 -0700
-@@ -24,7 +24,7 @@
+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.
*/
@@ -49,7 +49,7 @@
{
struct timespec tv[2];
-@@ -211,7 +211,8 @@ asmlinkage long sys_futimesat(int dfd, c
+@@ -207,7 +207,8 @@ asmlinkage long sys_futimesat(int dfd, c
return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
}
@@ -59,9 +59,9 @@
{
return sys_futimesat(AT_FDCWD, filename, utimes);
}
-diff -urpN linux-source-2.6.26.orig/kernel/uid16.c linux-source-2.6.26/kernel/uid16.c
---- linux-source-2.6.26.orig/kernel/uid16.c 2009-01-19 12:32:45.000000000 -0700
-+++ linux-source-2.6.26/kernel/uid16.c 2009-01-19 12:32:59.000000000 -0700
+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
return 0;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0030-System-call-wrappers-part-20.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/dcache.c linux-source-2.6.26/fs/dcache.c
---- linux-source-2.6.26.orig/fs/dcache.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/dcache.c 2009-01-19 12:33:56.000000000 -0700
-@@ -1956,7 +1956,7 @@ Elong:
+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
* return NULL;
* }
*/
@@ -23,11 +23,11 @@
+SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size)
{
int error;
- struct path pwd, root;
-diff -urpN linux-source-2.6.26.orig/fs/namei.c linux-source-2.6.26/fs/namei.c
---- linux-source-2.6.26.orig/fs/namei.c 2009-01-19 12:26:42.000000000 -0700
-+++ linux-source-2.6.26/fs/namei.c 2009-01-19 12:33:56.000000000 -0700
-@@ -2203,7 +2203,7 @@ out_err:
+ 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:
return error;
}
@@ -36,7 +36,7 @@
{
return sys_mkdirat(AT_FDCWD, pathname, mode);
}
-@@ -2315,7 +2315,7 @@ exit:
+@@ -2174,7 +2174,7 @@ exit:
return error;
}
@@ -45,10 +45,10 @@
{
return do_rmdir(AT_FDCWD, pathname);
}
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:31:38.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:33:56.000000000 -0700
-@@ -514,7 +514,7 @@ SYSCALL_DEFINE2(access, const char __use
+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
return sys_faccessat(AT_FDCWD, filename, mode);
}
@@ -57,7 +57,7 @@
{
struct nameidata nd;
int error;
-@@ -536,7 +536,7 @@ out:
+@@ -517,7 +517,7 @@ out:
return error;
}
@@ -65,11 +65,11 @@
+SYSCALL_DEFINE1(fchdir, unsigned int, fd)
{
struct file *file;
- struct inode *inode;
-diff -urpN linux-source-2.6.26.orig/fs/quota.c linux-source-2.6.26/fs/quota.c
---- linux-source-2.6.26.orig/fs/quota.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/quota.c 2009-01-19 12:33:56.000000000 -0700
-@@ -362,7 +362,8 @@ static inline struct super_block *quotac
+ 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
* 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.26.orig/fs/read_write.c linux-source-2.6.26/fs/read_write.c
---- linux-source-2.6.26.orig/fs/read_write.c 2009-01-19 12:32:59.000000000 -0700
-+++ linux-source-2.6.26/fs/read_write.c 2009-01-19 12:33:56.000000000 -0700
-@@ -350,7 +350,7 @@ static inline void file_pos_write(struct
+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
file->f_pos = pos;
}
@@ -91,9 +91,9 @@
{
struct file *file;
ssize_t ret = -EBADF;
-@@ -367,7 +367,8 @@ asmlinkage long sys_read(unsigned int fd
- return ret;
+@@ -372,7 +372,8 @@ asmlinkage long sys_read(unsigned int fd
}
+ EXPORT_UNUSED_SYMBOL_GPL(sys_read); /* to be deleted for 2.6.25 */
-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;
-@@ -669,8 +670,8 @@ ssize_t vfs_writev(struct file *file, co
+@@ -676,8 +677,8 @@ ssize_t vfs_writev(struct file *file, co
EXPORT_SYMBOL(vfs_writev);
@@ -112,7 +112,7 @@
{
struct file *file;
ssize_t ret = -EBADF;
-@@ -690,8 +691,8 @@ sys_readv(unsigned long fd, const struct
+@@ -697,8 +698,8 @@ sys_readv(unsigned long fd, const struct
return ret;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0031-System-call-wrappers-part-21.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/readdir.c linux-source-2.6.26/fs/readdir.c
---- linux-source-2.6.26.orig/fs/readdir.c 2009-01-19 11:17:08.000000000 -0700
-+++ linux-source-2.6.26/fs/readdir.c 2009-01-19 12:34:46.000000000 -0700
-@@ -183,7 +183,8 @@ efault:
+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:
return -EFAULT;
}
@@ -25,7 +25,7 @@
{
struct file * file;
struct linux_dirent __user * lastdirent;
-@@ -267,7 +268,8 @@ efault:
+@@ -264,7 +265,8 @@ efault:
return -EFAULT;
}
@@ -35,10 +35,10 @@
{
struct file * file;
struct linux_dirent64 __user * lastdirent;
-diff -urpN linux-source-2.6.26.orig/net/socket.c linux-source-2.6.26/net/socket.c
---- linux-source-2.6.26.orig/net/socket.c 2009-01-19 12:07:11.000000000 -0700
-+++ linux-source-2.6.26/net/socket.c 2009-01-19 12:34:46.000000000 -0700
-@@ -1338,7 +1338,7 @@ out_fd:
+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:
* the protocol layer (having also checked the address is ok).
*/
@@ -47,7 +47,7 @@
{
struct socket *sock;
char address[MAX_SOCK_ADDR];
-@@ -1400,8 +1400,8 @@ asmlinkage long sys_listen(int fd, int b
+@@ -1386,8 +1386,8 @@ asmlinkage long sys_listen(int fd, int b
* clean when we restucture accept also.
*/
@@ -58,7 +58,7 @@
{
struct socket *sock, *newsock;
struct file *newfile;
-@@ -1490,8 +1490,8 @@ out_fd:
+@@ -1476,8 +1476,8 @@ out_fd:
* include the -EINPROGRESS status for such sockets.
*/
@@ -69,7 +69,7 @@
{
struct socket *sock;
char address[MAX_SOCK_ADDR];
-@@ -1522,8 +1522,8 @@ out:
+@@ -1508,8 +1508,8 @@ out:
* name to user space.
*/
@@ -80,7 +80,7 @@
{
struct socket *sock;
char address[MAX_SOCK_ADDR];
-@@ -1553,8 +1553,8 @@ out:
+@@ -1539,8 +1539,8 @@ out:
* name to user space.
*/
@@ -91,7 +91,7 @@
{
struct socket *sock;
char address[MAX_SOCK_ADDR];
-@@ -1694,8 +1694,8 @@ asmlinkage long sys_recv(int fd, void __
+@@ -1691,8 +1691,8 @@ asmlinkage long sys_recv(int fd, void __
* to pass the user mode parameter for the protocols to sort out.
*/
@@ -102,7 +102,7 @@
{
int err, fput_needed;
struct socket *sock;
-@@ -1728,8 +1728,8 @@ out_put:
+@@ -1725,8 +1725,8 @@ out_put:
* to pass a user mode parameter for the protocols to sort out.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0032-System-call-wrappers-part-22.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/net/socket.c linux-source-2.6.26/net/socket.c
---- linux-source-2.6.26.orig/net/socket.c 2009-01-19 12:34:46.000000000 -0700
-+++ linux-source-2.6.26/net/socket.c 2009-01-19 12:42:27.000000000 -0700
-@@ -1213,7 +1213,7 @@ int sock_create_kern(int family, int typ
+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);
}
@@ -24,7 +24,7 @@
{
int retval;
struct socket *sock;
-@@ -1239,8 +1239,8 @@ out_release:
+@@ -1225,8 +1225,8 @@ out_release:
* Create a pair of connected sockets.
*/
@@ -35,16 +35,16 @@
{
struct socket *sock1, *sock2;
int fd1, fd2, err;
-@@ -1367,7 +1367,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
- * ready for listening.
- */
+@@ -1355,7 +1355,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
+
+ int sysctl_somaxconn __read_mostly = SOMAXCONN;
-asmlinkage long sys_listen(int fd, int backlog)
+SYSCALL_DEFINE2(listen, int, fd, int, backlog)
{
struct socket *sock;
int err, fput_needed;
-@@ -1585,9 +1585,9 @@ SYSCALL_DEFINE3(getpeername, int, fd, st
+@@ -1571,9 +1571,9 @@ SYSCALL_DEFINE3(getpeername, int, fd, st
* the protocol.
*/
@@ -57,7 +57,7 @@
{
struct socket *sock;
char address[MAX_SOCK_ADDR];
-@@ -1630,7 +1630,8 @@ out:
+@@ -1621,7 +1621,8 @@ out:
* Send a datagram down a socket.
*/
@@ -67,7 +67,7 @@
{
return sys_sendto(fd, buff, len, flags, NULL, 0);
}
-@@ -1641,9 +1642,9 @@ asmlinkage long sys_send(int fd, void __
+@@ -1632,9 +1633,9 @@ asmlinkage long sys_send(int fd, void __
* sender address from kernel to user space.
*/
@@ -80,7 +80,7 @@
{
struct socket *sock;
struct iovec iov;
-@@ -1784,7 +1785,7 @@ SYSCALL_DEFINE2(shutdown, int, fd, int,
+@@ -1781,7 +1782,7 @@ SYSCALL_DEFINE2(shutdown, int, fd, int,
* BSD sendmsg interface
*/
@@ -89,7 +89,7 @@
{
struct compat_msghdr __user *msg_compat =
(struct compat_msghdr __user *)msg;
-@@ -1886,8 +1887,8 @@ out:
+@@ -1883,8 +1884,8 @@ out:
* BSD recvmsg interface
*/
@@ -100,7 +100,7 @@
{
struct compat_msghdr __user *msg_compat =
(struct compat_msghdr __user *)msg;
-@@ -2004,7 +2005,7 @@ static const unsigned char nargs[18]={
+@@ -2001,7 +2002,7 @@ static const unsigned char nargs[18]={
* it is set by the callees.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0033-System-call-wrappers-part-23.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/eventpoll.c linux-source-2.6.26/fs/eventpoll.c
---- linux-source-2.6.26.orig/fs/eventpoll.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/eventpoll.c 2009-01-19 12:46:21.000000000 -0700
-@@ -1046,7 +1046,7 @@ retry:
+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).
*/
@@ -24,7 +24,7 @@
{
int error, fd = -1;
struct eventpoll *ep;
-@@ -1084,8 +1084,8 @@ error_return:
+@@ -1115,8 +1115,8 @@ error_return:
* the eventpoll file that enables the insertion/removal/change of
* file descriptors inside the interest set.
*/
@@ -35,7 +35,7 @@
{
int error;
struct file *file, *tfile;
-@@ -1182,8 +1182,8 @@ error_return:
+@@ -1213,8 +1213,8 @@ error_return:
* Implement the event wait interface for the eventpoll file. It is the kernel
* part of the user space epoll_wait(2).
*/
@@ -46,7 +46,7 @@
{
int error;
struct file *file;
-@@ -1240,9 +1240,9 @@ error_return:
+@@ -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).
*/
@@ -59,10 +59,10 @@
{
int error;
sigset_t ksigmask, sigsaved;
-diff -urpN linux-source-2.6.26.orig/fs/select.c linux-source-2.6.26/fs/select.c
---- linux-source-2.6.26.orig/fs/select.c 2009-01-19 11:42:04.000000000 -0700
-+++ linux-source-2.6.26/fs/select.c 2009-01-19 12:43:21.000000000 -0700
-@@ -374,8 +374,8 @@ out_nofds:
+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:
return ret;
}
@@ -73,7 +73,7 @@
{
s64 timeout = -1;
struct timeval tv;
-@@ -727,8 +727,8 @@ static long do_restart_poll(struct resta
+@@ -726,8 +726,8 @@ static long do_restart_poll(struct resta
return ret;
}
@@ -84,10 +84,10 @@
{
s64 timeout_jiffies;
int ret;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 12:07:11.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:43:21.000000000 -0700
-@@ -1357,7 +1357,7 @@ asmlinkage long sys_newuname(struct new_
+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_
return errno;
}
@@ -96,7 +96,7 @@
{
int errno;
char tmp[__NEW_UTS_LEN];
-@@ -1379,7 +1379,7 @@ asmlinkage long sys_sethostname(char __u
+@@ -1376,7 +1376,7 @@ asmlinkage long sys_sethostname(char __u
#ifdef __ARCH_WANT_SYS_GETHOSTNAME
@@ -105,7 +105,7 @@
{
int i, errno;
-@@ -1402,7 +1402,7 @@ asmlinkage long sys_gethostname(char __u
+@@ -1399,7 +1399,7 @@ asmlinkage long sys_gethostname(char __u
* Only setdomainname; getdomainname can be implemented by calling
* uname()
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0034-System-call-wrappers-part-24.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/ipc/msg.c linux-source-2.6.26/ipc/msg.c
---- linux-source-2.6.26.orig/ipc/msg.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/ipc/msg.c 2009-01-19 12:47:29.000000000 -0700
-@@ -309,7 +309,7 @@ static inline int msg_security(struct ke
+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);
}
@@ -24,16 +24,16 @@
{
struct ipc_namespace *ns;
struct ipc_ops msg_ops;
-@@ -466,7 +466,7 @@ out_up:
- return err;
+@@ -421,7 +421,7 @@ copy_msqid_from_user(struct msq_setbuf *
+ }
}
-asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
+SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
{
- struct msg_queue *msq;
- int err, version;
-@@ -723,8 +723,8 @@ out_free:
+ struct kern_ipc_perm *ipcp;
+ struct msq_setbuf uninitialized_var(setbuf);
+@@ -749,8 +749,8 @@ out_free:
return err;
}
@@ -44,7 +44,7 @@
{
long mtype;
-@@ -904,8 +904,8 @@ out_unlock:
+@@ -930,8 +930,8 @@ out_unlock:
return msgsz;
}
@@ -55,10 +55,10 @@
{
long err, mtype;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 12:43:21.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:47:29.000000000 -0700
-@@ -1346,7 +1346,7 @@ DECLARE_RWSEM(uts_sem);
+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);
EXPORT_SYMBOL(uts_sem);
@@ -67,7 +67,7 @@
{
int errno = 0;
-@@ -1423,7 +1423,7 @@ SYSCALL_DEFINE2(setdomainname, char __us
+@@ -1420,7 +1420,7 @@ SYSCALL_DEFINE2(setdomainname, char __us
return errno;
}
@@ -76,7 +76,7 @@
{
if (resource >= RLIM_NLIMITS)
return -EINVAL;
-@@ -1442,7 +1442,8 @@ asmlinkage long sys_getrlimit(unsigned i
+@@ -1439,7 +1439,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)
-@@ -1460,7 +1461,7 @@ asmlinkage long sys_old_getrlimit(unsign
+@@ -1457,7 +1458,7 @@ asmlinkage long sys_old_getrlimit(unsign
#endif
@@ -95,16 +95,15 @@
{
struct rlimit new_rlim, *old_rlim;
unsigned long it_prof_secs;
-@@ -1636,7 +1637,7 @@ int getrusage(struct task_struct *p, int
+@@ -1626,14 +1627,14 @@ int getrusage(struct task_struct *p, int
return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
}
-asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
+SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
{
- if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN &&
- who != RUSAGE_THREAD)
-@@ -1644,7 +1645,7 @@ asmlinkage long sys_getrusage(int who, s
+ if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN)
+ return -EINVAL;
return getrusage(current, who, ru);
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0035-System-call-wrappers-part-25.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/ipc/mqueue.c linux-source-2.6.26/ipc/mqueue.c
---- linux-source-2.6.26.orig/ipc/mqueue.c 2009-01-19 11:12:44.000000000 -0700
-+++ linux-source-2.6.26/ipc/mqueue.c 2009-01-19 12:48:20.000000000 -0700
-@@ -658,8 +658,8 @@ static int oflag2acc[O_ACCMODE] = { MAY_
+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_
return dentry_open(dentry, mqueue_mnt, oflag);
}
@@ -26,7 +26,7 @@
{
struct dentry *dentry;
struct file *filp;
-@@ -726,7 +726,7 @@ out_putname:
+@@ -716,7 +716,7 @@ out_putname:
return fd;
}
@@ -35,10 +35,10 @@
{
int err;
char *name;
-diff -urpN linux-source-2.6.26.orig/ipc/sem.c linux-source-2.6.26/ipc/sem.c
---- linux-source-2.6.26.orig/ipc/sem.c 2009-01-19 11:55:54.000000000 -0700
-+++ linux-source-2.6.26/ipc/sem.c 2009-01-19 12:48:20.000000000 -0700
-@@ -309,7 +309,7 @@ static inline int sem_more_checks(struct
+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;
}
@@ -47,7 +47,7 @@
{
struct ipc_namespace *ns;
struct ipc_ops sem_ops;
-@@ -1046,8 +1046,8 @@ out:
+@@ -1121,8 +1121,8 @@ out:
return un;
}
@@ -58,7 +58,7 @@
{
int error = -EINVAL;
struct sem_array *sma;
-@@ -1210,7 +1210,8 @@ out_free:
+@@ -1285,7 +1285,8 @@ out_free:
return error;
}
@@ -68,10 +68,10 @@
{
return sys_semtimedop(semid, tsops, nsops, NULL);
}
-diff -urpN linux-source-2.6.26.orig/ipc/shm.c linux-source-2.6.26/ipc/shm.c
---- linux-source-2.6.26.orig/ipc/shm.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/ipc/shm.c 2009-01-19 12:48:20.000000000 -0700
-@@ -455,7 +455,7 @@ static inline int shm_more_checks(struct
+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;
}
@@ -80,16 +80,16 @@
{
struct ipc_namespace *ns;
struct ipc_ops shm_ops;
-@@ -635,7 +635,7 @@ out_up:
- return err;
+@@ -641,7 +641,7 @@ static void shm_get_stat(struct ipc_name
+ }
}
--asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
+-asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
+SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
{
+ struct shm_setbuf setbuf;
struct shmid_kernel *shp;
- int err, version;
-@@ -955,7 +955,7 @@ out_put_dentry:
+@@ -1048,7 +1048,7 @@ out_put_dentry:
goto out_nattch;
}
@@ -98,7 +98,7 @@
{
unsigned long ret;
long err;
-@@ -971,7 +971,7 @@ asmlinkage long sys_shmat(int shmid, cha
+@@ -1064,7 +1064,7 @@ asmlinkage long sys_shmat(int shmid, cha
* detach and kill segment if marked destroyed.
* The work is done in shm_close.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0036-System-call-wrappers-part-26.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/drivers/pci/syscall.c linux-source-2.6.26/drivers/pci/syscall.c
---- linux-source-2.6.26.orig/drivers/pci/syscall.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/drivers/pci/syscall.c 2009-01-19 12:49:03.000000000 -0700
+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 @@
#include <asm/uaccess.h>
#include "pci.h"
@@ -28,7 +28,7 @@
{
struct pci_dev *dev;
u8 byte;
-@@ -86,10 +84,8 @@ error:
+@@ -89,10 +87,8 @@ error:
return err;
}
@@ -41,10 +41,10 @@
{
struct pci_dev *dev;
u8 byte;
-diff -urpN linux-source-2.6.26.orig/ipc/mqueue.c linux-source-2.6.26/ipc/mqueue.c
---- linux-source-2.6.26.orig/ipc/mqueue.c 2009-01-19 12:48:20.000000000 -0700
-+++ linux-source-2.6.26/ipc/mqueue.c 2009-01-19 12:49:03.000000000 -0700
-@@ -819,9 +819,9 @@ static inline void pipelined_receive(str
+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
sender->state = STATE_READY;
}
@@ -57,7 +57,7 @@
{
struct file *filp;
struct inode *inode;
-@@ -907,9 +907,9 @@ out:
+@@ -894,9 +894,9 @@ out:
return ret;
}
@@ -70,7 +70,7 @@
{
long timeout;
ssize_t ret;
-@@ -992,8 +992,8 @@ out:
+@@ -979,8 +979,8 @@ out:
* and he isn't currently owner of notification, will be silently discarded.
* It isn't explicitly defined in the POSIX.
*/
@@ -81,7 +81,7 @@
{
int ret;
struct file *filp;
-@@ -1118,9 +1118,9 @@ out:
+@@ -1105,9 +1105,9 @@ out:
return ret;
}
@@ -94,24 +94,24 @@
{
int ret;
struct mq_attr mqstat, omqstat;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 12:47:29.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:49:03.000000000 -0700
-@@ -1651,8 +1651,8 @@ SYSCALL_DEFINE1(umask, int, mask)
+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)
return mask;
}
-
+
-asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
- unsigned long arg4, unsigned long arg5)
+SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
+ unsigned long, arg4, unsigned long, arg5)
{
- long error = 0;
+ long error;
-diff -urpN linux-source-2.6.26.orig/mm/swapfile.c linux-source-2.6.26/mm/swapfile.c
---- linux-source-2.6.26.orig/mm/swapfile.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/swapfile.c 2009-01-19 12:49:03.000000000 -0700
-@@ -1203,7 +1203,7 @@ int page_queue_congested(struct page *pa
+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
}
#endif
@@ -120,7 +120,7 @@
{
struct swap_info_struct * p = NULL;
unsigned short *swap_map;
-@@ -1437,7 +1437,7 @@ __initcall(procswaps_init);
+@@ -1410,7 +1410,7 @@ __initcall(procswaps_init);
*
* The swapon system call
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0037-System-call-wrappers-part-27.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/exec.c linux-source-2.6.26/fs/exec.c
---- linux-source-2.6.26.orig/fs/exec.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/fs/exec.c 2009-01-19 12:49:49.000000000 -0700
-@@ -106,7 +106,7 @@ static inline void put_binfmt(struct lin
+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
*
* Also note that we take the address to load from from the file itself.
*/
@@ -24,9 +24,9 @@
{
struct file * file;
struct nameidata nd;
-diff -urpN linux-source-2.6.26.orig/fs/filesystems.c linux-source-2.6.26/fs/filesystems.c
---- linux-source-2.6.26.orig/fs/filesystems.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/filesystems.c 2009-01-19 12:49:49.000000000 -0700
+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)
/*
* Whee.. Weird sysv syscall.
@@ -36,9 +36,9 @@
{
int retval = -EINVAL;
-diff -urpN linux-source-2.6.26.orig/fs/nfsctl.c linux-source-2.6.26/fs/nfsctl.c
---- linux-source-2.6.26.orig/fs/nfsctl.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/nfsctl.c 2009-01-19 12:49:49.000000000 -0700
+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 {
},
};
@@ -50,10 +50,10 @@
{
struct file *file;
void __user *p = &arg->u;
-diff -urpN linux-source-2.6.26.orig/kernel/printk.c linux-source-2.6.26/kernel/printk.c
---- linux-source-2.6.26.orig/kernel/printk.c 2009-01-19 11:44:54.000000000 -0700
-+++ linux-source-2.6.26/kernel/printk.c 2009-01-19 12:49:49.000000000 -0700
-@@ -432,7 +432,7 @@ out:
+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:
return error;
}
@@ -62,22 +62,22 @@
{
return do_syslog(type, buf, len);
}
-diff -urpN linux-source-2.6.26.orig/kernel/ptrace.c linux-source-2.6.26/kernel/ptrace.c
---- linux-source-2.6.26.orig/kernel/ptrace.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/ptrace.c 2009-01-19 12:49:49.000000000 -0700
-@@ -534,7 +534,7 @@ struct task_struct *ptrace_get_task_stru
- #define arch_ptrace_attach(child) do { } while (0)
+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
+ #ifndef __ARCH_SYS_PTRACE
-asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
+SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
{
struct task_struct *child;
long ret;
-diff -urpN linux-source-2.6.26.orig/kernel/sysctl.c linux-source-2.6.26/kernel/sysctl.c
---- linux-source-2.6.26.orig/kernel/sysctl.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/kernel/sysctl.c 2009-01-19 12:49:49.000000000 -0700
-@@ -1533,7 +1533,7 @@ int do_sysctl(int __user *name, int nlen
+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
return error;
}
@@ -86,7 +86,7 @@
{
struct __sysctl_args tmp;
int error;
-@@ -2744,7 +2744,7 @@ int sysctl_ms_jiffies(struct ctl_table *
+@@ -2564,7 +2564,7 @@ int sysctl_ms_jiffies(struct ctl_table *
#else /* CONFIG_SYSCTL_SYSCALL */
@@ -95,10 +95,10 @@
{
struct __sysctl_args tmp;
int error;
-diff -urpN linux-source-2.6.26.orig/kernel/timer.c linux-source-2.6.26/kernel/timer.c
---- linux-source-2.6.26.orig/kernel/timer.c 2009-01-19 11:58:42.000000000 -0700
-+++ linux-source-2.6.26/kernel/timer.c 2009-01-19 12:49:49.000000000 -0700
-@@ -1353,7 +1353,7 @@ out:
+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;
}
@@ -107,10 +107,10 @@
{
struct sysinfo val;
-diff -urpN linux-source-2.6.26.orig/security/keys/keyctl.c linux-source-2.6.26/security/keys/keyctl.c
---- linux-source-2.6.26.orig/security/keys/keyctl.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/security/keys/keyctl.c 2009-01-19 12:49:49.000000000 -0700
-@@ -54,11 +54,11 @@ static int key_get_type_from_user(char *
+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
+@@ -52,11 +52,11 @@ static int key_get_type_from_user(char *
* - returns the new key's serial number
* - implements add_key()
*/
@@ -127,7 +127,7 @@
{
key_ref_t keyring_ref, key_ref;
char type[32], *description;
-@@ -146,10 +146,10 @@ asmlinkage long sys_add_key(const char _
+@@ -132,10 +132,10 @@ asmlinkage long sys_add_key(const char _
* - if the _callout_info string is empty, it will be rendered as "-"
* - implements request_key()
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038-System-call-wrappers-part-28.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/inotify_user.c linux-source-2.6.26/fs/inotify_user.c
---- linux-source-2.6.26.orig/fs/inotify_user.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/inotify_user.c 2009-01-19 12:50:36.000000000 -0700
-@@ -566,7 +566,7 @@ static const struct inotify_operations i
+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
.destroy_watch = free_inotify_user_watch,
};
@@ -24,11 +24,11 @@
{
struct inotify_device *dev;
struct inotify_handle *ih;
-diff -urpN linux-source-2.6.26.orig/fs/ioprio.c linux-source-2.6.26/fs/ioprio.c
---- linux-source-2.6.26.orig/fs/ioprio.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/ioprio.c 2009-01-19 12:50:36.000000000 -0700
-@@ -65,7 +65,7 @@ static int set_task_ioprio(struct task_s
- return err;
+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
+ return 0;
}
-asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
@@ -36,7 +36,7 @@
{
int class = IOPRIO_PRIO_CLASS(ioprio);
int data = IOPRIO_PRIO_DATA(ioprio);
-@@ -181,7 +181,7 @@ int ioprio_best(unsigned short aprio, un
+@@ -171,7 +171,7 @@ int ioprio_best(unsigned short aprio, un
return aprio;
}
@@ -45,15 +45,15 @@
{
struct task_struct *g, *p;
struct user_struct *user;
-@@ -245,4 +245,3 @@ asmlinkage long sys_ioprio_get(int which
+@@ -235,4 +235,3 @@ asmlinkage long sys_ioprio_get(int which
read_unlock(&tasklist_lock);
return ret;
}
-
-diff -urpN linux-source-2.6.26.orig/mm/mempolicy.c linux-source-2.6.26/mm/mempolicy.c
---- linux-source-2.6.26.orig/mm/mempolicy.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/mempolicy.c 2009-01-19 12:50:36.000000000 -0700
-@@ -1060,10 +1060,9 @@ static int copy_nodes_to_user(unsigned l
+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
return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
}
@@ -67,7 +67,7 @@
{
nodemask_t nodes;
int err;
-@@ -1083,8 +1082,8 @@ asmlinkage long sys_mbind(unsigned long
+@@ -923,8 +922,8 @@ asmlinkage long sys_mbind(unsigned long
}
/* Set the process memory policy */
@@ -78,8 +78,8 @@
{
int err;
nodemask_t nodes;
-@@ -1102,9 +1101,9 @@ asmlinkage long sys_set_mempolicy(int mo
- return do_set_mempolicy(mode, flags, &nodes);
+@@ -937,9 +936,9 @@ asmlinkage long sys_set_mempolicy(int mo
+ return do_set_mempolicy(mode, &nodes);
}
-asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
@@ -91,7 +91,7 @@
{
struct mm_struct *mm;
struct task_struct *task;
-@@ -1172,10 +1171,9 @@ out:
+@@ -1007,10 +1006,9 @@ out:
/* Retrieve NUMA policy */
@@ -105,10 +105,10 @@
{
int err;
int uninitialized_var(pval);
-diff -urpN linux-source-2.6.26.orig/mm/migrate.c linux-source-2.6.26/mm/migrate.c
---- linux-source-2.6.26.orig/mm/migrate.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/mm/migrate.c 2009-01-19 12:50:36.000000000 -0700
-@@ -956,10 +956,10 @@ set_status:
+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:
* Move a list of pages in the address space of the currently executing
* process.
*/
@@ -123,10 +123,10 @@
{
int err = 0;
int i;
-diff -urpN linux-source-2.6.26.orig/security/keys/keyctl.c linux-source-2.6.26/security/keys/keyctl.c
---- linux-source-2.6.26.orig/security/keys/keyctl.c 2009-01-19 12:49:49.000000000 -0700
-+++ linux-source-2.6.26/security/keys/keyctl.c 2009-01-19 12:50:36.000000000 -0700
-@@ -1152,8 +1152,8 @@ long keyctl_get_security(key_serial_t ke
+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
+@@ -1059,8 +1059,8 @@ error:
/*
* the key control system call
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038pre1-missing-include.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038pre1-missing-include.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0038pre1-missing-include.patch Wed Jan 21 08:39:04 2009
@@ -12,14 +12,15 @@
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-diff --git a/mm/migrate.c b/mm/migrate.c
-index 55bd355..e7d13a7 100644
---- a/mm/migrate.c
-+++ b/mm/migrate.c
-@@ -30,6 +30,7 @@
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
+
+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 2008-10-10 00:11:29.000000000 -0600
++++ linux-source-2.6.24/mm/migrate.c 2009-01-21 01:20:29.000000000 -0700
+@@ -29,6 +29,7 @@
+ #include <linux/mempolicy.h>
#include <linux/vmalloc.h>
#include <linux/security.h>
- #include <linux/memcontrol.h>
+#include <linux/syscalls.h>
#include "internal.h"
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0039-System-call-wrappers-part-29.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/inotify_user.c linux-source-2.6.26/fs/inotify_user.c
---- linux-source-2.6.26.orig/fs/inotify_user.c 2009-01-19 12:50:36.000000000 -0700
-+++ linux-source-2.6.26/fs/inotify_user.c 2009-01-19 12:55:29.000000000 -0700
-@@ -638,7 +638,8 @@ out_put_fd:
+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:
return ret;
}
@@ -25,7 +25,7 @@
{
struct inode *inode;
struct inotify_device *dev;
-@@ -682,7 +683,7 @@ fput_and_out:
+@@ -655,7 +656,7 @@ fput_and_out:
return ret;
}
@@ -34,11 +34,11 @@
{
struct file *filp;
struct inotify_device *dev;
-diff -urpN linux-source-2.6.26.orig/fs/namei.c linux-source-2.6.26/fs/namei.c
---- linux-source-2.6.26.orig/fs/namei.c 2009-01-19 12:33:56.000000000 -0700
-+++ linux-source-2.6.26/fs/namei.c 2009-01-19 12:54:26.000000000 -0700
-@@ -2084,8 +2084,8 @@ static int may_mknod(mode_t mode)
- }
+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
+ return error;
}
-asmlinkage long sys_mknodat(int dfd, const char __user *filename, int mode,
@@ -48,7 +48,7 @@
{
int error = 0;
char * tmp;
-@@ -2165,7 +2165,7 @@ int vfs_mkdir(struct inode *dir, struct
+@@ -2034,7 +2034,7 @@ int vfs_mkdir(struct inode *dir, struct
return error;
}
@@ -57,7 +57,7 @@
{
int error = 0;
char * tmp;
-@@ -2408,7 +2408,7 @@ slashes:
+@@ -2262,7 +2262,7 @@ slashes:
goto exit2;
}
@@ -66,7 +66,7 @@
{
if ((flag & ~AT_REMOVEDIR) != 0)
return -EINVAL;
-@@ -2445,8 +2445,8 @@ int vfs_symlink(struct inode *dir, struc
+@@ -2299,8 +2299,8 @@ int vfs_symlink(struct inode *dir, struc
return error;
}
@@ -77,7 +77,7 @@
{
int error = 0;
char * from;
-@@ -2539,9 +2539,8 @@ int vfs_link(struct dentry *old_dentry,
+@@ -2388,9 +2388,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;
-@@ -2821,8 +2820,8 @@ exit:
+@@ -2661,8 +2660,8 @@ exit:
return error;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0040-System-call-wrappers-part-30.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/open.c linux-source-2.6.26/fs/open.c
---- linux-source-2.6.26.orig/fs/open.c 2009-01-19 12:33:56.000000000 -0700
-+++ linux-source-2.6.26/fs/open.c 2009-01-19 12:56:31.000000000 -0700
-@@ -441,7 +441,7 @@ SYSCALL_ALIAS(sys_fallocate, SyS_falloca
+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
* We do this by temporarily clearing all FS-related capabilities and
* switching the fsuid/fsgid around to the real ones.
*/
@@ -24,7 +24,7 @@
{
struct nameidata nd;
int old_fsuid, old_fsgid;
-@@ -627,8 +627,7 @@ out:
+@@ -610,8 +610,7 @@ out:
return err;
}
@@ -34,7 +34,7 @@
{
struct nameidata nd;
struct inode * inode;
-@@ -721,8 +720,8 @@ out:
+@@ -700,8 +699,8 @@ out:
return error;
}
@@ -45,9 +45,9 @@
{
struct nameidata nd;
int error = -EINVAL;
-@@ -1134,8 +1133,8 @@ SYSCALL_DEFINE3(open, const char __user
- return ret;
+@@ -1081,8 +1080,8 @@ SYSCALL_DEFINE3(open, const char __user
}
+ EXPORT_UNUSED_SYMBOL_GPL(sys_open); /* To be deleted for 2.6.25 */
-asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
- int mode)
@@ -56,9 +56,9 @@
{
long ret;
-diff -urpN linux-source-2.6.26.orig/fs/stat.c linux-source-2.6.26/fs/stat.c
---- linux-source-2.6.26.orig/fs/stat.c 2009-01-19 12:30:49.000000000 -0700
-+++ linux-source-2.6.26/fs/stat.c 2009-01-19 12:57:00.000000000 -0700
+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 *,
}
@@ -81,7 +81,7 @@
{
struct nameidata nd;
int error;
-@@ -400,8 +400,8 @@ SYSCALL_DEFINE2(fstat64, unsigned long,
+@@ -399,8 +399,8 @@ SYSCALL_DEFINE2(fstat64, unsigned long,
return error;
}
@@ -92,10 +92,10 @@
{
struct kstat stat;
int error = -EINVAL;
-diff -urpN linux-source-2.6.26.orig/fs/utimes.c linux-source-2.6.26/fs/utimes.c
---- linux-source-2.6.26.orig/fs/utimes.c 2009-01-19 12:32:59.000000000 -0700
-+++ linux-source-2.6.26/fs/utimes.c 2009-01-19 12:56:31.000000000 -0700
-@@ -167,7 +167,8 @@ out:
+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;
}
@@ -105,7 +105,7 @@
{
struct timespec tstimes[2];
-@@ -184,7 +185,8 @@ asmlinkage long sys_utimensat(int dfd, c
+@@ -180,7 +181,8 @@ asmlinkage long sys_utimensat(int dfd, c
return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
}
@@ -115,10 +115,10 @@
{
struct timeval times[2];
struct timespec tstimes[2];
-diff -urpN linux-source-2.6.26.orig/kernel/fork.c linux-source-2.6.26/kernel/fork.c
---- linux-source-2.6.26.orig/kernel/fork.c 2009-01-19 12:08:21.000000000 -0700
-+++ linux-source-2.6.26/kernel/fork.c 2009-01-19 12:56:31.000000000 -0700
-@@ -1550,7 +1550,7 @@ static int unshare_fd(unsigned long unsh
+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
* constructed. Here we are modifying the current, active,
* task_struct.
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0041-System-call-wrappers-part-31.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/signalfd.c linux-source-2.6.26/fs/signalfd.c
---- linux-source-2.6.26.orig/fs/signalfd.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/signalfd.c 2009-01-19 12:58:49.000000000 -0700
-@@ -205,7 +205,8 @@ static const struct file_operations sign
+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,
};
@@ -23,12 +23,12 @@
+SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
+ size_t, sizemask)
{
+ int error;
sigset_t sigmask;
- struct signalfd_ctx *ctx;
-diff -urpN linux-source-2.6.26.orig/fs/splice.c linux-source-2.6.26/fs/splice.c
---- linux-source-2.6.26.orig/fs/splice.c 2009-01-10 05:42:12.000000000 -0700
-+++ linux-source-2.6.26/fs/splice.c 2009-01-19 12:57:47.000000000 -0700
-@@ -1460,8 +1460,8 @@ static long vmsplice_to_pipe(struct file
+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().
*
*/
@@ -39,7 +39,7 @@
{
struct file *file;
long error;
-@@ -1486,9 +1486,9 @@ asmlinkage long sys_vmsplice(int fd, con
+@@ -1504,9 +1504,9 @@ asmlinkage long sys_vmsplice(int fd, con
return error;
}
@@ -52,7 +52,7 @@
{
long error;
struct file *in, *out;
-@@ -1710,7 +1710,7 @@ static long do_tee(struct file *in, stru
+@@ -1724,7 +1724,7 @@ static long do_tee(struct file *in, stru
return ret;
}
@@ -61,35 +61,10 @@
{
struct file *in;
int error, fput_in;
-diff -urpN linux-source-2.6.26.orig/fs/timerfd.c linux-source-2.6.26/fs/timerfd.c
---- linux-source-2.6.26.orig/fs/timerfd.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/timerfd.c 2009-01-19 12:57:47.000000000 -0700
-@@ -179,7 +179,7 @@ static struct file *timerfd_fget(int fd)
- return file;
- }
-
--asmlinkage long sys_timerfd_create(int clockid, int flags)
-+SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
- {
- int ufd;
- struct timerfd_ctx *ctx;
-@@ -205,9 +205,9 @@ asmlinkage long sys_timerfd_create(int c
- return ufd;
- }
-
--asmlinkage long sys_timerfd_settime(int ufd, int flags,
-- const struct itimerspec __user *utmr,
-- struct itimerspec __user *otmr)
-+SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
-+ const struct itimerspec __user *, utmr,
-+ struct itimerspec __user *, otmr)
- {
- struct file *file;
- struct timerfd_ctx *ctx;
-diff -urpN linux-source-2.6.26.orig/kernel/futex.c linux-source-2.6.26/kernel/futex.c
---- linux-source-2.6.26.orig/kernel/futex.c 2009-01-19 12:08:21.000000000 -0700
-+++ linux-source-2.6.26/kernel/futex.c 2009-01-19 12:57:47.000000000 -0700
-@@ -1797,9 +1797,8 @@ pi_faulted:
+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:
* @head: pointer to the list-head
* @len: length of the list-head, as userspace expects
*/
@@ -101,7 +76,7 @@
{
if (!futex_cmpxchg_enabled)
return -ENOSYS;
-@@ -1820,9 +1819,9 @@ sys_set_robust_list(struct robust_list_h
+@@ -1877,9 +1876,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
*/
@@ -114,10 +89,10 @@
{
struct robust_list_head __user *head;
unsigned long ret;
-diff -urpN linux-source-2.6.26.orig/kernel/sys.c linux-source-2.6.26/kernel/sys.c
---- linux-source-2.6.26.orig/kernel/sys.c 2009-01-19 12:49:03.000000000 -0700
-+++ linux-source-2.6.26/kernel/sys.c 2009-01-19 12:57:47.000000000 -0700
-@@ -1753,8 +1753,8 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
+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;
}
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0042-System-call-wrappers-part-32.patch Wed Jan 21 08:39:04 2009
@@ -10,24 +10,24 @@
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.26 by dann frazier <dannf at debian.org>
+Backported to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/eventfd.c linux-source-2.6.26/fs/eventfd.c
---- linux-source-2.6.26.orig/fs/eventfd.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/fs/eventfd.c 2009-01-19 13:01:11.000000000 -0700
-@@ -198,7 +198,7 @@ struct file *eventfd_fget(int fd)
+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 fd;
+ int error, fd;
struct eventfd_ctx *ctx;
-diff -urpN linux-source-2.6.26.orig/fs/readdir.c linux-source-2.6.26/fs/readdir.c
---- linux-source-2.6.26.orig/fs/readdir.c 2009-01-19 12:34:46.000000000 -0700
-+++ linux-source-2.6.26/fs/readdir.c 2009-01-19 13:00:22.000000000 -0700
-@@ -100,7 +100,8 @@ efault:
+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:
return -EFAULT;
}
@@ -37,10 +37,10 @@
{
int error;
struct file * file;
-diff -urpN linux-source-2.6.26.orig/fs/select.c linux-source-2.6.26/fs/select.c
---- linux-source-2.6.26.orig/fs/select.c 2009-01-19 12:43:21.000000000 -0700
-+++ linux-source-2.6.26/fs/select.c 2009-01-19 13:00:22.000000000 -0700
-@@ -513,8 +513,9 @@ sticky:
+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:
* which has a pointer to the sigset_t itself followed by a size_t containing
* the sigset size.
*/
@@ -52,10 +52,10 @@
{
size_t sigsetsize = 0;
sigset_t __user *up = NULL;
-@@ -761,9 +762,9 @@ SYSCALL_DEFINE3(poll, struct pollfd __us
+@@ -760,9 +761,9 @@ SYSCALL_DEFINE3(poll, struct pollfd __us
}
- #ifdef HAVE_SET_RESTORE_SIGMASK
+ #ifdef TIF_RESTORE_SIGMASK
-asmlinkage long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds,
- struct timespec __user *tsp, const sigset_t __user *sigmask,
- size_t sigsetsize)
@@ -65,22 +65,10 @@
{
sigset_t ksigmask, sigsaved;
struct timespec ts;
-diff -urpN linux-source-2.6.26.orig/fs/timerfd.c linux-source-2.6.26/fs/timerfd.c
---- linux-source-2.6.26.orig/fs/timerfd.c 2009-01-19 12:57:47.000000000 -0700
-+++ linux-source-2.6.26/fs/timerfd.c 2009-01-19 13:00:22.000000000 -0700
-@@ -262,7 +262,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf
- return 0;
- }
-
--asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr)
-+SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct itimerspec __user *, otmr)
- {
- struct file *file;
- struct timerfd_ctx *ctx;
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 11:53:03.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 13:00:22.000000000 -0700
-@@ -672,6 +672,13 @@ asmlinkage long sys_timerfd_gettime(int
+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);
asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
@@ -94,10 +82,10 @@
int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
-diff -urpN linux-source-2.6.26.orig/kernel/signal.c linux-source-2.6.26/kernel/signal.c
---- linux-source-2.6.26.orig/kernel/signal.c 2009-01-19 12:13:12.000000000 -0700
-+++ linux-source-2.6.26/kernel/signal.c 2009-01-19 13:00:22.000000000 -0700
-@@ -2464,11 +2464,10 @@ out:
+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 /* __ARCH_WANT_SYS_SIGPROCMASK */
#ifdef __ARCH_WANT_SYS_RT_SIGACTION
@@ -113,7 +101,7 @@
{
struct k_sigaction new_sa, old_sa;
int ret = -EINVAL;
-@@ -2551,7 +2550,7 @@ SYSCALL_DEFINE0(pause)
+@@ -2562,7 +2561,7 @@ SYSCALL_DEFINE0(pause)
#endif
#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
@@ -122,3 +110,17 @@
{
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: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0043-System-call-wrappers-part-33.patch Wed Jan 21 08:39:04 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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/fs/pipe.c linux-source-2.6.26/fs/pipe.c
---- linux-source-2.6.26.orig/fs/pipe.c 2009-01-19 13:00:22.000000000 -0700
-+++ linux-source-2.6.26/fs/pipe.c 2009-01-19 13:05:38.000000000 -0700
-@@ -1078,7 +1078,7 @@ int do_pipe(int *fd)
+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)
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
@@ -24,10 +24,10 @@
{
int fd[2];
int error;
-diff -urpN linux-source-2.6.26.orig/include/linux/syscalls.h linux-source-2.6.26/include/linux/syscalls.h
---- linux-source-2.6.26.orig/include/linux/syscalls.h 2009-01-19 13:00:22.000000000 -0700
-+++ linux-source-2.6.26/include/linux/syscalls.h 2009-01-19 13:05:11.000000000 -0700
-@@ -679,6 +679,7 @@ asmlinkage long sys_ppoll(struct pollfd
+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
struct timespec __user *, const sigset_t __user *,
size_t);
asmlinkage long sys_pipe2(int __user *, int);
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
==============================================================================
--- /people/dannf/sid+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch Wed Jan 21 08:39:04 2009
@@ -10,11 +10,11 @@
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.26 by dann frazier <dannf at debian.org>
+Adjusted to apply to Debian's 2.6.24 by dann frazier <dannf at debian.org>
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/compat_wrapper.S linux-source-2.6.26/arch/s390/kernel/compat_wrapper.S
---- linux-source-2.6.26.orig/arch/s390/kernel/compat_wrapper.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/compat_wrapper.S 2009-01-19 13:06:27.000000000 -0700
+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
@@ -549,7 +549,7 @@ sys32_setdomainname_wrapper:
.globl sys32_newuname_wrapper
sys32_newuname_wrapper:
@@ -33,51 +33,19 @@
.globl sys32_setfsuid16_wrapper
sys32_setfsuid16_wrapper:
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/entry.h linux-source-2.6.26/arch/s390/kernel/entry.h
---- linux-source-2.6.26.orig/arch/s390/kernel/entry.h 2009-01-19 11:38:32.000000000 -0700
-+++ linux-source-2.6.26/arch/s390/kernel/entry.h 2009-01-19 13:06:27.000000000 -0700
-@@ -31,21 +31,22 @@ struct old_sigaction;
- struct sel_arg_struct;
-
- long sys_mmap2(struct mmap_arg_struct __user *arg);
--long old_mmap(struct mmap_arg_struct __user *arg);
-+long sys_s390_old_mmap(struct mmap_arg_struct __user *arg);
- long sys_ipc(uint call, int first, unsigned long second,
- unsigned long third, void __user *ptr);
--long s390x_newuname(struct new_utsname __user *name);
--long s390x_personality(unsigned long personality);
--long s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
-+long sys_s390_newuname(struct new_utsname __user *name);
-+long sys_s390_personality(unsigned long personality);
-+long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
- size_t len, int advice);
--long s390_fadvise64_64(struct fadvise64_64_args __user *args);
--long s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, u32 len_low);
-+long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
-+long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
-+ u32 len_low);
- long sys_fork(void);
- long sys_clone(void);
- long sys_vfork(void);
- void execve_tail(void);
- long sys_execve(void);
--int sys_sigsuspend(int history0, int history1, old_sigset_t mask);
-+long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
- long sys_sigaction(int sig, const struct old_sigaction __user *act,
- struct old_sigaction __user *oact);
- long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/process.c linux-source-2.6.26/arch/s390/kernel/process.c
---- linux-source-2.6.26.orig/arch/s390/kernel/process.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/process.c 2009-01-19 13:06:27.000000000 -0700
-@@ -38,6 +38,7 @@
- #include <linux/utsname.h>
- #include <linux/tick.h>
- #include <linux/elfcore.h>
+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
+@@ -36,7 +36,7 @@
+ #include <linux/init.h>
+ #include <linux/module.h>
+ #include <linux/notifier.h>
+-
+#include <linux/syscalls.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/system.h>
-@@ -283,13 +284,13 @@ int copy_thread(int nr, unsigned long cl
+@@ -298,13 +298,13 @@ int copy_thread(int nr, unsigned long cl
return 0;
}
@@ -93,7 +61,7 @@
{
struct pt_regs *regs = task_pt_regs(current);
unsigned long clone_flags;
-@@ -316,7 +317,7 @@ asmlinkage long sys_clone(void)
+@@ -331,7 +331,7 @@ asmlinkage long sys_clone(void)
* do not have enough call-clobbered registers to hold all
* the information you need.
*/
@@ -102,7 +70,7 @@
{
struct pt_regs *regs = task_pt_regs(current);
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
-@@ -336,7 +337,7 @@ asmlinkage void execve_tail(void)
+@@ -351,7 +351,7 @@ asmlinkage void execve_tail(void)
/*
* sys_execve() executes a new program.
*/
@@ -111,9 +79,9 @@
{
struct pt_regs *regs = task_pt_regs(current);
char *filename;
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/signal.c linux-source-2.6.26/arch/s390/kernel/signal.c
---- linux-source-2.6.26.orig/arch/s390/kernel/signal.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/signal.c 2009-01-19 13:06:47.000000000 -0700
+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 @@
#include <linux/tty.h>
#include <linux/personality.h>
@@ -122,7 +90,7 @@
#include <asm/ucontext.h>
#include <asm/uaccess.h>
#include <asm/lowcore.h>
-@@ -52,8 +53,7 @@ typedef struct
+@@ -51,8 +52,7 @@ typedef struct
/*
* Atomically swap in the new signal mask, and wait for a signal.
*/
@@ -132,7 +100,7 @@
{
mask &= _BLOCKABLE;
spin_lock_irq(¤t->sighand->siglock);
-@@ -69,9 +69,8 @@ sys_sigsuspend(int history0, int history
+@@ -68,9 +68,8 @@ sys_sigsuspend(int history0, int history
return -ERESTARTNOHAND;
}
@@ -144,7 +112,7 @@
{
struct k_sigaction new_ka, old_ka;
int ret;
-@@ -101,15 +100,13 @@ sys_sigaction(int sig, const struct old_
+@@ -100,15 +99,13 @@ sys_sigaction(int sig, const struct old_
return ret;
}
@@ -162,7 +130,7 @@
/* Returns non-zero on fault. */
static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
{
-@@ -163,7 +160,7 @@ static int restore_sigregs(struct pt_reg
+@@ -162,7 +159,7 @@ static int restore_sigregs(struct pt_reg
return 0;
}
@@ -171,7 +139,7 @@
{
struct pt_regs *regs = task_pt_regs(current);
sigframe __user *frame = (sigframe __user *)regs->gprs[15];
-@@ -190,7 +187,7 @@ badframe:
+@@ -189,7 +186,7 @@ badframe:
return 0;
}
@@ -180,9 +148,9 @@
{
struct pt_regs *regs = task_pt_regs(current);
rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/syscalls.S linux-source-2.6.26/arch/s390/kernel/syscalls.S
---- linux-source-2.6.26.orig/arch/s390/kernel/syscalls.S 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/syscalls.S 2009-01-19 13:06:27.000000000 -0700
+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
@@ -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)
@@ -236,19 +204,20 @@
+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)
- NI_SYSCALL /* 317 old sys_timer_fd */
-diff -urpN linux-source-2.6.26.orig/arch/s390/kernel/sys_s390.c linux-source-2.6.26/arch/s390/kernel/sys_s390.c
---- linux-source-2.6.26.orig/arch/s390/kernel/sys_s390.c 2008-07-13 15:51:29.000000000 -0600
-+++ linux-source-2.6.26/arch/s390/kernel/sys_s390.c 2009-01-19 13:06:27.000000000 -0700
-@@ -29,6 +29,7 @@
+ 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 @@
#include <linux/personality.h>
#include <linux/unistd.h>
#include <linux/ipc.h>
+-
+#include <linux/syscalls.h>
#include <asm/uaccess.h>
- #include "entry.h"
-@@ -74,7 +75,7 @@ struct mmap_arg_struct {
+ /* common code for old and new mmaps */
+@@ -74,7 +74,7 @@ struct mmap_arg_struct {
unsigned long offset;
};
@@ -257,7 +226,7 @@
{
struct mmap_arg_struct a;
int error = -EFAULT;
-@@ -86,7 +87,7 @@ out:
+@@ -86,7 +86,7 @@ out:
return error;
}
@@ -266,7 +235,7 @@
{
struct mmap_arg_struct a;
long error = -EFAULT;
-@@ -127,8 +128,8 @@ asmlinkage long old_select(struct sel_ar
+@@ -127,8 +127,8 @@ asmlinkage long old_select(struct sel_ar
*
* This is really horribly ugly.
*/
@@ -277,7 +246,7 @@
{
struct ipc_kludge tmp;
int ret;
-@@ -194,7 +195,7 @@ asmlinkage long sys_ipc(uint call, int f
+@@ -194,7 +194,7 @@ asmlinkage long sys_ipc(uint call, int f
}
#ifdef CONFIG_64BIT
@@ -286,7 +255,7 @@
{
int ret = sys_newuname(name);
-@@ -205,7 +206,7 @@ asmlinkage long s390x_newuname(struct ne
+@@ -205,7 +205,7 @@ asmlinkage long s390x_newuname(struct ne
return ret;
}
@@ -295,7 +264,7 @@
{
int ret;
-@@ -224,15 +225,13 @@ asmlinkage long s390x_personality(unsign
+@@ -224,15 +224,13 @@ asmlinkage long s390x_personality(unsign
*/
#ifndef CONFIG_64BIT
@@ -313,7 +282,7 @@
struct fadvise64_64_args {
int fd;
long long offset;
-@@ -240,8 +239,7 @@ struct fadvise64_64_args {
+@@ -240,8 +238,7 @@ struct fadvise64_64_args {
int advice;
};
@@ -323,7 +292,7 @@
{
struct fadvise64_64_args a;
-@@ -250,7 +248,6 @@ s390_fadvise64_64(struct fadvise64_64_ar
+@@ -250,7 +247,6 @@ s390_fadvise64_64(struct fadvise64_64_ar
return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
}
@@ -331,7 +300,7 @@
/*
* 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 +260,19 @@ s390_fadvise64_64(struct fadvise64_64_ar
+@@ -263,9 +259,19 @@ s390_fadvise64_64(struct fadvise64_64_ar
* to
* %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
*/
Modified: people/dannf/2.6.24+CVE-2009-0029/debian/patches/series/6~etchnhalf.7etch1
==============================================================================
--- people/dannf/2.6.24+CVE-2009-0029/debian/patches/series/6~etchnhalf.7etch1 (original)
+++ people/dannf/2.6.24+CVE-2009-0029/debian/patches/series/6~etchnhalf.7etch1 Wed Jan 21 08:39:04 2009
@@ -4,3 +4,50 @@
+ bugfix/mips/fix-potential-dos.patch
+ bugfix/all/sctp-avoid-memory-overflow.patch
+ bugfix/all/nfs-remove-buggy-lock-if-signalled-case.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/0037-System-call-wrappers-part-27.patch
++ bugfix/all/CVE-2009-0029/0038pre1-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/0043-System-call-wrappers-part-33.patch
++ bugfix/all/CVE-2009-0029/0044-s390-specific-system-call-wrappers.patch
More information about the Kernel-svn-changes
mailing list