From: Greg Kroah-Hartman Date: Thu, 15 Jan 2009 22:03:16 +0000 (-0800) Subject: start 2.6.27.12 review cycle X-Git-Tag: v2.6.27.12~1 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=ea43307dd2dc85e5c3674d8dab17bd7fcbfadf82;p=thirdparty%2Fkernel%2Fstable-queue.git start 2.6.27.12 review cycle --- diff --git a/queue-2.6.27/0001--CVE-2009-0029-Move-compat-system-call-declarations.patch b/review-2.6.27/0001--CVE-2009-0029-Move-compat-system-call-declarations.patch similarity index 100% rename from queue-2.6.27/0001--CVE-2009-0029-Move-compat-system-call-declarations.patch rename to review-2.6.27/0001--CVE-2009-0029-Move-compat-system-call-declarations.patch diff --git a/queue-2.6.27/0002--CVE-2009-0029-Convert-all-system-calls-to-return-a.patch b/review-2.6.27/0002--CVE-2009-0029-Convert-all-system-calls-to-return-a.patch similarity index 100% rename from queue-2.6.27/0002--CVE-2009-0029-Convert-all-system-calls-to-return-a.patch rename to review-2.6.27/0002--CVE-2009-0029-Convert-all-system-calls-to-return-a.patch diff --git a/queue-2.6.27/0003--CVE-2009-0029-Rename-old_readdir-to-sys_old_readdi.patch b/review-2.6.27/0003--CVE-2009-0029-Rename-old_readdir-to-sys_old_readdi.patch similarity index 100% rename from queue-2.6.27/0003--CVE-2009-0029-Rename-old_readdir-to-sys_old_readdi.patch rename to review-2.6.27/0003--CVE-2009-0029-Rename-old_readdir-to-sys_old_readdi.patch diff --git a/queue-2.6.27/0004--CVE-2009-0029-Remove-__attribute__-weak-from-sy.patch b/review-2.6.27/0004--CVE-2009-0029-Remove-__attribute__-weak-from-sy.patch similarity index 100% rename from queue-2.6.27/0004--CVE-2009-0029-Remove-__attribute__-weak-from-sy.patch rename to review-2.6.27/0004--CVE-2009-0029-Remove-__attribute__-weak-from-sy.patch diff --git a/queue-2.6.27/0005--CVE-2009-0029-Make-sys_pselect7-static.patch b/review-2.6.27/0005--CVE-2009-0029-Make-sys_pselect7-static.patch similarity index 100% rename from queue-2.6.27/0005--CVE-2009-0029-Make-sys_pselect7-static.patch rename to review-2.6.27/0005--CVE-2009-0029-Make-sys_pselect7-static.patch diff --git a/queue-2.6.27/0006--CVE-2009-0029-Make-sys_syslog-a-conditional-system.patch b/review-2.6.27/0006--CVE-2009-0029-Make-sys_syslog-a-conditional-system.patch similarity index 100% rename from queue-2.6.27/0006--CVE-2009-0029-Make-sys_syslog-a-conditional-system.patch rename to review-2.6.27/0006--CVE-2009-0029-Make-sys_syslog-a-conditional-system.patch diff --git a/queue-2.6.27/0007--CVE-2009-0029-System-call-wrapper-infrastructure.patch b/review-2.6.27/0007--CVE-2009-0029-System-call-wrapper-infrastructure.patch similarity index 100% rename from queue-2.6.27/0007--CVE-2009-0029-System-call-wrapper-infrastructure.patch rename to review-2.6.27/0007--CVE-2009-0029-System-call-wrapper-infrastructure.patch diff --git a/queue-2.6.27/0008--CVE-2009-0029-powerpc-Enable-syscall-wrappers-for.patch b/review-2.6.27/0008--CVE-2009-0029-powerpc-Enable-syscall-wrappers-for.patch similarity index 100% rename from queue-2.6.27/0008--CVE-2009-0029-powerpc-Enable-syscall-wrappers-for.patch rename to review-2.6.27/0008--CVE-2009-0029-powerpc-Enable-syscall-wrappers-for.patch diff --git a/queue-2.6.27/0009--CVE-2009-0029-s390-enable-system-call-wrappers.patch b/review-2.6.27/0009--CVE-2009-0029-s390-enable-system-call-wrappers.patch similarity index 100% rename from queue-2.6.27/0009--CVE-2009-0029-s390-enable-system-call-wrappers.patch rename to review-2.6.27/0009--CVE-2009-0029-s390-enable-system-call-wrappers.patch diff --git a/queue-2.6.27/0010--CVE-2009-0029-System-call-wrapper-special-cases.patch b/review-2.6.27/0010--CVE-2009-0029-System-call-wrapper-special-cases.patch similarity index 100% rename from queue-2.6.27/0010--CVE-2009-0029-System-call-wrapper-special-cases.patch rename to review-2.6.27/0010--CVE-2009-0029-System-call-wrapper-special-cases.patch diff --git a/queue-2.6.27/0011--CVE-2009-0029-System-call-wrappers-part-01.patch b/review-2.6.27/0011--CVE-2009-0029-System-call-wrappers-part-01.patch similarity index 100% rename from queue-2.6.27/0011--CVE-2009-0029-System-call-wrappers-part-01.patch rename to review-2.6.27/0011--CVE-2009-0029-System-call-wrappers-part-01.patch diff --git a/queue-2.6.27/0012--CVE-2009-0029-System-call-wrappers-part-02.patch b/review-2.6.27/0012--CVE-2009-0029-System-call-wrappers-part-02.patch similarity index 100% rename from queue-2.6.27/0012--CVE-2009-0029-System-call-wrappers-part-02.patch rename to review-2.6.27/0012--CVE-2009-0029-System-call-wrappers-part-02.patch diff --git a/queue-2.6.27/0013--CVE-2009-0029-System-call-wrappers-part-03.patch b/review-2.6.27/0013--CVE-2009-0029-System-call-wrappers-part-03.patch similarity index 100% rename from queue-2.6.27/0013--CVE-2009-0029-System-call-wrappers-part-03.patch rename to review-2.6.27/0013--CVE-2009-0029-System-call-wrappers-part-03.patch diff --git a/queue-2.6.27/0014--CVE-2009-0029-System-call-wrappers-part-04.patch b/review-2.6.27/0014--CVE-2009-0029-System-call-wrappers-part-04.patch similarity index 100% rename from queue-2.6.27/0014--CVE-2009-0029-System-call-wrappers-part-04.patch rename to review-2.6.27/0014--CVE-2009-0029-System-call-wrappers-part-04.patch diff --git a/queue-2.6.27/0015--CVE-2009-0029-System-call-wrappers-part-05.patch b/review-2.6.27/0015--CVE-2009-0029-System-call-wrappers-part-05.patch similarity index 100% rename from queue-2.6.27/0015--CVE-2009-0029-System-call-wrappers-part-05.patch rename to review-2.6.27/0015--CVE-2009-0029-System-call-wrappers-part-05.patch diff --git a/queue-2.6.27/0016--CVE-2009-0029-System-call-wrappers-part-06.patch b/review-2.6.27/0016--CVE-2009-0029-System-call-wrappers-part-06.patch similarity index 100% rename from queue-2.6.27/0016--CVE-2009-0029-System-call-wrappers-part-06.patch rename to review-2.6.27/0016--CVE-2009-0029-System-call-wrappers-part-06.patch diff --git a/queue-2.6.27/0017--CVE-2009-0029-System-call-wrappers-part-07.patch b/review-2.6.27/0017--CVE-2009-0029-System-call-wrappers-part-07.patch similarity index 100% rename from queue-2.6.27/0017--CVE-2009-0029-System-call-wrappers-part-07.patch rename to review-2.6.27/0017--CVE-2009-0029-System-call-wrappers-part-07.patch diff --git a/queue-2.6.27/0018--CVE-2009-0029-System-call-wrappers-part-08.patch b/review-2.6.27/0018--CVE-2009-0029-System-call-wrappers-part-08.patch similarity index 100% rename from queue-2.6.27/0018--CVE-2009-0029-System-call-wrappers-part-08.patch rename to review-2.6.27/0018--CVE-2009-0029-System-call-wrappers-part-08.patch diff --git a/queue-2.6.27/0019--CVE-2009-0029-System-call-wrappers-part-09.patch b/review-2.6.27/0019--CVE-2009-0029-System-call-wrappers-part-09.patch similarity index 100% rename from queue-2.6.27/0019--CVE-2009-0029-System-call-wrappers-part-09.patch rename to review-2.6.27/0019--CVE-2009-0029-System-call-wrappers-part-09.patch diff --git a/queue-2.6.27/0020--CVE-2009-0029-System-call-wrappers-part-10.patch b/review-2.6.27/0020--CVE-2009-0029-System-call-wrappers-part-10.patch similarity index 100% rename from queue-2.6.27/0020--CVE-2009-0029-System-call-wrappers-part-10.patch rename to review-2.6.27/0020--CVE-2009-0029-System-call-wrappers-part-10.patch diff --git a/queue-2.6.27/0021--CVE-2009-0029-System-call-wrappers-part-11.patch b/review-2.6.27/0021--CVE-2009-0029-System-call-wrappers-part-11.patch similarity index 100% rename from queue-2.6.27/0021--CVE-2009-0029-System-call-wrappers-part-11.patch rename to review-2.6.27/0021--CVE-2009-0029-System-call-wrappers-part-11.patch diff --git a/queue-2.6.27/0022--CVE-2009-0029-System-call-wrappers-part-12.patch b/review-2.6.27/0022--CVE-2009-0029-System-call-wrappers-part-12.patch similarity index 100% rename from queue-2.6.27/0022--CVE-2009-0029-System-call-wrappers-part-12.patch rename to review-2.6.27/0022--CVE-2009-0029-System-call-wrappers-part-12.patch diff --git a/queue-2.6.27/0023--CVE-2009-0029-System-call-wrappers-part-13.patch b/review-2.6.27/0023--CVE-2009-0029-System-call-wrappers-part-13.patch similarity index 100% rename from queue-2.6.27/0023--CVE-2009-0029-System-call-wrappers-part-13.patch rename to review-2.6.27/0023--CVE-2009-0029-System-call-wrappers-part-13.patch diff --git a/queue-2.6.27/0024--CVE-2009-0029-System-call-wrappers-part-14.patch b/review-2.6.27/0024--CVE-2009-0029-System-call-wrappers-part-14.patch similarity index 100% rename from queue-2.6.27/0024--CVE-2009-0029-System-call-wrappers-part-14.patch rename to review-2.6.27/0024--CVE-2009-0029-System-call-wrappers-part-14.patch diff --git a/queue-2.6.27/0025--CVE-2009-0029-System-call-wrappers-part-15.patch b/review-2.6.27/0025--CVE-2009-0029-System-call-wrappers-part-15.patch similarity index 100% rename from queue-2.6.27/0025--CVE-2009-0029-System-call-wrappers-part-15.patch rename to review-2.6.27/0025--CVE-2009-0029-System-call-wrappers-part-15.patch diff --git a/queue-2.6.27/0026--CVE-2009-0029-System-call-wrappers-part-16.patch b/review-2.6.27/0026--CVE-2009-0029-System-call-wrappers-part-16.patch similarity index 100% rename from queue-2.6.27/0026--CVE-2009-0029-System-call-wrappers-part-16.patch rename to review-2.6.27/0026--CVE-2009-0029-System-call-wrappers-part-16.patch diff --git a/queue-2.6.27/0027--CVE-2009-0029-System-call-wrappers-part-17.patch b/review-2.6.27/0027--CVE-2009-0029-System-call-wrappers-part-17.patch similarity index 100% rename from queue-2.6.27/0027--CVE-2009-0029-System-call-wrappers-part-17.patch rename to review-2.6.27/0027--CVE-2009-0029-System-call-wrappers-part-17.patch diff --git a/queue-2.6.27/0028--CVE-2009-0029-System-call-wrappers-part-18.patch b/review-2.6.27/0028--CVE-2009-0029-System-call-wrappers-part-18.patch similarity index 100% rename from queue-2.6.27/0028--CVE-2009-0029-System-call-wrappers-part-18.patch rename to review-2.6.27/0028--CVE-2009-0029-System-call-wrappers-part-18.patch diff --git a/queue-2.6.27/0029--CVE-2009-0029-System-call-wrappers-part-19.patch b/review-2.6.27/0029--CVE-2009-0029-System-call-wrappers-part-19.patch similarity index 100% rename from queue-2.6.27/0029--CVE-2009-0029-System-call-wrappers-part-19.patch rename to review-2.6.27/0029--CVE-2009-0029-System-call-wrappers-part-19.patch diff --git a/queue-2.6.27/0030--CVE-2009-0029-System-call-wrappers-part-20.patch b/review-2.6.27/0030--CVE-2009-0029-System-call-wrappers-part-20.patch similarity index 100% rename from queue-2.6.27/0030--CVE-2009-0029-System-call-wrappers-part-20.patch rename to review-2.6.27/0030--CVE-2009-0029-System-call-wrappers-part-20.patch diff --git a/queue-2.6.27/0031--CVE-2009-0029-System-call-wrappers-part-21.patch b/review-2.6.27/0031--CVE-2009-0029-System-call-wrappers-part-21.patch similarity index 100% rename from queue-2.6.27/0031--CVE-2009-0029-System-call-wrappers-part-21.patch rename to review-2.6.27/0031--CVE-2009-0029-System-call-wrappers-part-21.patch diff --git a/queue-2.6.27/0032--CVE-2009-0029-System-call-wrappers-part-22.patch b/review-2.6.27/0032--CVE-2009-0029-System-call-wrappers-part-22.patch similarity index 100% rename from queue-2.6.27/0032--CVE-2009-0029-System-call-wrappers-part-22.patch rename to review-2.6.27/0032--CVE-2009-0029-System-call-wrappers-part-22.patch diff --git a/queue-2.6.27/0033--CVE-2009-0029-System-call-wrappers-part-23.patch b/review-2.6.27/0033--CVE-2009-0029-System-call-wrappers-part-23.patch similarity index 100% rename from queue-2.6.27/0033--CVE-2009-0029-System-call-wrappers-part-23.patch rename to review-2.6.27/0033--CVE-2009-0029-System-call-wrappers-part-23.patch diff --git a/queue-2.6.27/0034--CVE-2009-0029-System-call-wrappers-part-24.patch b/review-2.6.27/0034--CVE-2009-0029-System-call-wrappers-part-24.patch similarity index 100% rename from queue-2.6.27/0034--CVE-2009-0029-System-call-wrappers-part-24.patch rename to review-2.6.27/0034--CVE-2009-0029-System-call-wrappers-part-24.patch diff --git a/queue-2.6.27/0035--CVE-2009-0029-System-call-wrappers-part-25.patch b/review-2.6.27/0035--CVE-2009-0029-System-call-wrappers-part-25.patch similarity index 100% rename from queue-2.6.27/0035--CVE-2009-0029-System-call-wrappers-part-25.patch rename to review-2.6.27/0035--CVE-2009-0029-System-call-wrappers-part-25.patch diff --git a/queue-2.6.27/0036--CVE-2009-0029-System-call-wrappers-part-26.patch b/review-2.6.27/0036--CVE-2009-0029-System-call-wrappers-part-26.patch similarity index 100% rename from queue-2.6.27/0036--CVE-2009-0029-System-call-wrappers-part-26.patch rename to review-2.6.27/0036--CVE-2009-0029-System-call-wrappers-part-26.patch diff --git a/queue-2.6.27/0037--CVE-2009-0029-System-call-wrappers-part-27.patch b/review-2.6.27/0037--CVE-2009-0029-System-call-wrappers-part-27.patch similarity index 100% rename from queue-2.6.27/0037--CVE-2009-0029-System-call-wrappers-part-27.patch rename to review-2.6.27/0037--CVE-2009-0029-System-call-wrappers-part-27.patch diff --git a/queue-2.6.27/0038--CVE-2009-0029-System-call-wrappers-part-28.patch b/review-2.6.27/0038--CVE-2009-0029-System-call-wrappers-part-28.patch similarity index 100% rename from queue-2.6.27/0038--CVE-2009-0029-System-call-wrappers-part-28.patch rename to review-2.6.27/0038--CVE-2009-0029-System-call-wrappers-part-28.patch diff --git a/queue-2.6.27/0039--CVE-2009-0029-System-call-wrappers-part-29.patch b/review-2.6.27/0039--CVE-2009-0029-System-call-wrappers-part-29.patch similarity index 100% rename from queue-2.6.27/0039--CVE-2009-0029-System-call-wrappers-part-29.patch rename to review-2.6.27/0039--CVE-2009-0029-System-call-wrappers-part-29.patch diff --git a/queue-2.6.27/0040--CVE-2009-0029-System-call-wrappers-part-30.patch b/review-2.6.27/0040--CVE-2009-0029-System-call-wrappers-part-30.patch similarity index 100% rename from queue-2.6.27/0040--CVE-2009-0029-System-call-wrappers-part-30.patch rename to review-2.6.27/0040--CVE-2009-0029-System-call-wrappers-part-30.patch diff --git a/queue-2.6.27/0041--CVE-2009-0029-System-call-wrappers-part-31.patch b/review-2.6.27/0041--CVE-2009-0029-System-call-wrappers-part-31.patch similarity index 100% rename from queue-2.6.27/0041--CVE-2009-0029-System-call-wrappers-part-31.patch rename to review-2.6.27/0041--CVE-2009-0029-System-call-wrappers-part-31.patch diff --git a/queue-2.6.27/0042--CVE-2009-0029-System-call-wrappers-part-32.patch b/review-2.6.27/0042--CVE-2009-0029-System-call-wrappers-part-32.patch similarity index 100% rename from queue-2.6.27/0042--CVE-2009-0029-System-call-wrappers-part-32.patch rename to review-2.6.27/0042--CVE-2009-0029-System-call-wrappers-part-32.patch diff --git a/queue-2.6.27/0043--CVE-2009-0029-System-call-wrappers-part-33.patch b/review-2.6.27/0043--CVE-2009-0029-System-call-wrappers-part-33.patch similarity index 100% rename from queue-2.6.27/0043--CVE-2009-0029-System-call-wrappers-part-33.patch rename to review-2.6.27/0043--CVE-2009-0029-System-call-wrappers-part-33.patch diff --git a/queue-2.6.27/0044--CVE-2009-0029-s390-specific-system-call-wrappers.patch b/review-2.6.27/0044--CVE-2009-0029-s390-specific-system-call-wrappers.patch similarity index 100% rename from queue-2.6.27/0044--CVE-2009-0029-s390-specific-system-call-wrappers.patch rename to review-2.6.27/0044--CVE-2009-0029-s390-specific-system-call-wrappers.patch diff --git a/queue-2.6.27/alsa-caiaq-fix-oops-with-midi.patch b/review-2.6.27/alsa-caiaq-fix-oops-with-midi.patch similarity index 100% rename from queue-2.6.27/alsa-caiaq-fix-oops-with-midi.patch rename to review-2.6.27/alsa-caiaq-fix-oops-with-midi.patch diff --git a/queue-2.6.27/alsa-hda-add-quirk-for-hp6730b-laptop.patch b/review-2.6.27/alsa-hda-add-quirk-for-hp6730b-laptop.patch similarity index 100% rename from queue-2.6.27/alsa-hda-add-quirk-for-hp6730b-laptop.patch rename to review-2.6.27/alsa-hda-add-quirk-for-hp6730b-laptop.patch diff --git a/queue-2.6.27/cgroups-fix-a-race-between-cgroup_clone-and-umount.patch b/review-2.6.27/cgroups-fix-a-race-between-cgroup_clone-and-umount.patch similarity index 100% rename from queue-2.6.27/cgroups-fix-a-race-between-cgroup_clone-and-umount.patch rename to review-2.6.27/cgroups-fix-a-race-between-cgroup_clone-and-umount.patch diff --git a/queue-2.6.27/devices-cgroup-allow-mkfifo.patch b/review-2.6.27/devices-cgroup-allow-mkfifo.patch similarity index 100% rename from queue-2.6.27/devices-cgroup-allow-mkfifo.patch rename to review-2.6.27/devices-cgroup-allow-mkfifo.patch diff --git a/queue-2.6.27/dm-log-fix-dm_io_client-leak-on-error-paths.patch b/review-2.6.27/dm-log-fix-dm_io_client-leak-on-error-paths.patch similarity index 100% rename from queue-2.6.27/dm-log-fix-dm_io_client-leak-on-error-paths.patch rename to review-2.6.27/dm-log-fix-dm_io_client-leak-on-error-paths.patch diff --git a/queue-2.6.27/dm-raid1-fix-error-count.patch b/review-2.6.27/dm-raid1-fix-error-count.patch similarity index 100% rename from queue-2.6.27/dm-raid1-fix-error-count.patch rename to review-2.6.27/dm-raid1-fix-error-count.patch diff --git a/queue-2.6.27/e1000e-fix-ipmi-traffic.patch b/review-2.6.27/e1000e-fix-ipmi-traffic.patch similarity index 100% rename from queue-2.6.27/e1000e-fix-ipmi-traffic.patch rename to review-2.6.27/e1000e-fix-ipmi-traffic.patch diff --git a/queue-2.6.27/ecryptfs-check-readlink-result-was-not-an-error-before-using-it.patch b/review-2.6.27/ecryptfs-check-readlink-result-was-not-an-error-before-using-it.patch similarity index 100% rename from queue-2.6.27/ecryptfs-check-readlink-result-was-not-an-error-before-using-it.patch rename to review-2.6.27/ecryptfs-check-readlink-result-was-not-an-error-before-using-it.patch diff --git a/queue-2.6.27/fix-switch_names-breakage-in-short-to-short-case.patch b/review-2.6.27/fix-switch_names-breakage-in-short-to-short-case.patch similarity index 100% rename from queue-2.6.27/fix-switch_names-breakage-in-short-to-short-case.patch rename to review-2.6.27/fix-switch_names-breakage-in-short-to-short-case.patch diff --git a/queue-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch b/review-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch similarity index 99% rename from queue-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch rename to review-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch index de550b312a9..a4673e20906 100644 --- a/queue-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch +++ b/review-2.6.27/fs-symlink-write_begin-allocation-context-fix.patch @@ -35,7 +35,7 @@ random example). [kosaki.motohiro@jp.fujitsu.com: fix fuse] Signed-off-by: Nick Piggin Reviewed-by: KOSAKI Motohiro -Cc: [2.6.28.x] +Cc: Signed-off-by: KOSAKI Motohiro Signed-off-by: Andrew Morton [ Cleaned up the calling convention: just pass in the AOP flags diff --git a/queue-2.6.27/ibmvfc-delay-npiv-login-retry-and-add-retries.patch b/review-2.6.27/ibmvfc-delay-npiv-login-retry-and-add-retries.patch similarity index 100% rename from queue-2.6.27/ibmvfc-delay-npiv-login-retry-and-add-retries.patch rename to review-2.6.27/ibmvfc-delay-npiv-login-retry-and-add-retries.patch diff --git a/queue-2.6.27/ibmvfc-improve-async-event-handling.patch b/review-2.6.27/ibmvfc-improve-async-event-handling.patch similarity index 100% rename from queue-2.6.27/ibmvfc-improve-async-event-handling.patch rename to review-2.6.27/ibmvfc-improve-async-event-handling.patch diff --git a/queue-2.6.27/inotify-fix-type-errors-in-interfaces.patch b/review-2.6.27/inotify-fix-type-errors-in-interfaces.patch similarity index 100% rename from queue-2.6.27/inotify-fix-type-errors-in-interfaces.patch rename to review-2.6.27/inotify-fix-type-errors-in-interfaces.patch diff --git a/queue-2.6.27/ioat-fix-self-test-for-multi-channel-case.patch b/review-2.6.27/ioat-fix-self-test-for-multi-channel-case.patch similarity index 100% rename from queue-2.6.27/ioat-fix-self-test-for-multi-channel-case.patch rename to review-2.6.27/ioat-fix-self-test-for-multi-channel-case.patch diff --git a/queue-2.6.27/iwlwifi-use-gfp_kernel-to-allocate-rx-skb-memory.patch b/review-2.6.27/iwlwifi-use-gfp_kernel-to-allocate-rx-skb-memory.patch similarity index 100% rename from queue-2.6.27/iwlwifi-use-gfp_kernel-to-allocate-rx-skb-memory.patch rename to review-2.6.27/iwlwifi-use-gfp_kernel-to-allocate-rx-skb-memory.patch diff --git a/review-2.6.27/mbox b/review-2.6.27/mbox new file mode 100644 index 00000000000..2ef8ab1530c --- /dev/null +++ b/review-2.6.27/mbox @@ -0,0 +1,12294 @@ +From gregkh@mini.kroah.org Thu Jan 15 13:54:33 2009 +Message-Id: <20090115215433.759955474@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:38 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takashi Iwai +Subject: [patch 01/85] ALSA: caiaq - Fix Oops with MIDI +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=alsa-caiaq-fix-oops-with-midi.patch +Content-Length: 2977 +Lines: 104 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Takashi Iwai + +commit f3f80a9205da74fa56d613f4c14b88b6e4e6caa8 upstream. + +The snd-usb-caiaq driver causes Oops occasionally when accessing MIDI +devices. This patch fixes the Oops and invalid URB submission errors +as well. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/caiaq/caiaq-device.h | 1 + + sound/usb/caiaq/caiaq-midi.c | 32 ++++++++++++++++++-------------- + 2 files changed, 19 insertions(+), 14 deletions(-) + +--- a/sound/usb/caiaq/caiaq-device.h ++++ b/sound/usb/caiaq/caiaq-device.h +@@ -75,6 +75,7 @@ struct snd_usb_caiaqdev { + wait_queue_head_t ep1_wait_queue; + wait_queue_head_t prepare_wait_queue; + int spec_received, audio_parm_answer; ++ int midi_out_active; + + char vendor_name[CAIAQ_USB_STR_LEN]; + char product_name[CAIAQ_USB_STR_LEN]; +--- a/sound/usb/caiaq/caiaq-midi.c ++++ b/sound/usb/caiaq/caiaq-midi.c +@@ -59,6 +59,11 @@ static int snd_usb_caiaq_midi_output_ope + + static int snd_usb_caiaq_midi_output_close(struct snd_rawmidi_substream *substream) + { ++ struct snd_usb_caiaqdev *dev = substream->rmidi->private_data; ++ if (dev->midi_out_active) { ++ usb_kill_urb(&dev->midi_out_urb); ++ dev->midi_out_active = 0; ++ } + return 0; + } + +@@ -69,7 +74,8 @@ static void snd_usb_caiaq_midi_send(stru + + dev->midi_out_buf[0] = EP1_CMD_MIDI_WRITE; + dev->midi_out_buf[1] = 0; /* port */ +- len = snd_rawmidi_transmit_peek(substream, dev->midi_out_buf+3, EP1_BUFSIZE-3); ++ len = snd_rawmidi_transmit(substream, dev->midi_out_buf + 3, ++ EP1_BUFSIZE - 3); + + if (len <= 0) + return; +@@ -79,24 +85,24 @@ static void snd_usb_caiaq_midi_send(stru + + ret = usb_submit_urb(&dev->midi_out_urb, GFP_ATOMIC); + if (ret < 0) +- log("snd_usb_caiaq_midi_send(%p): usb_submit_urb() failed, %d\n", +- substream, ret); ++ log("snd_usb_caiaq_midi_send(%p): usb_submit_urb() failed," ++ "ret=%d, len=%d\n", ++ substream, ret, len); ++ else ++ dev->midi_out_active = 1; + } + + static void snd_usb_caiaq_midi_output_trigger(struct snd_rawmidi_substream *substream, int up) + { + struct snd_usb_caiaqdev *dev = substream->rmidi->private_data; + +- if (dev->midi_out_substream != NULL) +- return; +- +- if (!up) { ++ if (up) { ++ dev->midi_out_substream = substream; ++ if (!dev->midi_out_active) ++ snd_usb_caiaq_midi_send(dev, substream); ++ } else { + dev->midi_out_substream = NULL; +- return; + } +- +- dev->midi_out_substream = substream; +- snd_usb_caiaq_midi_send(dev, substream); + } + + +@@ -161,16 +167,14 @@ int snd_usb_caiaq_midi_init(struct snd_u + void snd_usb_caiaq_midi_output_done(struct urb* urb) + { + struct snd_usb_caiaqdev *dev = urb->context; +- char *buf = urb->transfer_buffer; + ++ dev->midi_out_active = 0; + if (urb->status != 0) + return; + + if (!dev->midi_out_substream) + return; + +- snd_rawmidi_transmit_ack(dev->midi_out_substream, buf[2]); +- dev->midi_out_substream = NULL; + snd_usb_caiaq_midi_send(dev, dev->midi_out_substream); + } + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:33 2009 +Message-Id: <20090115215433.886303794@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:39 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takashi Iwai +Subject: [patch 02/85] ALSA: hda - Add quirk for HP6730B laptop +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=alsa-hda-add-quirk-for-hp6730b-laptop.patch +Content-Length: 964 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Takashi Iwai + +commit 11d518e07d700eeb5bcec36bfd5f501e405230dd upstream. + +Added model=laptop for HP 6730B laptop with AD1984A codec. +Reference: Novell bnc#457909 + https://bugzilla.novell.com/show_bug.cgi?id=457909 + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_analog.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_analog.c ++++ b/sound/pci/hda/patch_analog.c +@@ -3848,6 +3848,7 @@ static const char *ad1884a_models[AD1884 + static struct snd_pci_quirk ad1884a_cfg_tbl[] = { + SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE), + SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE), ++ SND_PCI_QUIRK(0x103c, 0x30e6, "HP 6730b", AD1884A_LAPTOP), + SND_PCI_QUIRK(0x103c, 0x30e7, "HP EliteBook 8530p", AD1884A_LAPTOP), + SND_PCI_QUIRK(0x103c, 0x3614, "HP 6730s", AD1884A_LAPTOP), + SND_PCI_QUIRK(0x17aa, 0x20ac, "Thinkpad X300", AD1884A_THINKPAD), + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.009562267@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:40 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Serge E. Hallyn" , + Li Zefan , + Paul Menage , + Balbir Singh +Subject: [patch 03/85] cgroups: fix a race between cgroup_clone and umount +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=cgroups-fix-a-race-between-cgroup_clone-and-umount.patch +Content-Length: 1786 +Lines: 55 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Li Zefan + +commit 7b574b7b0124ed344911f5d581e9bc2d83bbeb19 upstream. + +The race is calling cgroup_clone() while umounting the ns cgroup subsys, +and thus cgroup_clone() might access invalid cgroup_fs, or kill_sb() is +called after cgroup_clone() created a new dir in it. + +The BUG I triggered is BUG_ON(root->number_of_cgroups != 1); + + ------------[ cut here ]------------ + kernel BUG at kernel/cgroup.c:1093! + invalid opcode: 0000 [#1] SMP + ... + Process umount (pid: 5177, ti=e411e000 task=e40c4670 task.ti=e411e000) + ... + Call Trace: + [] ? deactivate_super+0x3f/0x51 + [] ? mntput_no_expire+0xb3/0xdd + [] ? sys_umount+0x265/0x2ac + [] ? sys_oldumount+0xd/0xf + [] ? sysenter_do_call+0x12/0x31 + ... + EIP: [] cgroup_kill_sb+0x23/0xe0 SS:ESP 0068:e411ef2c + ---[ end trace c766c1be3bf944ac ]--- + +Cc: Serge E. Hallyn +Signed-off-by: Li Zefan +Cc: Paul Menage +Cc: "Serge E. Hallyn" +Cc: Balbir Singh +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/cgroup.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/kernel/cgroup.c ++++ b/kernel/cgroup.c +@@ -2885,7 +2885,11 @@ int cgroup_clone(struct task_struct *tsk + parent = task_cgroup(tsk, subsys->subsys_id); + + /* Pin the hierarchy */ +- atomic_inc(&parent->root->sb->s_active); ++ if (!atomic_inc_not_zero(&parent->root->sb->s_active)) { ++ /* We race with the final deactivate_super() */ ++ mutex_unlock(&cgroup_mutex); ++ return 0; ++ } + + /* Keep the cgroup alive */ + get_css_set(cg); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.150349713@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:41 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Serge E. Hallyn" , + Li Zefan , + Pavel Emelyanov , + Paul Menage , + Lai Jiangshan , + KOSAKI Motohiro , + James Morris +Subject: [patch 04/85] devices cgroup: allow mkfifo +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=devices-cgroup-allow-mkfifo.patch +Content-Length: 1431 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Serge E. Hallyn + +commit 0b82ac37b889ec881b645860da3775118effb3ca upstream. + +The devcgroup_inode_permission() hook in the devices whitelist cgroup has +always bypassed access checks on fifos. But the mknod hook did not. The +devices whitelist is only about block and char devices, and fifos can't +even be added to the whitelist, so fifos can't be created at all except by +tasks which have 'a' in their whitelist (meaning they have access to all +devices). + +Fix the behavior by bypassing access checks to mkfifo. + +Signed-off-by: Serge E. Hallyn +Cc: Li Zefan +Cc: Pavel Emelyanov +Cc: Paul Menage +Cc: Lai Jiangshan +Cc: KOSAKI Motohiro +Cc: James Morris +Reported-by: Daniel Lezcano +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + security/device_cgroup.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/security/device_cgroup.c ++++ b/security/device_cgroup.c +@@ -543,6 +543,9 @@ int devcgroup_inode_mknod(int mode, dev_ + struct dev_cgroup *dev_cgroup; + struct dev_whitelist_item *wh; + ++ if (!S_ISBLK(mode) && !S_ISCHR(mode)) ++ return 0; ++ + rcu_read_lock(); + + dev_cgroup = task_devcgroup(current); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.273285170@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:42 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takahiro Yasui , + Jonathan Brassow , + Alasdair G Kergon +Subject: [patch 05/85] dm log: fix dm_io_client leak on error paths +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=dm-log-fix-dm_io_client-leak-on-error-paths.patch +Content-Length: 1386 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Takahiro Yasui + +commit c7a2bd19b7c1e0bd2c7604c53d2583e91e536948 upstream. + +In create_log_context function, dm_io_client_destroy function needs +to be called, when memory allocation of disk_header, sync_bits and +recovering_bits failed, but dm_io_client_destroy is not called. + +Signed-off-by: Takahiro Yasui +Acked-by: Jonathan Brassow +Signed-off-by: Alasdair G Kergon +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-log.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/md/dm-log.c ++++ b/drivers/md/dm-log.c +@@ -467,6 +467,7 @@ static int create_log_context(struct dm_ + lc->disk_header = vmalloc(buf_size); + if (!lc->disk_header) { + DMWARN("couldn't allocate disk log buffer"); ++ dm_io_client_destroy(lc->io_req.client); + kfree(lc); + return -ENOMEM; + } +@@ -482,6 +483,8 @@ static int create_log_context(struct dm_ + DMWARN("couldn't allocate sync bitset"); + if (!dev) + vfree(lc->clean_bits); ++ else ++ dm_io_client_destroy(lc->io_req.client); + vfree(lc->disk_header); + kfree(lc); + return -ENOMEM; +@@ -495,6 +498,8 @@ static int create_log_context(struct dm_ + vfree(lc->sync_bits); + if (!dev) + vfree(lc->clean_bits); ++ else ++ dm_io_client_destroy(lc->io_req.client); + vfree(lc->disk_header); + kfree(lc); + return -ENOMEM; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.399981230@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:43 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Milan Broz , + Jonathan Brassow , + Alasdair G Kergon +Subject: [patch 06/85] dm raid1: fix error count +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=dm-raid1-fix-error-count.patch +Content-Length: 1307 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Jonathan Brassow + +commit d460c65a6a9ec9e0d284864ec3a9a2d1b73f0e43 upstream. + +Always increase the error count when I/O on a leg of a mirror fails. + +The error count is used to decide whether to select an alternative +mirror leg. If the target doesn't use the "handle_errors" feature, the +error count is not updated and the bio can get requeued forever by the +read callback. + +Fix it by increasing error_count before the handle_errors feature +checking. + +Signed-off-by: Milan Broz +Signed-off-by: Jonathan Brassow +Signed-off-by: Alasdair G Kergon +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-raid1.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/md/dm-raid1.c ++++ b/drivers/md/dm-raid1.c +@@ -727,9 +727,6 @@ static void fail_mirror(struct mirror *m + struct mirror_set *ms = m->ms; + struct mirror *new; + +- if (!errors_handled(ms)) +- return; +- + /* + * error_count is used for nothing more than a + * simple way to tell if a device has encountered +@@ -740,6 +737,9 @@ static void fail_mirror(struct mirror *m + if (test_and_set_bit(error_type, &m->error_type)) + return; + ++ if (!errors_handled(ms)) ++ return; ++ + if (m != get_default_mirror(ms)) + goto out; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.523280980@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:44 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Maciej Sosnowski , + Dan Williams +Subject: [patch 07/85] ioat: fix self test for multi-channel case +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=ioat-fix-self-test-for-multi-channel-case.patch +Content-Length: 1893 +Lines: 63 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Dan Williams + +commit b9bdcbba010c2e49c8f837ea7a49fe006b636f41 upstream. + +In the multiple device case we need to re-arm the completion and protect +against concurrent self-tests. The printk from the test callback is +removed as it can arbitrarily delay completion of the test. + +Cc: Maciej Sosnowski +Signed-off-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/dma/ioat_dma.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +--- a/drivers/dma/ioat_dma.c ++++ b/drivers/dma/ioat_dma.c +@@ -1337,12 +1337,11 @@ static void ioat_dma_start_null_desc(str + */ + #define IOAT_TEST_SIZE 2000 + +-DECLARE_COMPLETION(test_completion); + static void ioat_dma_test_callback(void *dma_async_param) + { +- printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n", +- dma_async_param); +- complete(&test_completion); ++ struct completion *cmp = dma_async_param; ++ ++ complete(cmp); + } + + /** +@@ -1359,6 +1358,7 @@ static int ioat_dma_self_test(struct ioa + dma_addr_t dma_dest, dma_src; + dma_cookie_t cookie; + int err = 0; ++ struct completion cmp; + + src = kzalloc(sizeof(u8) * IOAT_TEST_SIZE, GFP_KERNEL); + if (!src) +@@ -1398,8 +1398,9 @@ static int ioat_dma_self_test(struct ioa + } + + async_tx_ack(tx); ++ init_completion(&cmp); + tx->callback = ioat_dma_test_callback; +- tx->callback_param = (void *)0x8086; ++ tx->callback_param = &cmp; + cookie = tx->tx_submit(tx); + if (cookie < 0) { + dev_err(&device->pdev->dev, +@@ -1409,7 +1410,7 @@ static int ioat_dma_self_test(struct ioa + } + device->common.device_issue_pending(dma_chan); + +- wait_for_completion_timeout(&test_completion, msecs_to_jiffies(3000)); ++ wait_for_completion_timeout(&cmp, msecs_to_jiffies(3000)); + + if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL) + != DMA_SUCCESS) { + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.650434012@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:45 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhu Yi , + Tomas Winkler , + "John W. Linville" +Subject: [patch 08/85] iwlwifi: use GFP_KERNEL to allocate Rx SKB memory +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=iwlwifi-use-gfp_kernel-to-allocate-rx-skb-memory.patch +Content-Length: 3841 +Lines: 138 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Zhu Yi + +commit f1bc4ac61f2c08515afd80c6dc3962aa6d0b138b upstream. + +Previously we allocate Rx SKB with GFP_ATOMIC flag. This is because we need +to hold a spinlock to protect the two rx_used and rx_free lists operation +in the rxq. + + spin_lock(); + ... + element = rxq->rx_used.next; + element->skb = alloc_skb(..., GFP_ATOMIC); + list_del(element); + list_add_tail(&element->list, &rxq->rx_free); + ... + spin_unlock(); + +After spliting the rx_used delete and rx_free insert into two operations, +we don't require the skb allocation in an atomic context any more (the +function itself is scheduled in a workqueue). + + spin_lock(); + ... + element = rxq->rx_used.next; + list_del(element); + ... + spin_unlock(); + ... + element->skb = alloc_skb(..., GFP_KERNEL); + ... + spin_lock() + ... + list_add_tail(&element->list, &rxq->rx_free); + ... + spin_unlock(); + +This patch should fix the "iwlagn: Can not allocate SKB buffers" warning +we see recently. + +Signed-off-by: Zhu Yi +Acked-by: Tomas Winkler +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/iwl-agn.c | 12 +----------- + drivers/net/wireless/iwlwifi/iwl-rx.c | 29 +++++++++++++++++++---------- + 2 files changed, 20 insertions(+), 21 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/iwl-agn.c ++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c +@@ -1334,16 +1334,6 @@ static void iwl_setup_rx_handlers(struct + priv->cfg->ops->lib->rx_handler_setup(priv); + } + +-/* +- * this should be called while priv->lock is locked +-*/ +-static void __iwl_rx_replenish(struct iwl_priv *priv) +-{ +- iwl_rx_allocate(priv); +- iwl_rx_queue_restock(priv); +-} +- +- + /** + * iwl_rx_handle - Main entry function for receiving responses from uCode + * +@@ -1449,7 +1439,7 @@ void iwl_rx_handle(struct iwl_priv *priv + count++; + if (count >= 8) { + priv->rxq.read = i; +- __iwl_rx_replenish(priv); ++ iwl_rx_queue_restock(priv); + count = 0; + } + } +--- a/drivers/net/wireless/iwlwifi/iwl-rx.c ++++ b/drivers/net/wireless/iwlwifi/iwl-rx.c +@@ -245,25 +245,31 @@ void iwl_rx_allocate(struct iwl_priv *pr + struct list_head *element; + struct iwl_rx_mem_buffer *rxb; + unsigned long flags; +- spin_lock_irqsave(&rxq->lock, flags); +- while (!list_empty(&rxq->rx_used)) { ++ ++ while (1) { ++ spin_lock_irqsave(&rxq->lock, flags); ++ ++ if (list_empty(&rxq->rx_used)) { ++ spin_unlock_irqrestore(&rxq->lock, flags); ++ return; ++ } + element = rxq->rx_used.next; + rxb = list_entry(element, struct iwl_rx_mem_buffer, list); ++ list_del(element); ++ ++ spin_unlock_irqrestore(&rxq->lock, flags); + + /* Alloc a new receive buffer */ + rxb->skb = alloc_skb(priv->hw_params.rx_buf_size + 256, +- __GFP_NOWARN | GFP_ATOMIC); ++ GFP_KERNEL); + if (!rxb->skb) { +- if (net_ratelimit()) +- printk(KERN_CRIT DRV_NAME +- ": Can not allocate SKB buffers\n"); ++ printk(KERN_CRIT DRV_NAME ++ "Can not allocate SKB buffers\n"); + /* We don't reschedule replenish work here -- we will + * call the restock method and if it still needs + * more buffers it will schedule replenish */ + break; + } +- priv->alloc_rxb_skb++; +- list_del(element); + + /* Get physical address of RB/SKB */ + rxb->real_dma_addr = pci_map_single( +@@ -277,12 +283,15 @@ void iwl_rx_allocate(struct iwl_priv *pr + rxb->aligned_dma_addr = ALIGN(rxb->real_dma_addr, 256); + skb_reserve(rxb->skb, rxb->aligned_dma_addr - rxb->real_dma_addr); + ++ spin_lock_irqsave(&rxq->lock, flags); ++ + list_add_tail(&rxb->list, &rxq->rx_free); + rxq->free_count++; ++ priv->alloc_rxb_skb++; ++ ++ spin_unlock_irqrestore(&rxq->lock, flags); + } +- spin_unlock_irqrestore(&rxq->lock, flags); + } +-EXPORT_SYMBOL(iwl_rx_allocate); + + void iwl_rx_replenish(struct iwl_priv *priv) + { + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:34 2009 +Message-Id: <20090115215434.790068449@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:46 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + NeilBrown +Subject: [patch 09/85] md: fix bitmap-on-external-file bug. +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=md-fix-bitmap-on-external-file-bug.patch +Content-Length: 985 +Lines: 35 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: NeilBrown + +commit 538452700d95480c16e7aa6b10ff77cd937d33f4 upstream. + +commit a2ed9615e3222645007fc19991aedf30eed3ecfd +fixed a bug with 'internal' bitmaps, but in the process broke +'in a file' bitmaps. So they are broken in 2.6.28 + +This fixes it, and needs to go in 2.6.28-stable. + +Signed-off-by: NeilBrown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/bitmap.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/drivers/md/bitmap.c ++++ b/drivers/md/bitmap.c +@@ -964,9 +964,11 @@ static int bitmap_init_from_disk(struct + */ + page = bitmap->sb_page; + offset = sizeof(bitmap_super_t); +- read_sb_page(bitmap->mddev, bitmap->offset, +- page, +- index, count); ++ if (!file) ++ read_sb_page(bitmap->mddev, ++ bitmap->offset, ++ page, ++ index, count); + } else if (file) { + page = read_page(file, index, bitmap, count); + offset = 0; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215434.928229305@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:47 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Evgeniy Dushistov , + Nick Piggin +Subject: [patch 10/85] minix: fix add links wrong position calculation +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=minix-fix-add-link-s-wrong-position-calculation.patch +Content-Length: 1016 +Lines: 30 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Evgeniy Dushistov + +commit d6b54841f4ddd836c886d1e6ac381cf309ee98a3 upstream. + +Fix the add link method. The oosition in the directory was calculated in +wrong way - it had the incorrect shift direction. + +[akpm@linux-foundation.org: coding-style fixes] +Signed-off-by: Evgeniy Dushistov +Cc: Nick Piggin +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/minix/dir.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/minix/dir.c ++++ b/fs/minix/dir.c +@@ -280,7 +280,7 @@ int minix_add_link(struct dentry *dentry + return -EINVAL; + + got_it: +- pos = (page->index >> PAGE_CACHE_SHIFT) + p - (char*)page_address(page); ++ pos = page_offset(page) + p - (char *)page_address(page); + err = __minix_write_begin(NULL, page->mapping, pos, sbi->s_dirsize, + AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); + if (err) + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.079093172@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:48 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Ingo Molnar +Subject: [patch 11/85] sched_clock: prevent scd->clock from moving backwards, take #2 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=sched_clock-prevent-scd-clock-from-moving-backwards-take-2.patch +Content-Length: 2746 +Lines: 90 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Thomas Gleixner + +commit 1c5745aa380efb6417b5681104b007c8612fb496 upstream. + +Redo: + + 5b7dba4: sched_clock: prevent scd->clock from moving backwards + +which had to be reverted due to s2ram hangs: + + ca7e716: Revert "sched_clock: prevent scd->clock from moving backwards" + +... this time with resume restoring GTOD later in the sequence +taken into account as well. + +The "timekeeping_suspended" flag is not very nice but we cannot call into +GTOD before it has been properly resumed and the scheduler will run very +early in the resume sequence. + +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/time.h | 1 + + kernel/sched_clock.c | 5 ++++- + kernel/time/timekeeping.c | 7 +++++-- + 3 files changed, 10 insertions(+), 3 deletions(-) + +--- a/include/linux/time.h ++++ b/include/linux/time.h +@@ -99,6 +99,7 @@ extern unsigned long read_persistent_clo + extern int update_persistent_clock(struct timespec now); + extern int no_sync_cmos_clock __read_mostly; + void timekeeping_init(void); ++extern int timekeeping_suspended; + + unsigned long get_seconds(void); + struct timespec current_kernel_time(void); +--- a/kernel/sched_clock.c ++++ b/kernel/sched_clock.c +@@ -124,7 +124,7 @@ static u64 __update_sched_clock(struct s + + clock = scd->tick_gtod + delta; + min_clock = wrap_max(scd->tick_gtod, scd->clock); +- max_clock = scd->tick_gtod + TICK_NSEC; ++ max_clock = wrap_max(scd->clock, scd->tick_gtod + TICK_NSEC); + + clock = wrap_max(clock, min_clock); + clock = wrap_min(clock, max_clock); +@@ -227,6 +227,9 @@ EXPORT_SYMBOL_GPL(sched_clock_idle_sleep + */ + void sched_clock_idle_wakeup_event(u64 delta_ns) + { ++ if (timekeeping_suspended) ++ return; ++ + sched_clock_tick(); + touch_softlockup_watchdog(); + } +--- a/kernel/time/timekeeping.c ++++ b/kernel/time/timekeeping.c +@@ -46,6 +46,9 @@ struct timespec xtime __attribute__ ((al + struct timespec wall_to_monotonic __attribute__ ((aligned (16))); + static unsigned long total_sleep_time; /* seconds */ + ++/* flag for if timekeeping is suspended */ ++int __read_mostly timekeeping_suspended; ++ + static struct timespec xtime_cache __attribute__ ((aligned (16))); + void update_xtime_cache(u64 nsec) + { +@@ -92,6 +95,8 @@ void getnstimeofday(struct timespec *ts) + unsigned long seq; + s64 nsecs; + ++ WARN_ON(timekeeping_suspended); ++ + do { + seq = read_seqbegin(&xtime_lock); + +@@ -261,8 +266,6 @@ void __init timekeeping_init(void) + write_sequnlock_irqrestore(&xtime_lock, flags); + } + +-/* flag for if timekeeping is suspended */ +-static int timekeeping_suspended; + /* time in seconds when suspend began */ + static unsigned long timekeeping_suspend_time; + /* xtime offset when we went into suspend */ + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.225878657@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:49 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Larry Finger , + James Bottomley +Subject: [patch 12/85] SCSI: aha152x_cs: Fix regression that keeps driver from using shared interrupts +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=scsi-aha152x_cs-fix-regression-that-keeps-driver-from-using-shared-interrupts.patch +Content-Length: 1204 +Lines: 32 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Larry Finger + +commit 58607b30fc0f2230a189500112c7a7cca02804cf upstream. + +At some point since 2.6.22, the aha152x_cs driver stopped working and +started erring on load with the following messages: + +kernel: pcmcia: request for exclusive IRQ could not be fulfilled. +kernel: pcmcia: the driver needs updating to supported shared IRQ lines. + +With the following change, the driver works with shared IRQs. + +Signed-off-by: Larry Finger +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/pcmcia/aha152x_stub.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/scsi/pcmcia/aha152x_stub.c ++++ b/drivers/scsi/pcmcia/aha152x_stub.c +@@ -114,7 +114,7 @@ static int aha152x_probe(struct pcmcia_d + link->io.NumPorts1 = 0x20; + link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; + link->io.IOAddrLines = 10; +- link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; ++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; + link->irq.IRQInfo1 = IRQ_LEVEL_ID; + link->conf.Attributes = CONF_ENABLE_IRQ; + link->conf.IntType = INT_MEMORY_AND_IO; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.372514821@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:50 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + FUJITA Tomonori , + James Bottomley +Subject: [patch 13/85] SCSI: eata: fix the data buffer accessors conversion regression +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=scsi-eata-fix-the-data-buffer-accessors-conversion-regression.patch +Content-Length: 1785 +Lines: 57 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: FUJITA Tomonori + +commit 20c09df7eb9c92a40e0ecf654b6e8f14c8583b9e upstream. + +This fixes the regression introduced by the commit +58e2a02eb18393e76a469580fedf7caec190eb5e (eata: convert to use the +data buffer accessors), reported: + +http://marc.info/?t=122987621300006&r=1&w=2 + +- fix DMA_NONE handling in map_dma() + +- this driver can't use scsi_dma_map since host->shost_gendev.parent +is not set properly (it uses scsi_register). + +Signed-off-by: FUJITA Tomonori +Reported-by: Arthur Marsh +Tested-by: Arthur Marsh +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/eata.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +--- a/drivers/scsi/eata.c ++++ b/drivers/scsi/eata.c +@@ -1626,8 +1626,15 @@ static void map_dma(unsigned int i, stru + + cpp->sense_len = SCSI_SENSE_BUFFERSIZE; + +- count = scsi_dma_map(SCpnt); +- BUG_ON(count < 0); ++ if (!scsi_sg_count(SCpnt)) { ++ cpp->data_len = 0; ++ return; ++ } ++ ++ count = pci_map_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt), ++ pci_dir); ++ BUG_ON(!count); ++ + scsi_for_each_sg(SCpnt, sg, count, k) { + cpp->sglist[k].address = H2DEV(sg_dma_address(sg)); + cpp->sglist[k].num_bytes = H2DEV(sg_dma_len(sg)); +@@ -1655,7 +1662,9 @@ static void unmap_dma(unsigned int i, st + pci_unmap_single(ha->pdev, DEV2H(cpp->sense_addr), + DEV2H(cpp->sense_len), PCI_DMA_FROMDEVICE); + +- scsi_dma_unmap(SCpnt); ++ if (scsi_sg_count(SCpnt)) ++ pci_unmap_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt), ++ pci_dir); + + if (!DEV2H(cpp->data_len)) + pci_dir = PCI_DMA_BIDIRECTIONAL; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.519247087@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:51 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Marcin Slusarz , + David Woodhouse +Subject: [patch 14/85] USB: emi26: fix oops on load +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-emi26-fix-oops-on-load.patch +Content-Length: 3818 +Lines: 88 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Marcin Slusarz + +commit 327d74f6b65ddc8a042c43c11fdd4be0bb354668 upstream. + +Fix oops introduced by commit ae93a55bf948753de0bb8e43fa9c027f786abb05 +(emi26: use request_firmware()): + +usb 1-1: new full speed USB device using uhci_hcd and address 2 +usb 1-1: configuration #1 chosen from 1 choice +emi26 - firmware loader 1-1:1.0: emi26_probe start +usb 1-1: firmware: requesting emi26/loader.fw +usb 1-1: firmware: requesting emi26/bitstream.fw +usb 1-1: firmware: requesting emi26/firmware.fw +usb 1-1: emi26_set_reset - 1 +usb 1-1: emi26_set_reset - 0 +BUG: unable to handle kernel NULL pointer dereference at 00000000 +IP: [] emi26_probe+0x2f7/0x620 [emi26] +*pde = 00000000 +Oops: 0000 [#1] SMP +last sysfs file: /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/firmware/1-1/loading +Modules linked in: emi26(+) ipv6 cpufreq_ondemand coretemp arc4 ecb iwl3945 irtty_sir sir_dev nsc_ircc ehci_hcd uhci_hcd mac80211 irda usbcore snd_hda_intel thinkpad_acpi rfkill hwmon led_class e1000e snd_pcm cfg80211 snd_timer crc_ccitt snd snd_page_alloc aes_generic + +Pid: 5082, comm: modprobe Not tainted (2.6.28 #2) 17023QG +EIP: 0060:[] EFLAGS: 00010206 CPU: 0 +EIP is at emi26_probe+0x2f7/0x620 [emi26] +EAX: 0000015c EBX: 00000000 ECX: c1ffd9c0 EDX: 00000000 +ESI: 0000015c EDI: f6bb215c EBP: f6bb0400 ESP: f00ebcfc + DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 +Process modprobe (pid: 5082, ti=f00ea000 task=f5c7c700 task.ti=f00ea000) +Stack: + 0000015c 000000a5 f6a67cb8 f80dc7e0 c01c6262 fbef2986 f6bb2000 00008fe0 + 0000015c f715f748 f715f740 f715f738 f715f748 f6a67c00 f80dd040 f80dcfc0 + f6bb0400 fbacb290 f6a67c94 fbae0160 c01c70bf 00000000 f6a67c1c 00000000 +Call Trace: + [] sysfs_add_one+0x12/0x50 + [] usb_probe_interface+0xa0/0x140 [usbcore] + [] sysfs_create_link+0xf/0x20 + [] driver_probe_device+0x82/0x180 + [] usb_match_id+0x3b/0x50 [usbcore] + [] __driver_attach+0x7e/0x80 + [] bus_for_each_dev+0x3a/0x60 + [] driver_attach+0x16/0x20 + [] __driver_attach+0x0/0x80 + [] bus_add_driver+0x1a1/0x220 + [] driver_register+0x4d/0x120 + [] idr_get_empty_slot+0xf2/0x290 + [] usb_register_driver+0x81/0x100 [usbcore] + [] emi26_init+0x0/0x14 [emi26] + [] do_one_initcall+0x36/0x1b0 + [] sysfs_ilookup_test+0x0/0x10 + [] ifind+0x31/0x90 + [] __sysfs_add_one+0x59/0x80 + [] sysfs_addrm_finish+0x14/0x1c0 + [] __vunmap+0xa3/0xd0 + [] load_module+0x1544/0x1640 + [] sys_init_module+0x87/0x1b0 + [] sys_read+0x41/0x70 + [] sysenter_do_call+0x12/0x21 + [] wait_for_common+0x40/0x110 +Code: 66 c1 e8 08 66 09 d0 75 a5 31 d2 89 e8 e8 72 fc ff ff 85 c0 0f 88 9a 02 00 00 b8 fa 00 00 00 e8 30 46 05 c8 8b 74 24 28 8b 5e 04 <8b> 03 89 44 24 1c 0f c8 89 44 24 1c 0f b7 4b 04 c7 44 24 20 00 +EIP: [] emi26_probe+0x2f7/0x620 [emi26] SS:ESP 0068:f00ebcfc +---[ end trace 2eefa13825431230 ]--- + +After the last "package" of firmware data is sent to the device, we dereference +NULL pointer (on access to rec->addr). Fix it. + +Reported--by: David Flatz +Tested-by: David Flatz +Signed-off-by: Marcin Slusarz +Cc: David Woodhouse +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/misc/emi26.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/misc/emi26.c ++++ b/drivers/usb/misc/emi26.c +@@ -157,7 +157,7 @@ static int emi26_load_firmware (struct u + err("%s - error loading firmware: error = %d", __func__, err); + goto wraperr; + } +- } while (i > 0); ++ } while (rec); + + /* Assert reset (stop the CPU in the EMI) */ + err = emi26_set_reset(dev,1); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.646910938@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:52 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Sebastian Andrzej Siewior +Subject: [patch 15/85] USB: isp1760: use a specific PLX bridge instead of any bdridge +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-isp1760-use-a-specific-plx-bridge-instead-of-any-bdridge.patch +Content-Length: 1274 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Sebastian Andrzej Siewior + +commit 6c0735687d37e25a65866823881bcbf39a6a023f upstream. + +this driver can't handle (of course) any brdige class devices. So we +now are just active on one specific bridge which should be only the +isp1761 chip behind a PLX bridge. + +Signed-off-by: Sebastian Andrzej Siewior +Tested-by: Karl Bongers +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/isp1760-if.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +--- a/drivers/usb/host/isp1760-if.c ++++ b/drivers/usb/host/isp1760-if.c +@@ -267,12 +267,16 @@ static void isp1761_pci_shutdown(struct + printk(KERN_ERR "ips1761_pci_shutdown\n"); + } + +-static const struct pci_device_id isp1760_plx [] = { { +- /* handle any USB 2.0 EHCI controller */ +- PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_OTHER << 8) | (0x06 << 16)), ~0), +- .driver_data = 0, +-}, +-{ /* end: all zeroes */ } ++static const struct pci_device_id isp1760_plx [] = { ++ { ++ .class = PCI_CLASS_BRIDGE_OTHER << 8, ++ .class_mask = ~0, ++ .vendor = PCI_VENDOR_ID_PLX, ++ .device = 0x5406, ++ .subvendor = PCI_VENDOR_ID_PLX, ++ .subdevice = 0x9054, ++ }, ++ { } + }; + MODULE_DEVICE_TABLE(pci, isp1760_plx); + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:35 2009 +Message-Id: <20090115215435.775506891@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:53 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Daniel Drake , + Kadianakis George , + Phil Dibowitz +Subject: [patch 16/85] USB: unusual_devs.h additions for Pentax K10D +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-unusual_devs.h-additions-for-pentax-k10d.patch +Content-Length: 1576 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Daniel Drake + +commit e3f47f89a57ef115755184a8b3f03a47ee227418 upstream. + +Jaak Ristioja reported problems with his Pentax K10D camera: +https://bugs.gentoo.org/show_bug.cgi?id=250406 + +/proc/bus/usb/devices: +T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=0a17 ProdID=006e Rev= 1.00 +S: Manufacturer=PENTAX Corporation +S: Product=K10D +C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA +I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage +E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms +E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=100ms +The number of reported sectors is off-by-one. + +Signed-off-by: Daniel Drake +Cc: Kadianakis George +Signed-off-by: Phil Dibowitz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1425,6 +1425,13 @@ UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xff + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_INQUIRY ), + ++/* Reported by Jaak Ristioja */ ++UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100, ++ "Pentax", ++ "K10D", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_FIX_CAPACITY ), ++ + /* These are virtual windows driver CDs, which the zd1211rw driver + * automatically converts into WLAN devices. */ + UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101, + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215435.902036380@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:54 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Joerg Roedel , + Ingo Molnar +Subject: [patch 17/85] x86: default to SWIOTLB=y on x86_64 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-default-to-swiotlb-y-on-x86_64.patch +Content-Length: 957 +Lines: 31 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Joerg Roedel + +commit a1afd01c175324656d0e8f1c82ea94b474953c04 upstream. + +Impact: fixes korg bugzilla 11980 + +A kernel for a 64bit x86 system should always contain the swiotlb code +in case it is booted on a machine without any hardware IOMMU supported +by the kernel and more than 4GB of RAM. This patch changes Kconfig to +always compile swiotlb into the kernel for x86_64. + +Signed-off-by: Joerg Roedel +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -567,7 +567,7 @@ config AMD_IOMMU + + # need this always selected by IOMMU for the VIA workaround + config SWIOTLB +- bool ++ def_bool y if X86_64 + help + Support for software bounce buffers used on x86-64 systems + which don't have a hardware IOMMU (e.g. the current generation + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.035723622@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:55 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Ravikiran Thirumalai , + Mike Travis , + Ingo Molnar +Subject: [patch 18/85] x86: fix incorrect __read_mostly on _boot_cpu_pda +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-fix-incorrect-__read_mostly-on-_boot_cpu_pda.patch +Content-Length: 1001 +Lines: 33 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Ravikiran G Thirumalai + +commit 26799a63110dcbe81291ea53178f6b4810d07424 upstream. + +The pda rework (commit 3461b0af025251bbc6b3d56c821c6ac2de6f7209) +to remove static boot cpu pdas introduced a performance bug. + +_boot_cpu_pda is the actual pda used by the boot cpu and is definitely +not "__read_mostly" and ended up polluting the read mostly section with +writes. This bug caused regression of about 8-10% on certain syscall +intensive workloads. + +Signed-off-by: Ravikiran Thirumalai +Acked-by: Mike Travis +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/head64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/head64.c ++++ b/arch/x86/kernel/head64.c +@@ -26,7 +26,7 @@ + #include + + /* boot cpu pda */ +-static struct x8664_pda _boot_cpu_pda __read_mostly; ++static struct x8664_pda _boot_cpu_pda; + + #ifdef CONFIG_SMP + /* + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.161876947@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:56 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Cliff Wickman , + Ingo Molnar +Subject: [patch 19/85] x86, UV: remove erroneous BAU initialization +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-uv-remove-erroneous-bau-initialization.patch +Content-Length: 1902 +Lines: 62 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Cliff Wickman + +commit 46814dded1b972a07b1609d81632eef3009fbb10 upstream. + +Impact: fix crash on x86/UV + +UV is the SGI "UltraViolet" machine, which is x86_64 based. +BAU is the "Broadcast Assist Unit", used for TLB shootdown in UV. + +This patch removes the allocation and initialization of an unused table. + +This table is left over from a development test mode. It is unused in +the present code. + +And it was incorrectly initialized: 8 entries allocated but 17 initialized, +causing slab corruption. + +This patch should go into 2.6.27 and 2.6.28 as well as the current tree. + +Diffed against 2.6.28 (linux-next, 12/30/08) + +Signed-off-by: Cliff Wickman +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/tlb_uv.c | 9 --------- + 1 file changed, 9 deletions(-) + +--- a/arch/x86/kernel/tlb_uv.c ++++ b/arch/x86/kernel/tlb_uv.c +@@ -586,7 +586,6 @@ static int __init uv_ptc_init(void) + static struct bau_control * __init uv_table_bases_init(int blade, int node) + { + int i; +- int *ip; + struct bau_msg_status *msp; + struct bau_control *bau_tabp; + +@@ -603,13 +602,6 @@ static struct bau_control * __init uv_ta + bau_cpubits_clear(&msp->seen_by, (int) + uv_blade_nr_possible_cpus(blade)); + +- bau_tabp->watching = +- kmalloc_node(sizeof(int) * DEST_NUM_RESOURCES, GFP_KERNEL, node); +- BUG_ON(!bau_tabp->watching); +- +- for (i = 0, ip = bau_tabp->watching; i < DEST_Q_SIZE; i++, ip++) +- *ip = 0; +- + uv_bau_table_bases[blade] = bau_tabp; + + return bau_tabp; +@@ -632,7 +624,6 @@ uv_table_bases_finish(int blade, int nod + bcp->bau_msg_head = bau_tablesp->va_queue_first; + bcp->va_queue_first = bau_tablesp->va_queue_first; + bcp->va_queue_last = bau_tablesp->va_queue_last; +- bcp->watching = bau_tablesp->watching; + bcp->msg_statuses = bau_tablesp->msg_statuses; + bcp->descriptor_base = adp; + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.290608811@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:57 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Michael Kerrisk , + Robert Love , + Vegard Nossum , + Ulrich Drepper , + Al Viro +Subject: [patch 20/85] inotify: fix type errors in interfaces +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=inotify-fix-type-errors-in-interfaces.patch +Content-Length: 2254 +Lines: 58 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Michael Kerrisk + +commit 4ae8978cf92a96257cd8998a49e781be83571d64 upstream. + +The problems lie in the types used for some inotify interfaces, both at the kernel level and at the glibc level. This mail addresses the kernel problem. I will follow up with some suggestions for glibc changes. + +For the sys_inotify_rm_watch() interface, the type of the 'wd' argument is +currently 'u32', it should be '__s32' . That is Robert's suggestion, and +is consistent with the other declarations of watch descriptors in the +kernel source, in particular, the inotify_event structure in +include/linux/inotify.h: + +struct inotify_event { + __s32 wd; /* watch descriptor */ + __u32 mask; /* watch mask */ + __u32 cookie; /* cookie to synchronize two events */ + __u32 len; /* length (including nulls) of name */ + char name[0]; /* stub for possible name */ +}; + +The patch makes the changes needed for inotify_rm_watch(). + +Signed-off-by: Michael Kerrisk +Cc: Robert Love +Cc: Vegard Nossum +Cc: Ulrich Drepper +Signed-off-by: Andrew Morton +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + fs/inotify_user.c | 2 +- + include/linux/syscalls.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/fs/inotify_user.c ++++ b/fs/inotify_user.c +@@ -707,7 +707,7 @@ fput_and_out: + return ret; + } + +-asmlinkage long sys_inotify_rm_watch(int fd, u32 wd) ++asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd) + { + struct file *filp; + struct inotify_device *dev; +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -550,7 +550,7 @@ asmlinkage long sys_inotify_init(void); + asmlinkage long sys_inotify_init1(int flags); + asmlinkage long sys_inotify_add_watch(int fd, const char __user *path, + u32 mask); +-asmlinkage long sys_inotify_rm_watch(int fd, u32 wd); ++asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd); + + asmlinkage long sys_spu_run(int fd, __u32 __user *unpc, + __u32 __user *ustatus); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.436319369@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:58 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 21/85] [PATCH 01/44] [CVE-2009-0029] Move compat system call declarations to compat header file +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0001--CVE-2009-0029-Move-compat-system-call-declarations.patch +Content-Length: 2473 +Lines: 63 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 4c696ba7982501d43dea11dbbaabd2aa8a19cc42 upstream. + +Move declarations to correct header file. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/compat.h | 13 +++++++++++++ + include/linux/syscalls.h | 12 ------------ + 2 files changed, 13 insertions(+), 12 deletions(-) + +--- a/include/linux/compat.h ++++ b/include/linux/compat.h +@@ -278,5 +278,18 @@ asmlinkage long compat_sys_timerfd_setti + asmlinkage long compat_sys_timerfd_gettime(int ufd, + struct compat_itimerspec __user *otmr); + ++asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, ++ __u32 __user *pages, ++ const int __user *nodes, ++ int __user *status, ++ int flags); ++asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, ++ struct compat_timeval __user *t); ++asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename, ++ struct compat_stat __user *statbuf, ++ int flag); ++asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, ++ int flags, int mode); ++ + #endif /* CONFIG_COMPAT */ + #endif /* _LINUX_COMPAT_H */ +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -531,11 +531,6 @@ asmlinkage long sys_move_pages(pid_t pid + const int __user *nodes, + int __user *status, + int flags); +-asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, +- __u32 __user *pages, +- const int __user *nodes, +- int __user *status, +- int flags); + asmlinkage long sys_mbind(unsigned long start, unsigned long len, + unsigned long mode, + unsigned long __user *nmask, +@@ -584,13 +579,6 @@ asmlinkage long sys_readlinkat(int dfd, + int bufsiz); + asmlinkage long sys_utimensat(int dfd, char __user *filename, + struct timespec __user *utimes, int flags); +-asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, +- struct compat_timeval __user *t); +-asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename, +- struct compat_stat __user *statbuf, +- int flag); +-asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, +- int flags, int mode); + asmlinkage long sys_unshare(unsigned long unshare_flags); + + asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.562301652@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:59 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 22/85] [PATCH 02/44] [CVE-2009-0029] Convert all system calls to return a long +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0002--CVE-2009-0029-Convert-all-system-calls-to-return-a.patch +Content-Length: 14954 +Lines: 398 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 2ed7c03ec17779afb4fcfa3b8c61df61bd4879ba upstream. + +Convert all system calls to return a long. This should be a NOP since all +converted types should have the same size anyway. +With the exception of sys_exit_group which returned void. But that doesn't +matter since the system call doesn't return. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/read_write.c | 18 +++++----- + fs/xattr.c | 12 +++---- + include/linux/syscalls.h | 79 +++++++++++++++++++++++------------------------ + ipc/mqueue.c | 2 - + kernel/exit.c | 4 +- + kernel/signal.c | 2 - + kernel/timer.c | 2 - + mm/filemap.c | 2 - + mm/mmap.c | 2 - + mm/mremap.c | 2 - + mm/nommu.c | 2 - + 11 files changed, 64 insertions(+), 63 deletions(-) + +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -112,7 +112,7 @@ loff_t vfs_llseek(struct file *file, lof + } + EXPORT_SYMBOL(vfs_llseek); + +-asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin) ++asmlinkage long sys_lseek(unsigned int fd, off_t offset, unsigned int origin) + { + off_t retval; + struct file * file; +@@ -334,7 +334,7 @@ static inline void file_pos_write(struct + file->f_pos = pos; + } + +-asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count) ++asmlinkage long sys_read(unsigned int fd, char __user * buf, size_t count) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -351,7 +351,7 @@ asmlinkage ssize_t sys_read(unsigned int + return ret; + } + +-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; +@@ -368,7 +368,7 @@ asmlinkage ssize_t sys_write(unsigned in + return ret; + } + +-asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf, ++asmlinkage long sys_pread64(unsigned int fd, char __user *buf, + size_t count, loff_t pos) + { + struct file *file; +@@ -389,7 +389,7 @@ asmlinkage ssize_t sys_pread64(unsigned + return ret; + } + +-asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf, ++asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf, + size_t count, loff_t pos) + { + struct file *file; +@@ -637,7 +637,7 @@ ssize_t vfs_writev(struct file *file, co + + EXPORT_SYMBOL(vfs_writev); + +-asmlinkage ssize_t ++asmlinkage long + sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) + { + struct file *file; +@@ -658,7 +658,7 @@ sys_readv(unsigned long fd, const struct + return ret; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) + { + struct file *file; +@@ -777,7 +777,7 @@ out: + return retval; + } + +-asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count) ++asmlinkage long sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count) + { + loff_t pos; + off_t off; +@@ -796,7 +796,7 @@ asmlinkage ssize_t sys_sendfile(int out_ + return do_sendfile(out_fd, in_fd, NULL, count, 0); + } + +-asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count) ++asmlinkage long sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count) + { + loff_t pos; + ssize_t ret; +--- a/fs/xattr.c ++++ b/fs/xattr.c +@@ -349,7 +349,7 @@ getxattr(struct dentry *d, const char __ + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_getxattr(const char __user *pathname, const char __user *name, + void __user *value, size_t size) + { +@@ -364,7 +364,7 @@ sys_getxattr(const char __user *pathname + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_lgetxattr(const char __user *pathname, const char __user *name, void __user *value, + size_t size) + { +@@ -379,7 +379,7 @@ sys_lgetxattr(const char __user *pathnam + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size) + { + struct file *f; +@@ -424,7 +424,7 @@ listxattr(struct dentry *d, char __user + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_listxattr(const char __user *pathname, char __user *list, size_t size) + { + struct path path; +@@ -438,7 +438,7 @@ sys_listxattr(const char __user *pathnam + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_llistxattr(const char __user *pathname, char __user *list, size_t size) + { + struct path path; +@@ -452,7 +452,7 @@ sys_llistxattr(const char __user *pathna + return error; + } + +-asmlinkage ssize_t ++asmlinkage long + sys_flistxattr(int fd, char __user *list, size_t size) + { + struct file *f; +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -77,7 +77,7 @@ asmlinkage long sys_times(struct tms __u + + asmlinkage long sys_gettid(void); + asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp); +-asmlinkage unsigned long sys_alarm(unsigned int seconds); ++asmlinkage long sys_alarm(unsigned int seconds); + 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 + unsigned long flags); + + asmlinkage long sys_exit(int error_code); +-asmlinkage void sys_exit_group(int error_code); ++asmlinkage long sys_exit_group(int error_code); + 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 + asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo); + asmlinkage long sys_sgetmask(void); + asmlinkage long sys_ssetmask(int newmask); +-asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler); ++asmlinkage long sys_signal(int sig, __sighandler_t handler); + 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, +- void __user *value, size_t size); +-asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name, +- void __user *value, size_t size); +-asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name, +- void __user *value, size_t size); +-asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list, +- size_t size); +-asmlinkage ssize_t sys_llistxattr(const 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, ++ void __user *value, size_t size); ++asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name, ++ void __user *value, size_t size); ++asmlinkage long sys_fgetxattr(int fd, const char __user *name, ++ void __user *value, size_t size); ++asmlinkage long sys_listxattr(const char __user *path, char __user *list, ++ size_t size); ++asmlinkage long sys_llistxattr(const 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 unsigned long sys_brk(unsigned long brk); ++asmlinkage long sys_brk(unsigned long brk); + asmlinkage long sys_mprotect(unsigned long start, size_t len, + unsigned long prot); +-asmlinkage unsigned long sys_mremap(unsigned long addr, +- unsigned long old_len, unsigned long new_len, +- unsigned long flags, unsigned long new_addr); ++asmlinkage long sys_mremap(unsigned long addr, ++ unsigned long old_len, unsigned long new_len, ++ unsigned long flags, unsigned long new_addr); + asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, + unsigned long prot, unsigned long pgoff, + unsigned long flags); +@@ -321,10 +321,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); +-asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, +- off_t __user *offset, size_t count); +-asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, +- loff_t __user *offset, size_t count); ++asmlinkage long sys_sendfile(int out_fd, int in_fd, ++ off_t __user *offset, size_t count); ++asmlinkage long sys_sendfile64(int out_fd, int in_fd, ++ loff_t __user *offset, size_t count); + asmlinkage long sys_readlink(const char __user *path, + char __user *buf, int bufsiz); + asmlinkage long sys_creat(const char __user *pathname, int mode); +@@ -368,26 +368,25 @@ asmlinkage long sys_utime(char __user *f + struct utimbuf __user *times); + asmlinkage long sys_utimes(char __user *filename, + struct timeval __user *utimes); +-asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, +- unsigned int origin); ++asmlinkage long sys_lseek(unsigned int fd, off_t offset, ++ unsigned int origin); + asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, + unsigned long offset_low, loff_t __user *result, + unsigned int origin); +-asmlinkage ssize_t sys_read(unsigned int fd, char __user *buf, +- size_t count); +-asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count); +-asmlinkage ssize_t sys_readv(unsigned long fd, +- const struct iovec __user *vec, +- unsigned long vlen); +-asmlinkage ssize_t sys_write(unsigned int fd, const char __user *buf, +- size_t count); +-asmlinkage ssize_t sys_writev(unsigned long fd, +- const struct iovec __user *vec, +- unsigned long vlen); +-asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf, +- size_t count, loff_t pos); +-asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf, +- size_t count, loff_t pos); ++asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count); ++asmlinkage long sys_readahead(int fd, loff_t offset, size_t count); ++asmlinkage long sys_readv(unsigned long fd, ++ const struct iovec __user *vec, ++ unsigned long vlen); ++asmlinkage long sys_write(unsigned int fd, const char __user *buf, ++ size_t count); ++asmlinkage long sys_writev(unsigned long fd, ++ const struct iovec __user *vec, ++ unsigned long vlen); ++asmlinkage long sys_pread64(unsigned int fd, char __user *buf, ++ size_t count, loff_t pos); ++asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf, ++ size_t count, loff_t pos); + 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); +@@ -477,7 +476,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); +-asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout); ++asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout); + 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); + +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -896,7 +896,7 @@ out: + return ret; + } + +-asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, ++asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, + size_t msg_len, unsigned int __user *u_msg_prio, + const struct timespec __user *u_abs_timeout) + { +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -1186,9 +1186,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. + */ +-asmlinkage void sys_exit_group(int error_code) ++asmlinkage long sys_exit_group(int error_code) + { + do_group_exit((error_code & 0xff) << 8); ++ /* NOTREACHED */ ++ return 0; + } + + static struct pid *task_pid_type(struct task_struct *task, enum pid_type type) +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -2534,7 +2534,7 @@ sys_ssetmask(int newmask) + /* + * For backwards compatibility. Functionality superseded by sigaction. + */ +-asmlinkage unsigned long ++asmlinkage long + sys_signal(int sig, __sighandler_t handler) + { + struct k_sigaction new_sa, old_sa; +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1074,7 +1074,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. + */ +-asmlinkage unsigned long sys_alarm(unsigned int seconds) ++asmlinkage long sys_alarm(unsigned int seconds) + { + return alarm_setitimer(seconds); + } +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -1353,7 +1353,7 @@ do_readahead(struct address_space *mappi + return 0; + } + +-asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count) ++asmlinkage long sys_readahead(int fd, loff_t offset, size_t count) + { + ssize_t ret; + struct file *file; +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -244,7 +244,7 @@ static struct vm_area_struct *remove_vma + return next; + } + +-asmlinkage unsigned long sys_brk(unsigned long brk) ++asmlinkage long sys_brk(unsigned long brk) + { + unsigned long rlim, retval; + unsigned long newbrk, oldbrk; +--- a/mm/mremap.c ++++ b/mm/mremap.c +@@ -418,7 +418,7 @@ out_nc: + return ret; + } + +-asmlinkage unsigned long sys_mremap(unsigned long addr, ++asmlinkage long sys_mremap(unsigned long addr, + unsigned long old_len, unsigned long new_len, + unsigned long flags, unsigned long new_addr) + { +--- a/mm/nommu.c ++++ b/mm/nommu.c +@@ -355,7 +355,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. + */ +-asmlinkage unsigned long sys_brk(unsigned long brk) ++asmlinkage long sys_brk(unsigned long brk) + { + struct mm_struct *mm = current->mm; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.700993301@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:00 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 23/85] [PATCH 03/44] [CVE-2009-0029] Rename old_readdir to sys_old_readdir +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0003--CVE-2009-0029-Rename-old_readdir-to-sys_old_readdi.patch +Content-Length: 6559 +Lines: 199 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit e55380edf68796d75bf41391a781c68ee678587d upstream. + +This way it matches the generic system call name convention. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/kernel/calls.S | 2 +- + arch/cris/arch-v10/kernel/entry.S | 2 +- + arch/cris/arch-v32/kernel/entry.S | 2 +- + arch/h8300/kernel/syscalls.S | 2 +- + arch/m68k/kernel/entry.S | 2 +- + arch/m68knommu/kernel/syscalltable.S | 2 +- + arch/mips/kernel/scall32-o32.S | 2 +- + arch/mn10300/kernel/entry.S | 2 +- + arch/powerpc/include/asm/systbl.h | 2 +- + arch/sh/kernel/syscalls_32.S | 2 +- + arch/sh/kernel/syscalls_64.S | 2 +- + arch/sparc/kernel/systbls.S | 2 +- + arch/x86/kernel/syscall_table_32.S | 2 +- + fs/readdir.c | 2 +- + include/linux/syscalls.h | 2 ++ + 15 files changed, 16 insertions(+), 14 deletions(-) + +--- a/arch/arm/kernel/calls.S ++++ b/arch/arm/kernel/calls.S +@@ -98,7 +98,7 @@ + CALL(sys_uselib) + CALL(sys_swapon) + CALL(sys_reboot) +- CALL(OBSOLETE(old_readdir)) /* used by libc4 */ ++ CALL(OBSOLETE(sys_old_readdir)) /* used by libc4 */ + /* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */ + CALL(sys_munmap) + CALL(sys_truncate) +--- a/arch/cris/arch-v10/kernel/entry.S ++++ b/arch/cris/arch-v10/kernel/entry.S +@@ -691,7 +691,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 +--- a/arch/cris/arch-v32/kernel/entry.S ++++ b/arch/cris/arch-v32/kernel/entry.S +@@ -614,7 +614,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 +--- a/arch/h8300/kernel/syscalls.S ++++ b/arch/h8300/kernel/syscalls.S +@@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table) + .long SYMBOL_NAME(sys_uselib) + .long SYMBOL_NAME(sys_swapon) + .long SYMBOL_NAME(sys_reboot) +- .long SYMBOL_NAME(old_readdir) ++ .long SYMBOL_NAME(sys_old_readdir) + .long SYMBOL_NAME(old_mmap) /* 90 */ + .long SYMBOL_NAME(sys_munmap) + .long SYMBOL_NAME(sys_truncate) +--- a/arch/m68k/kernel/entry.S ++++ b/arch/m68k/kernel/entry.S +@@ -513,7 +513,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 +--- a/arch/m68knommu/kernel/syscalltable.S ++++ b/arch/m68knommu/kernel/syscalltable.S +@@ -107,7 +107,7 @@ ENTRY(sys_call_table) + .long sys_uselib + .long sys_ni_syscall /* sys_swapon */ + .long sys_reboot +- .long old_readdir ++ .long sys_old_readdir + .long old_mmap /* 90 */ + .long sys_munmap + .long sys_truncate +--- a/arch/mips/kernel/scall32-o32.S ++++ b/arch/mips/kernel/scall32-o32.S +@@ -401,7 +401,7 @@ einval: li v0, -EINVAL + sys sys_uselib 1 + sys sys_swapon 2 + sys sys_reboot 3 +- sys old_readdir 3 ++ sys sys_old_readdir 3 + sys old_mmap 6 /* 4090 */ + sys sys_munmap 2 + sys sys_truncate 2 +--- a/arch/mn10300/kernel/entry.S ++++ b/arch/mn10300/kernel/entry.S +@@ -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 +--- a/arch/powerpc/include/asm/systbl.h ++++ b/arch/powerpc/include/asm/systbl.h +@@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink) + SYSCALL(uselib) + SYSCALL(swapon) + SYSCALL(reboot) +-SYSX(sys_ni_syscall,compat_sys_old_readdir,old_readdir) ++SYSX(sys_ni_syscall,compat_sys_old_readdir,sys_old_readdir) + SYSCALL_SPU(mmap) + SYSCALL_SPU(munmap) + SYSCALL_SPU(truncate) +--- a/arch/sh/kernel/syscalls_32.S ++++ b/arch/sh/kernel/syscalls_32.S +@@ -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 +--- a/arch/sh/kernel/syscalls_64.S ++++ b/arch/sh/kernel/syscalls_64.S +@@ -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 +--- a/arch/sparc/kernel/systbls.S ++++ b/arch/sparc/kernel/systbls.S +@@ -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 + /*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask +-/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, old_readdir ++/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir + /*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 +--- a/arch/x86/kernel/syscall_table_32.S ++++ b/arch/x86/kernel/syscall_table_32.S +@@ -88,7 +88,7 @@ ENTRY(sys_call_table) + .long sys_uselib + .long sys_swapon + .long sys_reboot +- .long old_readdir ++ .long sys_old_readdir + .long old_mmap /* 90 */ + .long sys_munmap + .long sys_truncate +--- a/fs/readdir.c ++++ b/fs/readdir.c +@@ -102,7 +102,7 @@ efault: + return -EFAULT; + } + +-asmlinkage long old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count) ++asmlinkage long sys_old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count) + { + int error; + struct file * file; +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -54,6 +54,7 @@ struct compat_stat; + struct compat_timeval; + struct robust_list_head; + struct getcpu_cache; ++struct old_linux_dirent; + + #include + #include +@@ -609,6 +610,7 @@ asmlinkage long sys_timerfd_gettime(int + asmlinkage long sys_eventfd(unsigned int count); + asmlinkage long sys_eventfd2(unsigned int count, int flags); + 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); + + int kernel_execve(const char *filename, char *const argv[], char *const envp[]); + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:36 2009 +Message-Id: <20090115215436.829026682@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:01 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Richard Henderson , + "David S. Miller" , + Paul Mundt , + Tony Luck , + Heiko Carstens +Subject: [patch 24/85] [PATCH 04/44] [CVE-2009-0029] Remove __attribute__((weak)) from sys_pipe/sys_pipe2 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0004--CVE-2009-0029-Remove-__attribute__-weak-from-sy.patch +Content-Length: 7661 +Lines: 219 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 1134723e96f6e2abcf8bfd7a2d1c96fcc323ef35 upstream. + +Remove __attribute__((weak)) from common code sys_pipe implemantation. +IA64, ALPHA, SUPERH (32bit) and SPARC (32bit) have own implemantations +with the same name. Just rename them. +For sys_pipe2 there is no architecture specific implementation. + +Cc: Richard Henderson +Cc: David S. Miller +Cc: Paul Mundt +Cc: Tony Luck +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + arch/alpha/kernel/entry.S | 8 ++++---- + arch/alpha/kernel/systbls.S | 2 +- + arch/ia64/ia32/ia32_entry.S | 2 +- + arch/ia64/include/asm/unistd.h | 2 +- + arch/ia64/kernel/entry.S | 2 +- + arch/ia64/kernel/sys_ia64.c | 2 +- + arch/s390/kernel/entry.h | 1 - + arch/sh/kernel/sys_sh32.c | 2 +- + arch/sh/kernel/syscalls_32.S | 2 +- + arch/sparc/kernel/entry.S | 4 ++-- + arch/sparc/kernel/systbls.S | 2 +- + arch/sparc64/kernel/syscalls.S | 2 +- + arch/sparc64/kernel/systbls.S | 4 ++-- + fs/pipe.c | 4 ++-- + 14 files changed, 19 insertions(+), 20 deletions(-) + +--- a/arch/alpha/kernel/entry.S ++++ b/arch/alpha/kernel/entry.S +@@ -894,9 +894,9 @@ sys_getxpid: + .end sys_getxpid + + .align 4 +- .globl sys_pipe +- .ent sys_pipe +-sys_pipe: ++ .globl sys_alpha_pipe ++ .ent sys_alpha_pipe ++sys_alpha_pipe: + lda $sp, -16($sp) + stq $26, 0($sp) + .prologue 0 +@@ -914,7 +914,7 @@ sys_pipe: + stq $1, 80+16($sp) + 1: lda $sp, 16($sp) + ret +-.end sys_pipe ++.end sys_alpha_pipe + + .align 4 + .globl sys_execve +--- a/arch/alpha/kernel/systbls.S ++++ b/arch/alpha/kernel/systbls.S +@@ -52,7 +52,7 @@ sys_call_table: + .quad sys_setpgid + .quad alpha_ni_syscall /* 40 */ + .quad sys_dup +- .quad sys_pipe ++ .quad sys_alpha_pipe + .quad osf_set_program_attributes + .quad alpha_ni_syscall + .quad sys_open /* 45 */ +--- a/arch/ia64/ia32/ia32_entry.S ++++ b/arch/ia64/ia32/ia32_entry.S +@@ -215,7 +215,7 @@ ia32_syscall_table: + data8 sys_mkdir + data8 sys_rmdir /* 40 */ + data8 sys_dup +- data8 sys32_pipe ++ data8 sys_ia64_pipe + data8 compat_sys_times + data8 sys_ni_syscall /* old prof syscall holder */ + data8 sys32_brk /* 45 */ +--- a/arch/ia64/include/asm/unistd.h ++++ b/arch/ia64/include/asm/unistd.h +@@ -363,7 +363,7 @@ struct pt_regs; + struct sigaction; + long sys_execve(char __user *filename, char __user * __user *argv, + char __user * __user *envp, struct pt_regs *regs); +-asmlinkage long sys_pipe(void); ++asmlinkage long sys_ia64_pipe(void); + asmlinkage long sys_rt_sigaction(int sig, + const struct sigaction __user *act, + struct sigaction __user *oact, +--- a/arch/ia64/kernel/entry.S ++++ b/arch/ia64/kernel/entry.S +@@ -1436,7 +1436,7 @@ sys_call_table: + data8 sys_mkdir // 1055 + data8 sys_rmdir + data8 sys_dup +- data8 sys_pipe ++ data8 sys_ia64_pipe + data8 sys_times + data8 ia64_brk // 1060 + data8 sys_setgid +--- a/arch/ia64/kernel/sys_ia64.c ++++ b/arch/ia64/kernel/sys_ia64.c +@@ -154,7 +154,7 @@ out: + * and r9) as this is faster than doing a copy_to_user(). + */ + asmlinkage long +-sys_pipe (void) ++sys_ia64_pipe (void) + { + struct pt_regs *regs = task_pt_regs(current); + int fd[2]; +--- a/arch/s390/kernel/entry.h ++++ b/arch/s390/kernel/entry.h +@@ -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, +--- a/arch/sh/kernel/syscalls_32.S ++++ b/arch/sh/kernel/syscalls_32.S +@@ -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 */ +--- a/arch/sh/kernel/sys_sh32.c ++++ b/arch/sh/kernel/sys_sh32.c +@@ -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) + { +--- a/arch/sparc64/kernel/syscalls.S ++++ b/arch/sparc64/kernel/syscalls.S +@@ -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: +--- a/arch/sparc64/kernel/systbls.S ++++ b/arch/sparc64/kernel/systbls.S +@@ -26,7 +26,7 @@ sys_call_table32: + /*25*/ .word sys32_vmsplice, compat_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 ++/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid + .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16 + /*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl + .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve +@@ -100,7 +100,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 +-/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall ++/*40*/ .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall + .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 +--- a/arch/sparc/kernel/entry.S ++++ b/arch/sparc/kernel/entry.S +@@ -1142,8 +1142,8 @@ sunos_execv: + ld [%sp + STACKFRAME_SZ + PT_I0], %o0 + + .align 4 +- .globl sys_pipe +-sys_pipe: ++ .globl sys_sparc_pipe ++sys_sparc_pipe: + mov %o7, %l5 + add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg + call sparc_pipe +--- a/arch/sparc/kernel/systbls.S ++++ b/arch/sparc/kernel/systbls.S +@@ -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 + /*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile +-/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid ++/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid + /*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 +--- a/fs/pipe.c ++++ b/fs/pipe.c +@@ -1051,7 +1051,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. + */ +-asmlinkage long __weak sys_pipe2(int __user *fildes, int flags) ++asmlinkage long sys_pipe2(int __user *fildes, int flags) + { + int fd[2]; + int error; +@@ -1067,7 +1067,7 @@ asmlinkage long __weak sys_pipe2(int __u + return error; + } + +-asmlinkage long __weak sys_pipe(int __user *fildes) ++asmlinkage long sys_pipe(int __user *fildes) + { + return sys_pipe2(fildes, 0); + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215436.955852787@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:02 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 25/85] [PATCH 05/44] [CVE-2009-0029] Make sys_pselect7 static +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0005--CVE-2009-0029-Make-sys_pselect7-static.patch +Content-Length: 2108 +Lines: 62 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit c9da9f2129d6a421c32e334a83770a9e67f7feac upstream. + +Not a single architecture has wired up sys_pselect7 plus it is the +only system call with seven parameters. Just make it static and +rename it to do_pselect which will do the work for sys_pselect6. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/compat.c | 6 +++--- + fs/select.c | 8 ++++---- + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/fs/compat.c ++++ b/fs/compat.c +@@ -1640,7 +1640,7 @@ sticky: + } + + #ifdef HAVE_SET_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) +@@ -1748,8 +1748,8 @@ asmlinkage long compat_sys_pselect6(int + (compat_size_t __user *)(sig+sizeof(up)))) + return -EFAULT; + } +- return compat_sys_pselect7(n, inp, outp, exp, tsp, compat_ptr(up), +- sigsetsize); ++ return do_compat_pselect(n, inp, outp, exp, tsp, compat_ptr(up), ++ sigsetsize); + } + + asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, +--- a/fs/select.c ++++ b/fs/select.c +@@ -427,9 +427,9 @@ sticky: + } + + #ifdef HAVE_SET_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) ++static long do_pselect(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) + { + s64 timeout = MAX_SCHEDULE_TIMEOUT; + sigset_t ksigmask, sigsaved; +@@ -527,7 +527,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 */ + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.084761489@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:03 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Kyle McMartin , + Heiko Carstens +Subject: [patch 26/85] [PATCH 06/44] [CVE-2009-0029] Make sys_syslog a conditional system call +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0006--CVE-2009-0029-Make-sys_syslog-a-conditional-system.patch +Content-Length: 1022 +Lines: 40 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit f627a741d24f12955fa2d9f8831c3b12860635bd upstream. + +Remove the -ENOSYS implementation for !CONFIG_PRINTK and use +the cond_syscall infrastructure instead. + +Acked-by: Kyle McMartin +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/printk.c | 5 ----- + kernel/sys_ni.c | 1 + + 2 files changed, 1 insertion(+), 5 deletions(-) + +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -782,11 +782,6 @@ EXPORT_SYMBOL(vprintk); + + #else + +-asmlinkage long sys_syslog(int type, char __user *buf, int len) +-{ +- return -ENOSYS; +-} +- + static void call_console_drivers(unsigned start, unsigned end) + { + } +--- a/kernel/sys_ni.c ++++ b/kernel/sys_ni.c +@@ -125,6 +125,7 @@ cond_syscall(sys_vm86old); + cond_syscall(sys_vm86); + cond_syscall(compat_sys_ipc); + cond_syscall(compat_sys_sysctl); ++cond_syscall(sys_syslog); + + /* arch-specific weak syscall entries */ + cond_syscall(sys_pciconfig_read); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.210047314@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:04 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Ralf Baechle , + Martin Schwidefsky , + Heiko Carstens +Subject: [patch 27/85] [PATCH 07/44] [CVE-2009-0029] System call wrapper infrastructure +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0007--CVE-2009-0029-System-call-wrapper-infrastructure.patch +Content-Length: 4413 +Lines: 106 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 1a94bc34768e463a93cb3751819709ab0ea80a01 upstream. + +From: Martin Schwidefsky + +By selecting HAVE_SYSCALL_WRAPPERS architectures can activate +system call wrappers in order to sign extend system call arguments. + +All architectures where the ABI defines that the caller of a function +has to perform sign extension probably need this. + +Reported-by: Christian Borntraeger +Acked-by: Ralf Baechle +Signed-off-by: Martin Schwidefsky +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + arch/Kconfig | 3 ++ + include/linux/syscalls.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 65 insertions(+) + +--- a/arch/Kconfig ++++ b/arch/Kconfig +@@ -46,6 +46,9 @@ config HAVE_EFFICIENT_UNALIGNED_ACCESS + See Documentation/unaligned-memory-access.txt for more + information on the topic of unaligned memory accesses. + ++config HAVE_SYSCALL_WRAPPERS ++ bool ++ + config KRETPROBES + def_bool y + depends on KPROBES && HAVE_KRETPROBES +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -66,6 +66,68 @@ struct old_linux_dirent; + #include + #include + ++#define __SC_DECL1(t1, a1) t1 a1 ++#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__) ++#define __SC_DECL3(t3, a3, ...) t3 a3, __SC_DECL2(__VA_ARGS__) ++#define __SC_DECL4(t4, a4, ...) t4 a4, __SC_DECL3(__VA_ARGS__) ++#define __SC_DECL5(t5, a5, ...) t5 a5, __SC_DECL4(__VA_ARGS__) ++#define __SC_DECL6(t6, a6, ...) t6 a6, __SC_DECL5(__VA_ARGS__) ++ ++#define __SC_LONG1(t1, a1) long a1 ++#define __SC_LONG2(t2, a2, ...) long a2, __SC_LONG1(__VA_ARGS__) ++#define __SC_LONG3(t3, a3, ...) long a3, __SC_LONG2(__VA_ARGS__) ++#define __SC_LONG4(t4, a4, ...) long a4, __SC_LONG3(__VA_ARGS__) ++#define __SC_LONG5(t5, a5, ...) long a5, __SC_LONG4(__VA_ARGS__) ++#define __SC_LONG6(t6, a6, ...) long a6, __SC_LONG5(__VA_ARGS__) ++ ++#define __SC_CAST1(t1, a1) (t1) a1 ++#define __SC_CAST2(t2, a2, ...) (t2) a2, __SC_CAST1(__VA_ARGS__) ++#define __SC_CAST3(t3, a3, ...) (t3) a3, __SC_CAST2(__VA_ARGS__) ++#define __SC_CAST4(t4, a4, ...) (t4) a4, __SC_CAST3(__VA_ARGS__) ++#define __SC_CAST5(t5, a5, ...) (t5) a5, __SC_CAST4(__VA_ARGS__) ++#define __SC_CAST6(t6, a6, ...) (t6) a6, __SC_CAST5(__VA_ARGS__) ++ ++#define __SC_TEST(type) BUILD_BUG_ON(sizeof(type) > sizeof(long)) ++#define __SC_TEST1(t1, a1) __SC_TEST(t1) ++#define __SC_TEST2(t2, a2, ...) __SC_TEST(t2); __SC_TEST1(__VA_ARGS__) ++#define __SC_TEST3(t3, a3, ...) __SC_TEST(t3); __SC_TEST2(__VA_ARGS__) ++#define __SC_TEST4(t4, a4, ...) __SC_TEST(t4); __SC_TEST3(__VA_ARGS__) ++#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__) ++#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) ++ ++#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void) ++#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__) ++#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__) ++#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__) ++#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__) ++#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__) ++#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__) ++ ++#define SYSCALL_ALIAS(alias, name) \ ++ asm ("\t.globl " #alias "\n\t.set " #alias ", " #name) ++ ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++ ++#define SYSCALL_DEFINE(name) static inline long SYSC_##name ++#define SYSCALL_DEFINEx(x, name, ...) \ ++ asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \ ++ static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \ ++ asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \ ++ { \ ++ __SC_TEST##x(__VA_ARGS__); \ ++ return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \ ++ } \ ++ SYSCALL_ALIAS(sys_##name, SyS_##name); \ ++ static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)) ++ ++#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */ ++ ++#define SYSCALL_DEFINE(name) asmlinkage long sys_##name ++#define SYSCALL_DEFINEx(x, name, ...) \ ++ asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)) ++ ++#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */ ++ + asmlinkage long sys_time(time_t __user *tloc); + asmlinkage long sys_stime(time_t __user *tptr); + asmlinkage long sys_gettimeofday(struct timeval __user *tv, + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.365588591@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:05 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Benjamin Herrenschmidt , + Heiko Carstens +Subject: [patch 28/85] [PATCH 08/44] [CVE-2009-0029] powerpc: Enable syscall wrappers for 64-bit +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0008--CVE-2009-0029-powerpc-Enable-syscall-wrappers-for.patch +Content-Length: 1328 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Benjamin Herrenschmidt + +commit ee6a093222549ac0c72cfd296c69fa5e7d6daa34 upstream. + +This enables the use of syscall wrappers to do proper sign extension +for 64-bit programs. + +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + arch/powerpc/Kconfig | 1 + + include/linux/syscalls.h | 6 ++++++ + 2 files changed, 7 insertions(+) + +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -122,6 +122,7 @@ config PPC + select HAVE_DMA_ATTRS if PPC64 + select USE_GENERIC_SMP_HELPERS if SMP + select HAVE_OPROFILE ++ select HAVE_SYSCALL_WRAPPERS if PPC64 + + config EARLY_PRINTK + bool +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -103,8 +103,14 @@ struct old_linux_dirent; + #define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__) + #define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__) + ++#ifdef CONFIG_PPC64 ++#define SYSCALL_ALIAS(alias, name) \ ++ asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \ ++ "\t.globl ." #alias "\n\t.set ." #alias ", ." #name) ++#else + #define SYSCALL_ALIAS(alias, name) \ + asm ("\t.globl " #alias "\n\t.set " #alias ", " #name) ++#endif + + #ifdef CONFIG_HAVE_SYSCALL_WRAPPERS + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.490658677@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:06 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 29/85] [PATCH 09/44] [CVE-2009-0029] s390: enable system call wrappers +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0009--CVE-2009-0029-s390-enable-system-call-wrappers.patch +Content-Length: 517 +Lines: 21 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit ed6bb6194350dc6ae97a65dbf2d621a3dbe6bbe9 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + 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" + + config S390 + def_bool y ++ select HAVE_SYSCALL_WRAPPERS + select HAVE_OPROFILE + select HAVE_KPROBES + select HAVE_KRETPROBES + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.613506274@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:07 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 30/85] [PATCH 10/44] [CVE-2009-0029] System call wrapper special cases +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0010--CVE-2009-0029-System-call-wrapper-special-cases.patch +Content-Length: 8870 +Lines: 291 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 6673e0c3fbeaed2cd08e2fd4a4aa97382d6fedb0 upstream. + +System calls with an unsigned long long argument can't be converted with +the standard wrappers since that would include a cast to long, which in +turn means that we would lose the upper 32 bit on 32 bit architectures. +Also semctl can't use the standard wrapper since it has a 'union' +parameter. + +So we handle them as special case and add some extra wrappers instead. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/dcookies.c | 10 ++++++++-- + fs/open.c | 27 ++++++++++++++++++++++++--- + fs/read_write.c | 24 ++++++++++++++++++++---- + fs/sync.c | 26 ++++++++++++++++++++++---- + ipc/sem.c | 9 ++++++++- + mm/fadvise.c | 18 ++++++++++++++++-- + mm/filemap.c | 9 ++++++++- + 7 files changed, 106 insertions(+), 17 deletions(-) + +--- a/fs/dcookies.c ++++ b/fs/dcookies.c +@@ -140,7 +140,7 @@ out: + /* And here is where the userspace process can look up the cookie value + * to retrieve the path. + */ +-asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len) ++SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len) + { + unsigned long cookie = (unsigned long)cookie64; + int err = -EINVAL; +@@ -193,7 +193,13 @@ out: + mutex_unlock(&dcookie_mutex); + return err; + } +- ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len) ++{ ++ return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len); ++} ++SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie); ++#endif + + static int dcookie_init(void) + { +--- a/fs/open.c ++++ b/fs/open.c +@@ -346,21 +346,35 @@ asmlinkage long sys_ftruncate(unsigned i + + /* LFS versions of truncate are only needed on 32 bit machines */ + #if BITS_PER_LONG == 32 +-asmlinkage long sys_truncate64(const char __user * path, loff_t length) ++SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length) + { + return do_sys_truncate(path, length); + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_truncate64(long path, loff_t length) ++{ ++ return SYSC_truncate64((const char __user *) path, length); ++} ++SYSCALL_ALIAS(sys_truncate64, SyS_truncate64); ++#endif + +-asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) ++SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length) + { + long ret = do_sys_ftruncate(fd, length, 0); + /* avoid REGPARM breakage on x86: */ + asmlinkage_protect(2, ret, fd, length); + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_ftruncate64(long fd, loff_t length) ++{ ++ return SYSC_ftruncate64((unsigned int) fd, length); ++} ++SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64); + #endif ++#endif /* BITS_PER_LONG == 32 */ + +-asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) ++SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len) + { + struct file *file; + struct inode *inode; +@@ -417,6 +431,13 @@ out_fput: + out: + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len) ++{ ++ return SYSC_fallocate((int)fd, (int)mode, offset, len); ++} ++SYSCALL_ALIAS(sys_fallocate, SyS_fallocate); ++#endif + + /* + * access() needs to use the real uid/gid, not the effective uid/gid. +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -368,8 +368,8 @@ asmlinkage long sys_write(unsigned int f + return ret; + } + +-asmlinkage long sys_pread64(unsigned int fd, char __user *buf, +- size_t count, loff_t pos) ++SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf, ++ size_t count, loff_t pos) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -388,9 +388,17 @@ asmlinkage long sys_pread64(unsigned int + + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_pread64(long fd, long buf, long count, loff_t pos) ++{ ++ return SYSC_pread64((unsigned int) fd, (char __user *) buf, ++ (size_t) count, pos); ++} ++SYSCALL_ALIAS(sys_pread64, SyS_pread64); ++#endif + +-asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf, +- size_t count, loff_t pos) ++SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf, ++ size_t count, loff_t pos) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -409,6 +417,14 @@ asmlinkage long sys_pwrite64(unsigned in + + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_pwrite64(long fd, long buf, long count, loff_t pos) ++{ ++ return SYSC_pwrite64((unsigned int) fd, (const char __user *) buf, ++ (size_t) count, pos); ++} ++SYSCALL_ALIAS(sys_pwrite64, SyS_pwrite64); ++#endif + + /* + * Reduce an iovec's length in-place. Return the resulting number of segments +--- a/fs/sync.c ++++ b/fs/sync.c +@@ -175,8 +175,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. + */ +-asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, +- unsigned int flags) ++SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes, ++ unsigned int flags) + { + int ret; + struct file *file; +@@ -236,14 +236,32 @@ out_put: + out: + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes, ++ long flags) ++{ ++ return SYSC_sync_file_range((int) fd, offset, nbytes, ++ (unsigned int) flags); ++} ++SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range); ++#endif + + /* It would be nice if people remember that not all the world's an i386 + when they introduce new system calls */ +-asmlinkage long sys_sync_file_range2(int fd, unsigned int flags, +- loff_t offset, loff_t nbytes) ++SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags, ++ loff_t offset, loff_t nbytes) + { + return sys_sync_file_range(fd, offset, nbytes, flags); + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_sync_file_range2(long fd, long flags, ++ loff_t offset, loff_t nbytes) ++{ ++ return SYSC_sync_file_range2((int) fd, (unsigned int) flags, ++ offset, nbytes); ++} ++SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2); ++#endif + + /* + * `endbyte' is inclusive +--- a/ipc/sem.c ++++ b/ipc/sem.c +@@ -887,7 +887,7 @@ out_up: + return err; + } + +-asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg) ++SYSCALL_DEFINE(semctl)(int semid, int semnum, int cmd, union semun arg) + { + int err = -EINVAL; + int version; +@@ -923,6 +923,13 @@ asmlinkage long sys_semctl (int semid, i + return -EINVAL; + } + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_semctl(int semid, int semnum, int cmd, union semun arg) ++{ ++ return SYSC_semctl((int) semid, (int) semnum, (int) cmd, arg); ++} ++SYSCALL_ALIAS(sys_semctl, SyS_semctl); ++#endif + + /* If the task doesn't already have a undo_list, then allocate one + * here. We guarantee there is only one thread using this undo list, +--- a/mm/fadvise.c ++++ b/mm/fadvise.c +@@ -24,7 +24,7 @@ + * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could + * deactivate the pages and clear PG_Referenced. + */ +-asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) ++SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice) + { + struct file *file = fget(fd); + struct address_space *mapping; +@@ -126,12 +126,26 @@ out: + fput(file); + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_fadvise64_64(long fd, loff_t offset, loff_t len, long advice) ++{ ++ return SYSC_fadvise64_64((int) fd, offset, len, (int) advice); ++} ++SYSCALL_ALIAS(sys_fadvise64_64, SyS_fadvise64_64); ++#endif + + #ifdef __ARCH_WANT_SYS_FADVISE64 + +-asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) ++SYSCALL_DEFINE(fadvise64)(int fd, loff_t offset, size_t len, int advice) + { + return sys_fadvise64_64(fd, offset, len, advice); + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_fadvise64(long fd, loff_t offset, long len, long advice) ++{ ++ return SYSC_fadvise64((int) fd, offset, (size_t)len, (int)advice); ++} ++SYSCALL_ALIAS(sys_fadvise64, SyS_fadvise64); ++#endif + + #endif +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -1353,7 +1353,7 @@ do_readahead(struct address_space *mappi + return 0; + } + +-asmlinkage long sys_readahead(int fd, loff_t offset, size_t count) ++SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count) + { + ssize_t ret; + struct file *file; +@@ -1372,6 +1372,13 @@ asmlinkage long sys_readahead(int fd, lo + } + return ret; + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_readahead(long fd, loff_t offset, long count) ++{ ++ return SYSC_readahead((int) fd, offset, (size_t) count); ++} ++SYSCALL_ALIAS(sys_readahead, SyS_readahead); ++#endif + + #ifdef CONFIG_MMU + /** + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.753528190@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:08 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 31/85] [PATCH 11/44] [CVE-2009-0029] System call wrappers part 01 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0011--CVE-2009-0029-System-call-wrappers-part-01.patch +Content-Length: 3365 +Lines: 118 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 58fd3aa288939d3097fa04505b25c2f5e6e144d1 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/hrtimer.c | 4 ++-- + kernel/sys.c | 2 +- + kernel/time.c | 14 +++++++------- + kernel/timer.c | 6 +++--- + 4 files changed, 13 insertions(+), 13 deletions(-) + +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1560,8 +1560,8 @@ out: + return ret; + } + +-asmlinkage long +-sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp) ++SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, ++ struct timespec __user *, rmtp) + { + struct timespec tu; + +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -853,7 +853,7 @@ asmlinkage long sys_setfsgid(gid_t gid) + return old_fsgid; + } + +-asmlinkage long sys_times(struct tms __user * tbuf) ++SYSCALL_DEFINE1(times, struct tms __user *, tbuf) + { + /* + * In the SMP world we might just be unlucky and have one of +--- a/kernel/time.c ++++ b/kernel/time.c +@@ -59,7 +59,7 @@ EXPORT_SYMBOL(sys_tz); + * why not move it into the appropriate arch directory (for those + * architectures that need it). + */ +-asmlinkage long sys_time(time_t __user * tloc) ++SYSCALL_DEFINE1(time, time_t __user *, tloc) + { + time_t i = get_seconds(); + +@@ -77,7 +77,7 @@ asmlinkage long sys_time(time_t __user * + * architectures that need it). + */ + +-asmlinkage long sys_stime(time_t __user *tptr) ++SYSCALL_DEFINE1(stime, time_t __user *, tptr) + { + struct timespec tv; + int err; +@@ -97,8 +97,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) ++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 + return 0; + } + +-asmlinkage long sys_settimeofday(struct timeval __user *tv, +- struct timezone __user *tz) ++SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv, ++ struct timezone __user *, tz) + { + struct timeval user_tv; + struct timespec new_ts; +@@ -203,7 +203,7 @@ asmlinkage long sys_settimeofday(struct + return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL); + } + +-asmlinkage long sys_adjtimex(struct timex __user *txc_p) ++SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p) + { + struct timex txc; /* Local copy of parameter */ + int ret; +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1074,7 +1074,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. + */ +-asmlinkage long sys_alarm(unsigned int seconds) ++SYSCALL_DEFINE1(alarm, unsigned int, seconds) + { + return alarm_setitimer(seconds); + } +@@ -1097,7 +1097,7 @@ asmlinkage long sys_alarm(unsigned int s + * + * This is SMP safe as current->tgid does not change. + */ +-asmlinkage long sys_getpid(void) ++SYSCALL_DEFINE0(getpid) + { + return task_tgid_vnr(current); + } +@@ -1253,7 +1253,7 @@ signed long __sched schedule_timeout_uni + EXPORT_SYMBOL(schedule_timeout_uninterruptible); + + /* Thread ID - the internal kernel "pid" */ +-asmlinkage long sys_gettid(void) ++SYSCALL_DEFINE0(gettid) + { + return task_pid_vnr(current); + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:37 2009 +Message-Id: <20090115215437.879049381@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:09 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 32/85] [PATCH 12/44] [CVE-2009-0029] System call wrappers part 02 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0012--CVE-2009-0029-System-call-wrappers-part-02.patch +Content-Length: 2354 +Lines: 99 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit dbf040d9d1cbf1ef6250bdb095c5c118950bcde8 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/sys.c | 10 +++++----- + kernel/timer.c | 10 +++++----- + 2 files changed, 10 insertions(+), 10 deletions(-) + +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -733,7 +733,7 @@ asmlinkage long sys_setresuid(uid_t ruid + return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RES); + } + +-asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __user *suid) ++SYSCALL_DEFINE3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid) + { + int retval; + +@@ -784,7 +784,7 @@ asmlinkage long sys_setresgid(gid_t rgid + return 0; + } + +-asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid) ++SYSCALL_DEFINE3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid) + { + int retval; + +@@ -974,7 +974,7 @@ out: + return err; + } + +-asmlinkage long sys_getpgid(pid_t pid) ++SYSCALL_DEFINE1(getpgid, pid_t, pid) + { + struct task_struct *p; + struct pid *grp; +@@ -1004,14 +1004,14 @@ out: + + #ifdef __ARCH_WANT_SYS_GETPGRP + +-asmlinkage long sys_getpgrp(void) ++SYSCALL_DEFINE0(getpgrp) + { + return sys_getpgid(0); + } + + #endif + +-asmlinkage long sys_getsid(pid_t pid) ++SYSCALL_DEFINE1(getsid, pid_t, pid) + { + struct task_struct *p; + struct pid *sid; +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1108,7 +1108,7 @@ SYSCALL_DEFINE0(getpid) + * value of ->real_parent under rcu_read_lock(), see + * release_task()->call_rcu(delayed_put_task_struct). + */ +-asmlinkage long sys_getppid(void) ++SYSCALL_DEFINE0(getppid) + { + int pid; + +@@ -1119,25 +1119,25 @@ asmlinkage long sys_getppid(void) + return pid; + } + +-asmlinkage long sys_getuid(void) ++SYSCALL_DEFINE0(getuid) + { + /* Only we change this so SMP safe */ + return current->uid; + } + +-asmlinkage long sys_geteuid(void) ++SYSCALL_DEFINE0(geteuid) + { + /* Only we change this so SMP safe */ + return current->euid; + } + +-asmlinkage long sys_getgid(void) ++SYSCALL_DEFINE0(getgid) + { + /* Only we change this so SMP safe */ + return current->gid; + } + +-asmlinkage long sys_getegid(void) ++SYSCALL_DEFINE0(getegid) + { + /* Only we change this so SMP safe */ + return current->egid; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.006265759@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:10 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 33/85] [PATCH 13/44] [CVE-2009-0029] System call wrappers part 03 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0013--CVE-2009-0029-System-call-wrappers-part-03.patch +Content-Length: 3082 +Lines: 94 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit ae1251ab785f6da87219df8352ffdac68bba23e4 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/sys.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -470,7 +470,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). + */ +-asmlinkage long sys_setregid(gid_t rgid, gid_t egid) ++SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) + { + int old_rgid = current->gid; + int old_egid = current->egid; +@@ -519,7 +519,7 @@ asmlinkage long sys_setregid(gid_t rgid, + * + * SMP: Same implicit races as above. + */ +-asmlinkage long sys_setgid(gid_t gid) ++SYSCALL_DEFINE1(setgid, gid_t, gid) + { + int old_egid = current->egid; + int retval; +@@ -589,7 +589,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. + */ +-asmlinkage long sys_setreuid(uid_t ruid, uid_t euid) ++SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) + { + int old_ruid, old_euid, old_suid, new_ruid, new_euid; + int retval; +@@ -651,7 +651,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. + */ +-asmlinkage long sys_setuid(uid_t uid) ++SYSCALL_DEFINE1(setuid, uid_t, uid) + { + int old_euid = current->euid; + int old_ruid, old_suid, new_suid; +@@ -690,7 +690,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(). + */ +-asmlinkage long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid) ++SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) + { + int old_ruid = current->uid; + int old_euid = current->euid; +@@ -747,7 +747,7 @@ SYSCALL_DEFINE3(getresuid, uid_t __user + /* + * Same as above, but for rgid, egid, sgid. + */ +-asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid) ++SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) + { + int retval; + +@@ -802,7 +802,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.. + */ +-asmlinkage long sys_setfsuid(uid_t uid) ++SYSCALL_DEFINE1(setfsuid, uid_t, uid) + { + int old_fsuid; + +@@ -831,7 +831,7 @@ asmlinkage long sys_setfsuid(uid_t uid) + /* + * Samma pÃ¥ svenska.. + */ +-asmlinkage long sys_setfsgid(gid_t gid) ++SYSCALL_DEFINE1(setfsgid, gid_t, gid) + { + int old_fsgid; + +@@ -1245,7 +1245,7 @@ int set_current_groups(struct group_info + + EXPORT_SYMBOL(set_current_groups); + +-asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist) ++SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist) + { + int i = 0; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.149535365@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:11 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 34/85] [PATCH 14/44] [CVE-2009-0029] System call wrappers part 04 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0014--CVE-2009-0029-System-call-wrappers-part-04.patch +Content-Length: 3654 +Lines: 122 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit b290ebe2c46d01b742b948ce03f09e8a3efb9a92 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/acct.c | 2 +- + kernel/capability.c | 4 ++-- + kernel/exec_domain.c | 3 +-- + kernel/itimer.c | 2 +- + kernel/signal.c | 7 +++---- + kernel/sys.c | 6 +++--- + 6 files changed, 11 insertions(+), 13 deletions(-) + +--- a/kernel/acct.c ++++ b/kernel/acct.c +@@ -277,7 +277,7 @@ static int acct_on(char *name) + * should be written. If the filename is NULL, accounting will be + * shutdown. + */ +-asmlinkage long sys_acct(const char __user *name) ++SYSCALL_DEFINE1(acct, const char __user *, name) + { + int error; + +--- a/kernel/capability.c ++++ b/kernel/capability.c +@@ -348,7 +348,7 @@ EXPORT_SYMBOL(cap_set_effective); + * + * Returns 0 on success and < 0 on error. + */ +-asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr) ++SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr) + { + int ret = 0; + pid_t pid; +@@ -425,7 +425,7 @@ asmlinkage long sys_capget(cap_user_head + * + * 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; +--- a/kernel/exec_domain.c ++++ b/kernel/exec_domain.c +@@ -188,8 +188,7 @@ get_exec_domain_list(char *page) + return (len); + } + +-asmlinkage long +-sys_personality(u_long personality) ++SYSCALL_DEFINE1(personality, u_long, personality) + { + u_long old = current->personality; + +--- a/kernel/itimer.c ++++ b/kernel/itimer.c +@@ -109,7 +109,7 @@ int do_getitimer(int which, struct itime + return 0; + } + +-asmlinkage long sys_getitimer(int which, struct itimerval __user *value) ++SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value) + { + int error = -EFAULT; + struct itimerval get_buffer; +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -2409,8 +2409,7 @@ out: + + #ifdef __ARCH_WANT_SYS_SIGPENDING + +-asmlinkage long +-sys_sigpending(old_sigset_t __user *set) ++SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set) + { + return do_sigpending(set, sizeof(*set)); + } +@@ -2421,8 +2420,8 @@ sys_sigpending(old_sigset_t __user *set) + /* Some platforms have their own version with special arguments others + support only sys_rt_sigprocmask. */ + +-asmlinkage long +-sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset) ++SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set, ++ old_sigset_t __user *, oset) + { + int error; + old_sigset_t old_set, new_set; +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -903,7 +903,7 @@ SYSCALL_DEFINE1(times, struct tms __user + * Auch. Had to add the 'did_exec' flag to conform completely to POSIX. + * LBT 04.03.94 + */ +-asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) ++SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid) + { + struct task_struct *p; + struct task_struct *group_leader = current->group_leader; +@@ -1039,7 +1039,7 @@ out: + return retval; + } + +-asmlinkage long sys_setsid(void) ++SYSCALL_DEFINE0(setsid) + { + struct task_struct *group_leader = current->group_leader; + struct pid *sid = task_pid(group_leader); +@@ -1278,7 +1278,7 @@ out: + * without another task interfering. + */ + +-asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist) ++SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist) + { + struct group_info *group_info; + int retval; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.289089904@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:12 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 35/85] [PATCH 15/44] [CVE-2009-0029] System call wrappers part 05 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0015--CVE-2009-0029-System-call-wrappers-part-05.patch +Content-Length: 4228 +Lines: 134 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 362e9c07c7220c0a78c88826fc0d2bf7e4a4bb68 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/itimer.c | 5 ++--- + kernel/posix-timers.c | 43 +++++++++++++++++++------------------------ + 2 files changed, 21 insertions(+), 27 deletions(-) + +--- a/kernel/itimer.c ++++ b/kernel/itimer.c +@@ -273,9 +273,8 @@ unsigned int alarm_setitimer(unsigned in + return it_old.it_value.tv_sec; + } + +-asmlinkage long sys_setitimer(int which, +- struct itimerval __user *value, +- struct itimerval __user *ovalue) ++SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value, ++ struct itimerval __user *, ovalue) + { + struct itimerval set_buffer, get_buffer; + int error; +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c +@@ -463,10 +463,9 @@ static void release_posix_timer(struct k + + /* Create a POSIX.1b interval timer. */ + +-asmlinkage long +-sys_timer_create(const clockid_t which_clock, +- struct sigevent __user *timer_event_spec, +- timer_t __user * created_timer_id) ++SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock, ++ struct sigevent __user *, timer_event_spec, ++ timer_t __user *, created_timer_id) + { + int error = 0; + struct k_itimer *new_timer = NULL; +@@ -682,8 +681,8 @@ common_timer_get(struct k_itimer *timr, + } + + /* Get the time remaining on a POSIX.1b interval timer. */ +-asmlinkage long +-sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting) ++SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id, ++ struct itimerspec __user *, setting) + { + struct k_itimer *timr; + struct itimerspec cur_setting; +@@ -712,8 +711,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. + */ +-asmlinkage long +-sys_timer_getoverrun(timer_t timer_id) ++SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id) + { + struct k_itimer *timr; + int overrun; +@@ -783,10 +781,9 @@ common_timer_set(struct k_itimer *timr, + } + + /* Set a POSIX.1b interval timer */ +-asmlinkage long +-sys_timer_settime(timer_t timer_id, int flags, +- const struct itimerspec __user *new_setting, +- struct itimerspec __user *old_setting) ++SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, ++ const struct itimerspec __user *, new_setting, ++ struct itimerspec __user *, old_setting) + { + struct k_itimer *timr; + struct itimerspec new_spec, old_spec; +@@ -839,8 +836,7 @@ static inline int timer_delete_hook(stru + } + + /* Delete a POSIX.1b interval timer. */ +-asmlinkage long +-sys_timer_delete(timer_t timer_id) ++SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) + { + struct k_itimer *timer; + unsigned long flags; +@@ -930,8 +926,8 @@ int do_posix_clock_nonanosleep(const clo + } + EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep); + +-asmlinkage long sys_clock_settime(const clockid_t which_clock, +- const struct timespec __user *tp) ++SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, ++ const struct timespec __user *, tp) + { + struct timespec new_tp; + +@@ -943,8 +939,8 @@ asmlinkage long sys_clock_settime(const + return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp)); + } + +-asmlinkage long +-sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp) ++SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock, ++ struct timespec __user *,tp) + { + struct timespec kernel_tp; + int error; +@@ -960,8 +956,8 @@ sys_clock_gettime(const clockid_t which_ + + } + +-asmlinkage long +-sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp) ++SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock, ++ struct timespec __user *, tp) + { + struct timespec rtn_tp; + int error; +@@ -990,10 +986,9 @@ static int common_nsleep(const clockid_t + which_clock); + } + +-asmlinkage long +-sys_clock_nanosleep(const clockid_t which_clock, int flags, +- const struct timespec __user *rqtp, +- struct timespec __user *rmtp) ++SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags, ++ const struct timespec __user *, rqtp, ++ struct timespec __user *, rmtp) + { + struct timespec t; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.395533320@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:13 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 36/85] [PATCH 16/44] [CVE-2009-0029] System call wrappers part 06 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0016--CVE-2009-0029-System-call-wrappers-part-06.patch +Content-Length: 3918 +Lines: 109 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 5add95d4f7cf08f6f62510f19576992912387501 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/sched.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -4942,7 +4942,7 @@ int can_nice(const struct task_struct *p + * sys_setpriority is a more generic, but much slower function that + * does similar things. + */ +-asmlinkage long sys_nice(int increment) ++SYSCALL_DEFINE1(nice, int, increment) + { + long nice, retval; + +@@ -5233,8 +5233,8 @@ do_sched_setscheduler(pid_t pid, int pol + * @policy: new policy. + * @param: structure containing the new RT priority. + */ +-asmlinkage long +-sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param) ++SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy, ++ struct sched_param __user *, param) + { + /* negative values for policy are not valid */ + if (policy < 0) +@@ -5248,7 +5248,7 @@ sys_sched_setscheduler(pid_t pid, int po + * @pid: the pid in question. + * @param: structure containing the new RT priority. + */ +-asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param) ++SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param) + { + return do_sched_setscheduler(pid, -1, param); + } +@@ -5257,7 +5257,7 @@ asmlinkage long sys_sched_setparam(pid_t + * sys_sched_getscheduler - get the policy (scheduling class) of a thread + * @pid: the pid in question. + */ +-asmlinkage long sys_sched_getscheduler(pid_t pid) ++SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid) + { + struct task_struct *p; + int retval; +@@ -5282,7 +5282,7 @@ asmlinkage long sys_sched_getscheduler(p + * @pid: the pid in question. + * @param: structure containing the RT priority. + */ +-asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param) ++SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param) + { + struct sched_param lp; + struct task_struct *p; +@@ -5390,8 +5390,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 + */ +-asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, +- unsigned long __user *user_mask_ptr) ++SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len, ++ unsigned long __user *, user_mask_ptr) + { + cpumask_t new_mask; + int retval; +@@ -5435,8 +5435,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 + */ +-asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, +- unsigned long __user *user_mask_ptr) ++SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len, ++ unsigned long __user *, user_mask_ptr) + { + int ret; + cpumask_t mask; +@@ -5460,7 +5460,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. + */ +-asmlinkage long sys_sched_yield(void) ++SYSCALL_DEFINE0(sched_yield) + { + struct rq *rq = this_rq_lock(); + +@@ -5601,7 +5601,7 @@ long __sched io_schedule_timeout(long ti + * this syscall returns the maximum rt_priority that can be used + * by a given scheduling class. + */ +-asmlinkage long sys_sched_get_priority_max(int policy) ++SYSCALL_DEFINE1(sched_get_priority_max, int, policy) + { + int ret = -EINVAL; + +@@ -5626,7 +5626,7 @@ asmlinkage long sys_sched_get_priority_m + * this syscall returns the minimum rt_priority that can be used + * by a given scheduling class. + */ +-asmlinkage long sys_sched_get_priority_min(int policy) ++SYSCALL_DEFINE1(sched_get_priority_min, int, policy) + { + int ret = -EINVAL; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.522128669@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:14 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 37/85] [PATCH 17/44] [CVE-2009-0029] System call wrappers part 07 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0017--CVE-2009-0029-System-call-wrappers-part-07.patch +Content-Length: 3828 +Lines: 126 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 754fe8d297bfae7b77f7ce866e2fb0c5fb186506 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/exit.c | 8 ++++---- + kernel/kexec.c | 5 ++--- + kernel/sched.c | 4 ++-- + kernel/signal.c | 2 +- + kernel/sys.c | 7 ++++--- + net/socket.c | 2 +- + 6 files changed, 14 insertions(+), 14 deletions(-) + +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -1145,7 +1145,7 @@ NORET_TYPE void complete_and_exit(struct + + EXPORT_SYMBOL(complete_and_exit); + +-asmlinkage long sys_exit(int error_code) ++SYSCALL_DEFINE1(exit, int, error_code) + { + do_exit((error_code&0xff)<<8); + } +@@ -1186,7 +1186,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. + */ +-asmlinkage long sys_exit_group(int error_code) ++SYSCALL_DEFINE1(exit_group, int, error_code) + { + do_group_exit((error_code & 0xff) << 8); + /* NOTREACHED */ +@@ -1792,8 +1792,8 @@ asmlinkage long sys_waitid(int which, pi + return ret; + } + +-asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr, +- int options, struct rusage __user *ru) ++SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr, ++ int, options, struct rusage __user *, ru) + { + struct pid *pid = NULL; + enum pid_type type; +--- a/kernel/kexec.c ++++ b/kernel/kexec.c +@@ -933,9 +933,8 @@ struct kimage *kexec_crash_image; + + static DEFINE_MUTEX(kexec_mutex); + +-asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments, +- struct kexec_segment __user *segments, +- unsigned long flags) ++SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments, ++ struct kexec_segment __user *, segments, unsigned long, flags) + { + struct kimage **dest_image, *image; + int result; +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -5651,8 +5651,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. + */ +-asmlinkage +-long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval) ++SYSCALL_DEFINE4(sched_rr_get_interval, pid_t, pid, ++ struct timespec __user *, interval) + { + struct task_struct *p; + unsigned int time_slice; +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1936,7 +1936,7 @@ EXPORT_SYMBOL(unblock_all_signals); + * System call entry points. + */ + +-asmlinkage long sys_restart_syscall(void) ++SYSCALL_DEFINE0(restart_syscall) + { + struct restart_block *restart = ¤t_thread_info()->restart_block; + return restart->fn(restart); +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -137,7 +137,7 @@ out: + return error; + } + +-asmlinkage long sys_setpriority(int which, int who, int niceval) ++SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval) + { + struct task_struct *g, *p; + struct user_struct *user; +@@ -201,7 +201,7 @@ out: + * has been offset by 20 (ie it returns 40..1 instead of -20..19) + * to stay compatible. + */ +-asmlinkage long sys_getpriority(int which, int who) ++SYSCALL_DEFINE2(getpriority, int, which, int, who) + { + struct task_struct *g, *p; + struct user_struct *user; +@@ -347,7 +347,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off); + * + * reboot doesn't sync: do that yourself before calling this. + */ +-asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg) ++SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, ++ void __user *, arg) + { + char buffer[256]; + +--- a/net/socket.c ++++ b/net/socket.c +@@ -1854,7 +1854,7 @@ out_put: + * Shutdown a socket. + */ + +-asmlinkage long sys_shutdown(int fd, int how) ++SYSCALL_DEFINE2(shutdown, int, fd, int, how) + { + int err, fput_needed; + struct socket *sock; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.662726636@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:15 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 38/85] [PATCH 18/44] [CVE-2009-0029] System call wrappers part 08 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0018--CVE-2009-0029-System-call-wrappers-part-08.patch +Content-Length: 4434 +Lines: 150 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 17da2bd90abf428523de0fb98f7075e00e3ed42e upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/exit.c | 7 +++---- + kernel/fork.c | 2 +- + kernel/futex.c | 6 +++--- + kernel/module.c | 10 ++++------ + kernel/sched.c | 2 +- + kernel/signal.c | 18 +++++++----------- + 6 files changed, 19 insertions(+), 26 deletions(-) + +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -1751,9 +1751,8 @@ end: + return retval; + } + +-asmlinkage long sys_waitid(int which, pid_t upid, +- struct siginfo __user *infop, int options, +- struct rusage __user *ru) ++SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *, ++ infop, int, options, struct rusage __user *, ru) + { + struct pid *pid = NULL; + enum pid_type type; +@@ -1830,7 +1829,7 @@ SYSCALL_DEFINE4(wait4, pid_t, upid, int + * sys_waitpid() remains for compatibility. waitpid() should be + * implemented by calling sys_wait4() from libc.a. + */ +-asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options) ++SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options) + { + return sys_wait4(pid, stat_addr, options, NULL); + } +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -865,7 +865,7 @@ static void copy_flags(unsigned long clo + clear_freeze_flag(p); + } + +-asmlinkage long sys_set_tid_address(int __user *tidptr) ++SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) + { + current->clear_child_tid = tidptr; + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2036,9 +2036,9 @@ long do_futex(u32 __user *uaddr, int op, + } + + +-asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val, +- struct timespec __user *utime, u32 __user *uaddr2, +- u32 val3) ++SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, ++ struct timespec __user *, utime, u32 __user *, uaddr2, ++ u32, val3) + { + struct timespec ts; + ktime_t t, *tp = NULL; +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -715,8 +715,8 @@ static void wait_for_zero_refcount(struc + mutex_lock(&module_mutex); + } + +-asmlinkage long +-sys_delete_module(const char __user *name_user, unsigned int flags) ++SYSCALL_DEFINE2(delete_module, const char __user *, name_user, ++ unsigned int, flags) + { + struct module *mod; + char name[MODULE_NAME_LEN]; +@@ -2257,10 +2257,8 @@ static noinline struct module *load_modu + } + + /* This is where the real work happens */ +-asmlinkage long +-sys_init_module(void __user *umod, +- unsigned long len, +- const char __user *uargs) ++SYSCALL_DEFINE3(init_module, void __user *, umod, ++ unsigned long, len, const char __user *, uargs) + { + struct module *mod; + int ret = 0; +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -5651,7 +5651,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. + */ +-SYSCALL_DEFINE4(sched_rr_get_interval, pid_t, pid, ++SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid, + struct timespec __user *, interval) + { + struct task_struct *p; +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1989,8 +1989,8 @@ int sigprocmask(int how, sigset_t *set, + return error; + } + +-asmlinkage long +-sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize) ++SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set, ++ sigset_t __user *, oset, size_t, sigsetsize) + { + int error = -EINVAL; + sigset_t old_set, new_set; +@@ -2049,8 +2049,7 @@ out: + return error; + } + +-asmlinkage long +-sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) ++SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize) + { + return do_sigpending(set, sigsetsize); + } +@@ -2121,11 +2120,9 @@ int copy_siginfo_to_user(siginfo_t __use + + #endif + +-asmlinkage long +-sys_rt_sigtimedwait(const sigset_t __user *uthese, +- siginfo_t __user *uinfo, +- const struct timespec __user *uts, +- size_t sigsetsize) ++SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, ++ siginfo_t __user *, uinfo, const struct timespec __user *, uts, ++ size_t, sigsetsize) + { + int ret, sig; + sigset_t these; +@@ -2198,8 +2195,7 @@ sys_rt_sigtimedwait(const sigset_t __use + return ret; + } + +-asmlinkage long +-sys_kill(pid_t pid, int sig) ++SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) + { + struct siginfo info; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:38 2009 +Message-Id: <20090115215438.807385454@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:16 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 39/85] [PATCH 19/44] [CVE-2009-0029] System call wrappers part 09 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0019--CVE-2009-0029-System-call-wrappers-part-09.patch +Content-Length: 2779 +Lines: 108 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit a5f8fa9e9ba5ef3305e147f41ad6e1e84ac1f0bd upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/sync.c | 6 +++--- + kernel/signal.c | 21 ++++++++------------- + 2 files changed, 11 insertions(+), 16 deletions(-) + +--- a/fs/sync.c ++++ b/fs/sync.c +@@ -36,7 +36,7 @@ static void do_sync(unsigned long wait) + laptop_sync_completion(); + } + +-asmlinkage long sys_sync(void) ++SYSCALL_DEFINE0(sync) + { + do_sync(1); + return 0; +@@ -118,12 +118,12 @@ static long __do_fsync(unsigned int fd, + return ret; + } + +-asmlinkage long sys_fsync(unsigned int fd) ++SYSCALL_DEFINE1(fsync, unsigned int, fd) + { + return __do_fsync(fd, 0); + } + +-asmlinkage long sys_fdatasync(unsigned int fd) ++SYSCALL_DEFINE1(fdatasync, unsigned int, fd) + { + return __do_fsync(fd, 1); + } +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -2254,7 +2254,7 @@ static int do_tkill(pid_t tgid, pid_t pi + * exists but it's not belonging to the target process anymore. This + * method solves the problem of threads exiting and PIDs getting reused. + */ +-asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig) ++SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig) + { + /* This is only valid for single tasks */ + if (pid <= 0 || tgid <= 0) +@@ -2266,8 +2266,7 @@ asmlinkage long sys_tgkill(pid_t tgid, p + /* + * Send a signal to only one task, even if it's a CLONE_THREAD task. + */ +-asmlinkage long +-sys_tkill(pid_t pid, int sig) ++SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) + { + /* This is only valid for single tasks */ + if (pid <= 0) +@@ -2276,8 +2275,8 @@ sys_tkill(pid_t pid, int sig) + return do_tkill(0, pid, sig); + } + +-asmlinkage long +-sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo) ++SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, ++ siginfo_t __user *, uinfo) + { + siginfo_t info; + +@@ -2501,15 +2500,13 @@ out: + /* + * For backwards compatibility. Functionality superseded by sigprocmask. + */ +-asmlinkage long +-sys_sgetmask(void) ++SYSCALL_DEFINE0(sgetmask) + { + /* SMP safe */ + return current->blocked.sig[0]; + } + +-asmlinkage long +-sys_ssetmask(int newmask) ++SYSCALL_DEFINE1(ssetmask, int, newmask) + { + int old; + +@@ -2529,8 +2526,7 @@ sys_ssetmask(int newmask) + /* + * For backwards compatibility. Functionality superseded by sigaction. + */ +-asmlinkage long +-sys_signal(int sig, __sighandler_t handler) ++SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) + { + struct k_sigaction new_sa, old_sa; + int ret; +@@ -2547,8 +2543,7 @@ sys_signal(int sig, __sighandler_t handl + + #ifdef __ARCH_WANT_SYS_PAUSE + +-asmlinkage long +-sys_pause(void) ++SYSCALL_DEFINE0(pause) + { + current->state = TASK_INTERRUPTIBLE; + schedule(); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215438.934868416@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:17 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 40/85] [PATCH 20/44] [CVE-2009-0029] System call wrappers part 10 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0020--CVE-2009-0029-System-call-wrappers-part-10.patch +Content-Length: 3674 +Lines: 117 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit bdc480e3bef6eb0e7071770834cbdda7e30a5436 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/buffer.c | 2 +- + fs/namespace.c | 9 ++++----- + fs/open.c | 12 +++++------- + fs/stat.c | 2 +- + 4 files changed, 11 insertions(+), 14 deletions(-) + +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -3177,7 +3177,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. + */ +-asmlinkage long sys_bdflush(int func, long data) ++SYSCALL_DEFINE2(bdflush, int, func, long, data) + { + static int msg_count; + +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -1128,7 +1128,7 @@ static int do_umount(struct vfsmount *mn + * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD + */ + +-asmlinkage long sys_umount(char __user * name, int flags) ++SYSCALL_DEFINE2(umount, char __user *, name, int, flags) + { + struct path path; + int retval; +@@ -1160,7 +1160,7 @@ out: + /* + * The 2.0 compatible umount. No flags. + */ +-asmlinkage long sys_oldumount(char __user * name) ++SYSCALL_DEFINE1(oldumount, char __user *, name) + { + return sys_umount(name, 0); + } +@@ -2053,9 +2053,8 @@ struct mnt_namespace *copy_mnt_ns(unsign + return new_ns; + } + +-asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name, +- char __user * type, unsigned long flags, +- void __user * data) ++SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name, ++ char __user *, type, unsigned long, flags, void __user *, data) + { + int retval; + unsigned long data_page; +--- a/fs/open.c ++++ b/fs/open.c +@@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *d + return 0; + } + +-asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * buf) ++SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf) + { + struct path path; + int error; +@@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __ + return error; + } + +- +-asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct statfs64 __user *buf) ++SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf) + { + struct path path; + long error; +@@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char + return error; + } + +- +-asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf) ++SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf) + { + struct file * file; + struct statfs tmp; +@@ -287,7 +285,7 @@ out: + return error; + } + +-asmlinkage long sys_truncate(const char __user * path, unsigned long length) ++SYSCALL_DEFINE2(truncate, const char __user *, path, unsigned long, length) + { + /* on 32-bit boxen it will cut the range 2^31--2^32-1 off */ + return do_sys_truncate(path, (long)length); +@@ -336,7 +334,7 @@ out: + return error; + } + +-asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length) ++SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length) + { + long ret = do_sys_ftruncate(fd, length, 1); + /* avoid REGPARM breakage on x86: */ +--- a/fs/stat.c ++++ b/fs/stat.c +@@ -152,7 +152,7 @@ static int cp_old_stat(struct kstat *sta + return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; + } + +-asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user * statbuf) ++SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_stat_fd(AT_FDCWD, filename, &stat); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.061889797@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:18 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 41/85] [PATCH 21/44] [CVE-2009-0029] System call wrappers part 11 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0021--CVE-2009-0029-System-call-wrappers-part-11.patch +Content-Length: 3570 +Lines: 113 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 257ac264d69017270fbc3cf5536953525db4076c upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/open.c | 2 +- + fs/stat.c | 20 ++++++++++++-------- + fs/super.c | 2 +- + 3 files changed, 14 insertions(+), 10 deletions(-) + +--- a/fs/open.c ++++ b/fs/open.c +@@ -174,7 +174,7 @@ out: + return error; + } + +-asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf) ++SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf) + { + struct file * file; + struct statfs64 tmp; +--- a/fs/stat.c ++++ b/fs/stat.c +@@ -162,7 +162,8 @@ SYSCALL_DEFINE2(stat, char __user *, fil + + return error; + } +-asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __user * statbuf) ++ ++SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); +@@ -172,7 +173,8 @@ asmlinkage long sys_lstat(char __user * + + return error; + } +-asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * statbuf) ++ ++SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_fstat(fd, &stat); +@@ -235,7 +237,7 @@ static int cp_new_stat(struct kstat *sta + return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; + } + +-asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf) ++SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_stat_fd(AT_FDCWD, filename, &stat); +@@ -246,7 +248,7 @@ asmlinkage long sys_newstat(char __user + return error; + } + +-asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf) ++SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); +@@ -280,7 +282,7 @@ out: + } + #endif + +-asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf) ++SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf) + { + struct kstat stat; + int error = vfs_fstat(fd, &stat); +@@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat * + return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; + } + +-asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbuf) ++SYSCALL_DEFINE2(stat64, char __user *, filename, struct stat64 __user *, statbuf) + { + struct kstat stat; + int error = vfs_stat(filename, &stat); +@@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user * + + return error; + } +-asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statbuf) ++ ++SYSCALL_DEFINE2(lstat64, char __user *, filename, struct stat64 __user *, statbuf) + { + struct kstat stat; + int error = vfs_lstat(filename, &stat); +@@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user + + return error; + } +-asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf) ++ ++SYSCALL_DEFINE2(fstat64, unsigned long, fd, struct stat64 __user *, statbuf) + { + struct kstat stat; + int error = vfs_fstat(fd, &stat); +--- a/fs/super.c ++++ b/fs/super.c +@@ -534,7 +534,7 @@ rescan: + return NULL; + } + +-asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf) ++SYSCALL_DEFINE2(ustat, unsigned, dev, struct ustat __user *, ubuf) + { + struct super_block *s; + struct ustat tmp; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.189901598@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:19 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 42/85] [PATCH 22/44] [CVE-2009-0029] System call wrappers part 12 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0022--CVE-2009-0029-System-call-wrappers-part-12.patch +Content-Length: 3852 +Lines: 129 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 64fd1de3d821659ac0a3004fd5ee1de59e64af30 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/xattr.c | 46 +++++++++++++++++++++------------------------- + 1 file changed, 21 insertions(+), 25 deletions(-) + +--- a/fs/xattr.c ++++ b/fs/xattr.c +@@ -251,9 +251,9 @@ setxattr(struct dentry *d, const char __ + return error; + } + +-asmlinkage long +-sys_setxattr(const char __user *pathname, const char __user *name, +- const void __user *value, size_t size, int flags) ++SYSCALL_DEFINE5(setxattr, const char __user *, pathname, ++ const char __user *, name, const void __user *, value, ++ size_t, size, int, flags) + { + struct path path; + int error; +@@ -270,9 +270,9 @@ sys_setxattr(const char __user *pathname + return error; + } + +-asmlinkage long +-sys_lsetxattr(const char __user *pathname, const char __user *name, +- const void __user *value, size_t size, int flags) ++SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname, ++ const char __user *, name, const void __user *, value, ++ size_t, size, int, flags) + { + struct path path; + int error; +@@ -289,9 +289,8 @@ sys_lsetxattr(const char __user *pathnam + return error; + } + +-asmlinkage long +-sys_fsetxattr(int fd, const char __user *name, const 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) + { + struct file *f; + struct dentry *dentry; +@@ -349,9 +348,8 @@ getxattr(struct dentry *d, const char __ + return error; + } + +-asmlinkage long +-sys_getxattr(const char __user *pathname, const char __user *name, +- void __user *value, size_t size) ++SYSCALL_DEFINE4(getxattr, const char __user *, pathname, ++ const char __user *, name, void __user *, value, size_t, size) + { + struct path path; + ssize_t error; +@@ -364,9 +362,8 @@ sys_getxattr(const char __user *pathname + return error; + } + +-asmlinkage long +-sys_lgetxattr(const char __user *pathname, const char __user *name, void __user *value, +- size_t size) ++SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname, ++ const char __user *, name, void __user *, value, size_t, size) + { + struct path path; + ssize_t error; +@@ -379,8 +376,8 @@ sys_lgetxattr(const char __user *pathnam + 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, ++ void __user *, value, size_t, size) + { + struct file *f; + ssize_t error = -EBADF; +@@ -424,8 +421,8 @@ listxattr(struct dentry *d, char __user + return error; + } + +-asmlinkage long +-sys_listxattr(const char __user *pathname, char __user *list, size_t size) ++SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list, ++ size_t, size) + { + struct path path; + ssize_t error; +@@ -438,8 +435,8 @@ sys_listxattr(const char __user *pathnam + return error; + } + +-asmlinkage long +-sys_llistxattr(const char __user *pathname, char __user *list, size_t size) ++SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list, ++ size_t, size) + { + struct path path; + ssize_t error; +@@ -452,8 +449,7 @@ sys_llistxattr(const char __user *pathna + return error; + } + +-asmlinkage long +-sys_flistxattr(int fd, char __user *list, size_t size) ++SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size) + { + struct file *f; + ssize_t error = -EBADF; +@@ -485,8 +481,8 @@ removexattr(struct dentry *d, const char + return vfs_removexattr(d, kname); + } + +-asmlinkage long +-sys_removexattr(const char __user *pathname, const char __user *name) ++SYSCALL_DEFINE2(removexattr, const char __user *, pathname, ++ const char __user *, name) + { + struct path path; + int error; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.318069564@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:20 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 43/85] [PATCH 23/44] [CVE-2009-0029] System call wrappers part 13 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0023--CVE-2009-0029-System-call-wrappers-part-13.patch +Content-Length: 4845 +Lines: 166 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 6a6160a7b5c27b3c38651baef92a14fa7072b3c1 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/xattr.c | 7 +++---- + mm/fremap.c | 4 ++-- + mm/mlock.c | 4 ++-- + mm/mmap.c | 4 ++-- + mm/mprotect.c | 4 ++-- + mm/mremap.c | 6 +++--- + mm/msync.c | 2 +- + mm/nommu.c | 10 +++++----- + 8 files changed, 20 insertions(+), 21 deletions(-) + +--- a/fs/xattr.c ++++ b/fs/xattr.c +@@ -499,8 +499,8 @@ SYSCALL_DEFINE2(removexattr, const char + return error; + } + +-asmlinkage long +-sys_lremovexattr(const char __user *pathname, const char __user *name) ++SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname, ++ const char __user *, name) + { + struct path path; + int error; +@@ -517,8 +517,7 @@ sys_lremovexattr(const char __user *path + return error; + } + +-asmlinkage long +-sys_fremovexattr(int fd, const char __user *name) ++SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name) + { + struct file *f; + struct dentry *dentry; +--- a/mm/fremap.c ++++ b/mm/fremap.c +@@ -118,8 +118,8 @@ static int populate_range(struct mm_stru + * and the vma's default protection is used. Arbitrary protections + * might be implemented in the future. + */ +-asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, +- unsigned long prot, unsigned long pgoff, unsigned long flags) ++SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, ++ unsigned long, prot, unsigned long, pgoff, unsigned long, flags) + { + struct mm_struct *mm = current->mm; + struct address_space *mapping; +--- a/mm/mlock.c ++++ b/mm/mlock.c +@@ -130,7 +130,7 @@ static int do_mlock(unsigned long start, + return error; + } + +-asmlinkage long sys_mlock(unsigned long start, size_t len) ++SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) + { + unsigned long locked; + unsigned long lock_limit; +@@ -156,7 +156,7 @@ asmlinkage long sys_mlock(unsigned long + return error; + } + +-asmlinkage long sys_munlock(unsigned long start, size_t len) ++SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) + { + int ret; + +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -244,7 +244,7 @@ static struct vm_area_struct *remove_vma + return next; + } + +-asmlinkage long sys_brk(unsigned long brk) ++SYSCALL_DEFINE1(brk, unsigned long, brk) + { + unsigned long rlim, retval; + unsigned long newbrk, oldbrk; +@@ -1927,7 +1927,7 @@ int do_munmap(struct mm_struct *mm, unsi + + EXPORT_SYMBOL(do_munmap); + +-asmlinkage long sys_munmap(unsigned long addr, size_t len) ++SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) + { + int ret; + struct mm_struct *mm = current->mm; +--- a/mm/mprotect.c ++++ b/mm/mprotect.c +@@ -219,8 +219,8 @@ fail: + return error; + } + +-asmlinkage long +-sys_mprotect(unsigned long start, size_t len, unsigned long prot) ++SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, ++ unsigned long, prot) + { + unsigned long vm_flags, nstart, end, tmp, reqprot; + struct vm_area_struct *vma, *prev; +--- a/mm/mremap.c ++++ b/mm/mremap.c +@@ -418,9 +418,9 @@ out_nc: + return ret; + } + +-asmlinkage long sys_mremap(unsigned long addr, +- unsigned long old_len, unsigned long new_len, +- unsigned long flags, unsigned long new_addr) ++SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, ++ unsigned long, new_len, unsigned long, flags, ++ unsigned long, new_addr) + { + unsigned long ret; + +--- a/mm/msync.c ++++ b/mm/msync.c +@@ -28,7 +28,7 @@ + * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to + * applications. + */ +-asmlinkage long sys_msync(unsigned long start, size_t len, int flags) ++SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) + { + unsigned long end; + struct mm_struct *mm = current->mm; +--- a/mm/nommu.c ++++ b/mm/nommu.c +@@ -355,7 +355,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. + */ +-asmlinkage long sys_brk(unsigned long brk) ++SYSCALL_DEFINE1(brk, unsigned long, brk) + { + struct mm_struct *mm = current->mm; + +@@ -1170,7 +1170,7 @@ int do_munmap(struct mm_struct *mm, unsi + } + EXPORT_SYMBOL(do_munmap); + +-asmlinkage long sys_munmap(unsigned long addr, size_t len) ++SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) + { + int ret; + struct mm_struct *mm = current->mm; +@@ -1261,9 +1261,9 @@ unsigned long do_mremap(unsigned long ad + } + EXPORT_SYMBOL(do_mremap); + +-asmlinkage unsigned long sys_mremap(unsigned long addr, +- unsigned long old_len, unsigned long new_len, +- unsigned long flags, unsigned long new_addr) ++SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, ++ unsigned long, new_len, unsigned long, flags, ++ unsigned long, new_addr) + { + unsigned long ret; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.456967734@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:21 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 44/85] [PATCH 24/44] [CVE-2009-0029] System call wrappers part 14 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0024--CVE-2009-0029-System-call-wrappers-part-14.patch +Content-Length: 3464 +Lines: 122 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 3480b25743cb7404928d57efeaa3d085708b04c2 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/namei.c | 8 ++++---- + fs/namespace.c | 4 ++-- + fs/open.c | 2 +- + mm/madvise.c | 2 +- + mm/mincore.c | 4 ++-- + mm/mlock.c | 4 ++-- + 6 files changed, 12 insertions(+), 12 deletions(-) + +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2041,7 +2041,7 @@ out_unlock: + return error; + } + +-asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned dev) ++SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned, dev) + { + return sys_mknodat(AT_FDCWD, filename, mode, dev); + } +@@ -2308,7 +2308,7 @@ asmlinkage long sys_unlinkat(int dfd, co + return do_unlinkat(dfd, pathname); + } + +-asmlinkage long sys_unlink(const char __user *pathname) ++SYSCALL_DEFINE1(unlink, const char __user *, pathname) + { + return do_unlinkat(AT_FDCWD, pathname); + } +@@ -2372,7 +2372,7 @@ out_putname: + return error; + } + +-asmlinkage long sys_symlink(const char __user *oldname, const char __user *newname) ++SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname) + { + return sys_symlinkat(oldname, AT_FDCWD, newname); + } +@@ -2471,7 +2471,7 @@ out: + return error; + } + +-asmlinkage long sys_link(const char __user *oldname, const char __user *newname) ++SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname) + { + return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0); + } +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -2179,8 +2179,8 @@ static void chroot_fs_refs(struct path * + * though, so you may need to say mount --bind /nfs/my_root /nfs/my_root + * first. + */ +-asmlinkage long sys_pivot_root(const char __user * new_root, +- const char __user * put_old) ++SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, ++ const char __user *, put_old) + { + struct vfsmount *tmp; + struct path new, old, parent_path, root_parent, root; +--- a/fs/open.c ++++ b/fs/open.c +@@ -574,7 +574,7 @@ out: + return error; + } + +-asmlinkage long sys_chroot(const char __user * filename) ++SYSCALL_DEFINE1(chroot, const char __user *, filename) + { + struct path path; + int error; +--- a/mm/madvise.c ++++ b/mm/madvise.c +@@ -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. + */ +-asmlinkage long sys_madvise(unsigned long start, size_t len_in, int behavior) ++SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) + { + unsigned long end, tmp; + struct vm_area_struct * vma, *prev; +--- a/mm/mincore.c ++++ b/mm/mincore.c +@@ -177,8 +177,8 @@ none_mapped: + * mapped + * -EAGAIN - A kernel resource was temporarily unavailable. + */ +-asmlinkage long sys_mincore(unsigned long start, size_t len, +- unsigned char __user * vec) ++SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, ++ unsigned char __user *, vec) + { + long retval; + unsigned long pages; +--- a/mm/mlock.c ++++ b/mm/mlock.c +@@ -193,7 +193,7 @@ out: + return 0; + } + +-asmlinkage long sys_mlockall(int flags) ++SYSCALL_DEFINE1(mlockall, int, flags) + { + unsigned long lock_limit; + int ret = -EINVAL; +@@ -219,7 +219,7 @@ out: + return ret; + } + +-asmlinkage long sys_munlockall(void) ++SYSCALL_DEFINE0(munlockall) + { + int ret; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.579134937@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:22 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 45/85] [PATCH 25/44] [CVE-2009-0029] System call wrappers part 15 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0025--CVE-2009-0029-System-call-wrappers-part-15.patch +Content-Length: 2908 +Lines: 104 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit a26eab2400f0477bfac0255600552394855016f7 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/fcntl.c | 11 ++++++----- + fs/ioctl.c | 2 +- + fs/namei.c | 2 +- + fs/open.c | 4 ++-- + 4 files changed, 10 insertions(+), 9 deletions(-) + +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -50,7 +50,7 @@ static int get_close_on_exec(unsigned in + return res; + } + +-asmlinkage long sys_dup3(unsigned int oldfd, unsigned int newfd, int flags) ++SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) + { + int err = -EBADF; + struct file * file, *tofree; +@@ -113,7 +113,7 @@ out_unlock: + return err; + } + +-asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd) ++SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd) + { + if (unlikely(newfd == oldfd)) { /* corner case */ + struct files_struct *files = current->files; +@@ -126,7 +126,7 @@ asmlinkage long sys_dup2(unsigned int ol + return sys_dup3(oldfd, newfd, 0); + } + +-asmlinkage long sys_dup(unsigned int fildes) ++SYSCALL_DEFINE1(dup, unsigned int, fildes) + { + int ret = -EBADF; + struct file *file = fget(fildes); +@@ -334,7 +334,7 @@ static long do_fcntl(int fd, unsigned in + return err; + } + +-asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg) ++SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) + { + struct file *filp; + long err = -EBADF; +@@ -357,7 +357,8 @@ out: + } + + #if BITS_PER_LONG == 32 +-asmlinkage long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg) ++SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd, ++ unsigned long, arg) + { + struct file * filp; + long err; +--- a/fs/ioctl.c ++++ b/fs/ioctl.c +@@ -195,7 +195,7 @@ int do_vfs_ioctl(struct file *filp, unsi + 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; + int error = -EBADF; +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2707,7 +2707,7 @@ exit: + return error; + } + +-asmlinkage long sys_rename(const char __user *oldname, const char __user *newname) ++SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname) + { + return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname); + } +--- a/fs/open.c ++++ b/fs/open.c +@@ -599,7 +599,7 @@ out: + return error; + } + +-asmlinkage long sys_fchmod(unsigned int fd, mode_t mode) ++SYSCALL_DEFINE2(fchmod, unsigned int, fd, mode_t, mode) + { + struct inode * inode; + struct dentry * dentry; +@@ -663,7 +663,7 @@ out: + return error; + } + +-asmlinkage long sys_chmod(const char __user *filename, mode_t mode) ++SYSCALL_DEFINE2(chmod, const char __user *, filename, mode_t, mode) + { + return sys_fchmodat(AT_FDCWD, filename, mode); + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.707634370@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:23 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 46/85] [PATCH 26/44] [CVE-2009-0029] System call wrappers part 16 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0026--CVE-2009-0029-System-call-wrappers-part-16.patch +Content-Length: 4392 +Lines: 129 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 002c8976ee537724b20a5e179d9b349309438836 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/aio.c | 22 +++++++++++----------- + fs/locks.c | 2 +- + fs/open.c | 2 +- + fs/read_write.c | 4 ++-- + fs/stat.c | 4 ++-- + 5 files changed, 17 insertions(+), 17 deletions(-) + +--- a/fs/aio.c ++++ b/fs/aio.c +@@ -1258,7 +1258,7 @@ static void io_destroy(struct kioctx *io + * pointer is passed for ctxp. Will fail with -ENOSYS if not + * implemented. + */ +-asmlinkage long sys_io_setup(unsigned nr_events, aio_context_t __user *ctxp) ++SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) + { + struct kioctx *ioctx = NULL; + unsigned long ctx; +@@ -1296,7 +1296,7 @@ out: + * implemented. May fail with -EFAULT if the context pointed to + * is invalid. + */ +-asmlinkage long sys_io_destroy(aio_context_t ctx) ++SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx) + { + struct kioctx *ioctx = lookup_ioctx(ctx); + if (likely(NULL != ioctx)) { +@@ -1650,8 +1650,8 @@ out_put_req: + * are available to queue any iocbs. Will return 0 if nr is 0. Will + * fail with -ENOSYS if not implemented. + */ +-asmlinkage long sys_io_submit(aio_context_t ctx_id, long nr, +- struct iocb __user * __user *iocbpp) ++SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, ++ struct iocb __user * __user *, iocbpp) + { + struct kioctx *ctx; + long ret = 0; +@@ -1725,8 +1725,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. + */ +-asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, +- struct io_event __user *result) ++SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, ++ struct io_event __user *, result) + { + int (*cancel)(struct kiocb *iocb, struct io_event *res); + struct kioctx *ctx; +@@ -1787,11 +1787,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. + */ +-asmlinkage long sys_io_getevents(aio_context_t ctx_id, +- long min_nr, +- long nr, +- struct io_event __user *events, +- struct timespec __user *timeout) ++SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id, ++ long, min_nr, ++ long, nr, ++ struct io_event __user *, events, ++ struct timespec __user *, timeout) + { + struct kioctx *ioctx = lookup_ioctx(ctx_id); + long ret = -EINVAL; +--- a/fs/locks.c ++++ b/fs/locks.c +@@ -1564,7 +1564,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. + */ +-asmlinkage long sys_flock(unsigned int fd, unsigned int cmd) ++SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd) + { + struct file *filp; + struct file_lock *lock; +--- a/fs/open.c ++++ b/fs/open.c +@@ -1081,7 +1081,7 @@ asmlinkage long sys_openat(int dfd, cons + * For backward compatibility? Maybe this should be moved + * into arch/i386 instead? + */ +-asmlinkage long sys_creat(const char __user * pathname, int mode) ++SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode) + { + return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode); + } +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -793,7 +793,7 @@ out: + return retval; + } + +-asmlinkage long sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count) ++SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count) + { + loff_t pos; + off_t off; +@@ -812,7 +812,7 @@ asmlinkage long sys_sendfile(int out_fd, + return do_sendfile(out_fd, in_fd, NULL, count, 0); + } + +-asmlinkage long sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count) ++SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, loff_t __user *, offset, size_t, count) + { + loff_t pos; + ssize_t ret; +--- a/fs/stat.c ++++ b/fs/stat.c +@@ -320,8 +320,8 @@ asmlinkage long sys_readlinkat(int dfd, + return error; + } + +-asmlinkage long sys_readlink(const char __user *path, char __user *buf, +- int bufsiz) ++SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf, ++ int, bufsiz) + { + return sys_readlinkat(AT_FDCWD, path, buf, bufsiz); + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:39 2009 +Message-Id: <20090115215439.845795504@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:24 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 47/85] [PATCH 27/44] [CVE-2009-0029] System call wrappers part 17 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0027--CVE-2009-0029-System-call-wrappers-part-17.patch +Content-Length: 3450 +Lines: 114 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit ca013e945b1ba5828b151ee646946f1297b67a4c upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/open.c | 16 +++++++--------- + kernel/uid16.c | 6 +++--- + 2 files changed, 10 insertions(+), 12 deletions(-) + +--- a/fs/open.c ++++ b/fs/open.c +@@ -522,7 +522,7 @@ out: + return res; + } + +-asmlinkage long sys_access(const char __user *filename, int mode) ++SYSCALL_DEFINE2(access, const char __user *, filename, int, mode) + { + return sys_faccessat(AT_FDCWD, filename, mode); + } +@@ -693,7 +693,7 @@ static int chown_common(struct dentry * + return error; + } + +-asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group) ++SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group) + { + struct path path; + int error; +@@ -737,7 +737,7 @@ out: + return error; + } + +-asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group) ++SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group) + { + struct path path; + int error; +@@ -756,8 +756,7 @@ out: + return error; + } + +- +-asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group) ++SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group) + { + struct file * file; + int error = -EBADF; +@@ -1048,7 +1047,7 @@ long do_sys_open(int dfd, const char __u + return fd; + } + +-asmlinkage long sys_open(const char __user *filename, int flags, int mode) ++SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode) + { + long ret; + +@@ -1117,7 +1116,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. + */ +-asmlinkage long sys_close(unsigned int fd) ++SYSCALL_DEFINE1(close, unsigned int, fd) + { + struct file * filp; + struct files_struct *files = current->files; +@@ -1150,14 +1149,13 @@ out_unlock: + spin_unlock(&files->file_lock); + return -EBADF; + } +- + EXPORT_SYMBOL(sys_close); + + /* + * This routine simulates a hangup on the tty, to arrange that users + * are given clean terminals at login time. + */ +-asmlinkage long sys_vhangup(void) ++SYSCALL_DEFINE0(vhangup) + { + if (capable(CAP_SYS_TTY_CONFIG)) { + /* XXX: this needs locking */ +--- a/kernel/uid16.c ++++ b/kernel/uid16.c +@@ -17,7 +17,7 @@ + + #include + +-asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gid_t group) ++SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group) + { + long ret = sys_chown(filename, low2highuid(user), low2highgid(group)); + /* avoid REGPARM breakage on x86: */ +@@ -25,7 +25,7 @@ asmlinkage long sys_chown16(const char _ + return ret; + } + +-asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_gid_t group) ++SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group) + { + long ret = sys_lchown(filename, low2highuid(user), low2highgid(group)); + /* avoid REGPARM breakage on x86: */ +@@ -33,7 +33,7 @@ asmlinkage long sys_lchown16(const char + return ret; + } + +-asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group) ++SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group) + { + long ret = sys_fchown(fd, low2highuid(user), low2highgid(group)); + /* avoid REGPARM breakage on x86: */ + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215439.973605603@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:25 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 48/85] [PATCH 28/44] [CVE-2009-0029] System call wrappers part 18 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0028--CVE-2009-0029-System-call-wrappers-part-18.patch +Content-Length: 3304 +Lines: 104 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit a6b42e83f249aad723589b2bdf6d1dfb2b0997c8 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + kernel/uid16.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +--- a/kernel/uid16.c ++++ b/kernel/uid16.c +@@ -41,7 +41,7 @@ SYSCALL_DEFINE3(fchown16, unsigned int, + return ret; + } + +-asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid) ++SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid) + { + long ret = sys_setregid(low2highgid(rgid), low2highgid(egid)); + /* avoid REGPARM breakage on x86: */ +@@ -49,7 +49,7 @@ asmlinkage long sys_setregid16(old_gid_t + return ret; + } + +-asmlinkage long sys_setgid16(old_gid_t gid) ++SYSCALL_DEFINE1(setgid16, old_gid_t, gid) + { + long ret = sys_setgid(low2highgid(gid)); + /* avoid REGPARM breakage on x86: */ +@@ -57,7 +57,7 @@ asmlinkage long sys_setgid16(old_gid_t g + return ret; + } + +-asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid) ++SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid) + { + long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid)); + /* avoid REGPARM breakage on x86: */ +@@ -65,7 +65,7 @@ asmlinkage long sys_setreuid16(old_uid_t + return ret; + } + +-asmlinkage long sys_setuid16(old_uid_t uid) ++SYSCALL_DEFINE1(setuid16, old_uid_t, uid) + { + long ret = sys_setuid(low2highuid(uid)); + /* avoid REGPARM breakage on x86: */ +@@ -73,7 +73,7 @@ asmlinkage long sys_setuid16(old_uid_t u + return ret; + } + +-asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid) ++SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid) + { + long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid), + low2highuid(suid)); +@@ -82,7 +82,7 @@ asmlinkage long sys_setresuid16(old_uid_ + return ret; + } + +-asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid) ++SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruid, old_uid_t __user *, euid, old_uid_t __user *, suid) + { + int retval; + +@@ -93,7 +93,7 @@ asmlinkage long sys_getresuid16(old_uid_ + return retval; + } + +-asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid) ++SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid) + { + long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), + low2highgid(sgid)); +@@ -102,7 +102,8 @@ asmlinkage long sys_setresgid16(old_gid_ + return ret; + } + +-asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid) ++ ++SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgid, old_gid_t __user *, egid, old_gid_t __user *, sgid) + { + int retval; + +@@ -113,7 +114,7 @@ asmlinkage long sys_getresgid16(old_gid_ + return retval; + } + +-asmlinkage long sys_setfsuid16(old_uid_t uid) ++SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid) + { + long ret = sys_setfsuid(low2highuid(uid)); + /* avoid REGPARM breakage on x86: */ +@@ -121,7 +122,7 @@ asmlinkage long sys_setfsuid16(old_uid_t + return ret; + } + +-asmlinkage long sys_setfsgid16(old_gid_t gid) ++SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid) + { + long ret = sys_setfsgid(low2highgid(gid)); + /* avoid REGPARM breakage on x86: */ + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.103446336@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:26 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 49/85] [PATCH 29/44] [CVE-2009-0029] System call wrappers part 19 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0029--CVE-2009-0029-System-call-wrappers-part-19.patch +Content-Length: 2888 +Lines: 105 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 003d7ab479168132a2b2c6700fe682b08f08ab0c upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/read_write.c | 8 ++++---- + fs/utimes.c | 5 +++-- + kernel/uid16.c | 12 ++++++------ + 3 files changed, 13 insertions(+), 12 deletions(-) + +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -112,7 +112,7 @@ loff_t vfs_llseek(struct file *file, lof + } + EXPORT_SYMBOL(vfs_llseek); + +-asmlinkage long sys_lseek(unsigned int fd, off_t offset, unsigned int origin) ++SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, origin) + { + off_t retval; + struct file * file; +@@ -136,9 +136,9 @@ bad: + } + + #ifdef __ARCH_WANT_SYS_LLSEEK +-asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, +- unsigned long offset_low, loff_t __user * result, +- unsigned int origin) ++SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, ++ unsigned long, offset_low, loff_t __user *, result, ++ unsigned int, origin) + { + int retval; + struct file * file; +--- a/fs/utimes.c ++++ b/fs/utimes.c +@@ -24,7 +24,7 @@ + * must be owner or have write permission. + * Else, update from *times, must be owner or super user. + */ +-asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times) ++SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times) + { + struct timespec tv[2]; + +@@ -214,7 +214,8 @@ asmlinkage long sys_futimesat(int dfd, c + return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0); + } + +-asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes) ++SYSCALL_DEFINE2(utimes, char __user *, filename, ++ struct timeval __user *, utimes) + { + return sys_futimesat(AT_FDCWD, filename, utimes); + } +--- a/kernel/uid16.c ++++ b/kernel/uid16.c +@@ -160,7 +160,7 @@ static int groups16_from_user(struct gro + return 0; + } + +-asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist) ++SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist) + { + int i = 0; + +@@ -184,7 +184,7 @@ out: + return i; + } + +-asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist) ++SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist) + { + struct group_info *group_info; + int retval; +@@ -209,22 +209,22 @@ asmlinkage long sys_setgroups16(int gids + return retval; + } + +-asmlinkage long sys_getuid16(void) ++SYSCALL_DEFINE0(getuid16) + { + return high2lowuid(current->uid); + } + +-asmlinkage long sys_geteuid16(void) ++SYSCALL_DEFINE0(geteuid16) + { + return high2lowuid(current->euid); + } + +-asmlinkage long sys_getgid16(void) ++SYSCALL_DEFINE0(getgid16) + { + return high2lowgid(current->gid); + } + +-asmlinkage long sys_getegid16(void) ++SYSCALL_DEFINE0(getegid16) + { + return high2lowgid(current->egid); + } + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.231833882@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:27 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 50/85] [PATCH 30/44] [CVE-2009-0029] System call wrappers part 20 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0030--CVE-2009-0029-System-call-wrappers-part-20.patch +Content-Length: 3437 +Lines: 121 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 3cdad42884bbd95d5aa01297e8236ea1bad70053 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/dcache.c | 2 +- + fs/namei.c | 4 ++-- + fs/open.c | 4 ++-- + fs/quota.c | 3 ++- + fs/read_write.c | 13 +++++++------ + 5 files changed, 14 insertions(+), 12 deletions(-) + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -2085,7 +2085,7 @@ Elong: + * return NULL; + * } + */ +-asmlinkage long sys_getcwd(char __user *buf, unsigned long size) ++SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size) + { + int error; + struct path pwd, root; +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2101,7 +2101,7 @@ out_err: + return error; + } + +-asmlinkage long sys_mkdir(const char __user *pathname, int mode) ++SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode) + { + return sys_mkdirat(AT_FDCWD, pathname, mode); + } +@@ -2208,7 +2208,7 @@ exit1: + return error; + } + +-asmlinkage long sys_rmdir(const char __user *pathname) ++SYSCALL_DEFINE1(rmdir, const char __user *, pathname) + { + return do_rmdir(AT_FDCWD, pathname); + } +--- a/fs/open.c ++++ b/fs/open.c +@@ -527,7 +527,7 @@ SYSCALL_DEFINE2(access, const char __use + return sys_faccessat(AT_FDCWD, filename, mode); + } + +-asmlinkage long sys_chdir(const char __user * filename) ++SYSCALL_DEFINE1(chdir, const char __user *, filename) + { + struct path path; + int error; +@@ -548,7 +548,7 @@ out: + return error; + } + +-asmlinkage long sys_fchdir(unsigned int fd) ++SYSCALL_DEFINE1(fchdir, unsigned int, fd) + { + struct file *file; + struct inode *inode; +--- a/fs/quota.c ++++ b/fs/quota.c +@@ -368,7 +368,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. + */ +-asmlinkage long sys_quotactl(unsigned int cmd, const char __user *special, qid_t id, void __user *addr) ++SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special, ++ qid_t, id, void __user *, addr) + { + uint cmds, type; + struct super_block *sb = NULL; +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -334,7 +334,7 @@ static inline void file_pos_write(struct + file->f_pos = pos; + } + +-asmlinkage long sys_read(unsigned int fd, char __user * buf, size_t count) ++SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -351,7 +351,8 @@ asmlinkage long sys_read(unsigned int fd + return ret; + } + +-asmlinkage long sys_write(unsigned int fd, const char __user * buf, size_t count) ++SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, ++ size_t, count) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -653,8 +654,8 @@ ssize_t vfs_writev(struct file *file, co + + EXPORT_SYMBOL(vfs_writev); + +-asmlinkage long +-sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) ++SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec, ++ unsigned long, vlen) + { + struct file *file; + ssize_t ret = -EBADF; +@@ -674,8 +675,8 @@ sys_readv(unsigned long fd, const struct + return ret; + } + +-asmlinkage long +-sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) ++SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec, ++ unsigned long, vlen) + { + struct file *file; + ssize_t ret = -EBADF; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.360824159@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:28 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 51/85] [PATCH 31/44] [CVE-2009-0029] System call wrappers part 21 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0031--CVE-2009-0029-System-call-wrappers-part-21.patch +Content-Length: 3600 +Lines: 111 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 20f37034fb966a1c35894f9fe529fda0b6440101 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/readdir.c | 6 ++++-- + net/socket.c | 26 +++++++++++++------------- + 2 files changed, 17 insertions(+), 15 deletions(-) + +--- a/fs/readdir.c ++++ b/fs/readdir.c +@@ -187,7 +187,8 @@ efault: + return -EFAULT; + } + +-asmlinkage long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count) ++SYSCALL_DEFINE3(getdents, unsigned int, fd, ++ struct linux_dirent __user *, dirent, unsigned int, count) + { + struct file * file; + struct linux_dirent __user * lastdirent; +@@ -271,7 +272,8 @@ efault: + return -EFAULT; + } + +-asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count) ++SYSCALL_DEFINE3(getdents64, unsigned int, fd, ++ struct linux_dirent64 __user *, dirent, unsigned int, count) + { + struct file * file; + struct linux_dirent64 __user * lastdirent; +--- a/net/socket.c ++++ b/net/socket.c +@@ -1365,7 +1365,7 @@ out_fd: + * the protocol layer (having also checked the address is ok). + */ + +-asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen) ++SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) + { + struct socket *sock; + struct sockaddr_storage address; +@@ -1567,8 +1567,8 @@ asmlinkage long sys_paccept(int fd, stru + #endif + #endif + +-asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr, +- int __user *upeer_addrlen) ++SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr, ++ int __user *, upeer_addrlen) + { + return do_accept(fd, upeer_sockaddr, upeer_addrlen, 0); + } +@@ -1585,8 +1585,8 @@ asmlinkage long sys_accept(int fd, struc + * include the -EINPROGRESS status for such sockets. + */ + +-asmlinkage long sys_connect(int fd, struct sockaddr __user *uservaddr, +- int addrlen) ++SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, ++ int, addrlen) + { + struct socket *sock; + struct sockaddr_storage address; +@@ -1617,8 +1617,8 @@ out: + * name to user space. + */ + +-asmlinkage long sys_getsockname(int fd, struct sockaddr __user *usockaddr, +- int __user *usockaddr_len) ++SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr, ++ int __user *, usockaddr_len) + { + struct socket *sock; + struct sockaddr_storage address; +@@ -1648,8 +1648,8 @@ out: + * name to user space. + */ + +-asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr, +- int __user *usockaddr_len) ++SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, ++ int __user *, usockaddr_len) + { + struct socket *sock; + struct sockaddr_storage address; +@@ -1790,8 +1790,8 @@ asmlinkage long sys_recv(int fd, void __ + * to pass the user mode parameter for the protocols to sort out. + */ + +-asmlinkage long sys_setsockopt(int fd, int level, int optname, +- char __user *optval, int optlen) ++SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname, ++ char __user *, optval, int, optlen) + { + int err, fput_needed; + struct socket *sock; +@@ -1824,8 +1824,8 @@ out_put: + * to pass a user mode parameter for the protocols to sort out. + */ + +-asmlinkage long sys_getsockopt(int fd, int level, int optname, +- char __user *optval, int __user *optlen) ++SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname, ++ char __user *, optval, int __user *, optlen) + { + int err, fput_needed; + struct socket *sock; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.517609379@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:29 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 52/85] [PATCH 32/44] [CVE-2009-0029] System call wrappers part 22 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0032--CVE-2009-0029-System-call-wrappers-part-22.patch +Content-Length: 3398 +Lines: 107 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 3e0fa65f8ba4fd24b3dcfaf14d5b15eaab0fdc61 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + net/socket.c | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +--- a/net/socket.c ++++ b/net/socket.c +@@ -1216,7 +1216,7 @@ int sock_create_kern(int family, int typ + return __sock_create(&init_net, family, type, protocol, res, 1); + } + +-asmlinkage long sys_socket(int family, int type, int protocol) ++SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) + { + int retval; + struct socket *sock; +@@ -1257,8 +1257,8 @@ out_release: + * Create a pair of connected sockets. + */ + +-asmlinkage long sys_socketpair(int family, int type, int protocol, +- int __user *usockvec) ++SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, ++ int __user *, usockvec) + { + struct socket *sock1, *sock2; + int fd1, fd2, err; +@@ -1394,7 +1394,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so + * ready for listening. + */ + +-asmlinkage long sys_listen(int fd, int backlog) ++SYSCALL_DEFINE2(listen, int, fd, int, backlog) + { + struct socket *sock; + int err, fput_needed; +@@ -1680,9 +1680,9 @@ SYSCALL_DEFINE3(getpeername, int, fd, st + * the protocol. + */ + +-asmlinkage long sys_sendto(int fd, void __user *buff, size_t len, +- unsigned flags, struct sockaddr __user *addr, +- int addr_len) ++SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, ++ unsigned, flags, struct sockaddr __user *, addr, ++ int, addr_len) + { + struct socket *sock; + struct sockaddr_storage address; +@@ -1725,7 +1725,8 @@ out: + * Send a datagram down a socket. + */ + +-asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags) ++SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len, ++ unsigned, flags) + { + return sys_sendto(fd, buff, len, flags, NULL, 0); + } +@@ -1736,9 +1737,9 @@ asmlinkage long sys_send(int fd, void __ + * sender address from kernel to user space. + */ + +-asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size, +- unsigned flags, struct sockaddr __user *addr, +- int __user *addr_len) ++SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, ++ unsigned, flags, struct sockaddr __user *, addr, ++ int __user *, addr_len) + { + struct socket *sock; + struct iovec iov; +@@ -1880,7 +1881,7 @@ SYSCALL_DEFINE2(shutdown, int, fd, int, + * BSD sendmsg interface + */ + +-asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags) ++SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags) + { + struct compat_msghdr __user *msg_compat = + (struct compat_msghdr __user *)msg; +@@ -1986,8 +1987,8 @@ out: + * BSD recvmsg interface + */ + +-asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg, +- unsigned int flags) ++SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg, ++ unsigned int, flags) + { + struct compat_msghdr __user *msg_compat = + (struct compat_msghdr __user *)msg; +@@ -2110,7 +2111,7 @@ static const unsigned char nargs[19]={ + * it is set by the callees. + */ + +-asmlinkage long sys_socketcall(int call, unsigned long __user *args) ++SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args) + { + unsigned long a[6]; + unsigned long a0, a1; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.654754952@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:30 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 53/85] [PATCH 33/44] [CVE-2009-0029] System call wrappers part 23 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0033--CVE-2009-0029-System-call-wrappers-part-23.patch +Content-Length: 3760 +Lines: 121 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 5a8a82b1d306a325d899b67715618413657efda4 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/eventpoll.c | 18 +++++++++--------- + fs/select.c | 8 ++++---- + kernel/sys.c | 6 +++--- + 3 files changed, 16 insertions(+), 16 deletions(-) + +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c +@@ -1106,7 +1106,7 @@ retry: + /* + * Open an eventpoll file descriptor. + */ +-asmlinkage long sys_epoll_create1(int flags) ++SYSCALL_DEFINE1(epoll_create1, int, flags) + { + int error, fd = -1; + struct eventpoll *ep; +@@ -1146,7 +1146,7 @@ error_return: + return fd; + } + +-asmlinkage long sys_epoll_create(int size) ++SYSCALL_DEFINE1(epoll_create, int, size) + { + if (size < 0) + return -EINVAL; +@@ -1159,8 +1159,8 @@ asmlinkage long sys_epoll_create(int siz + * the eventpoll file that enables the insertion/removal/change of + * file descriptors inside the interest set. + */ +-asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, +- struct epoll_event __user *event) ++SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd, ++ struct epoll_event __user *, event) + { + int error; + struct file *file, *tfile; +@@ -1257,8 +1257,8 @@ error_return: + * Implement the event wait interface for the eventpoll file. It is the kernel + * part of the user space epoll_wait(2). + */ +-asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events, +- int maxevents, int timeout) ++SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events, ++ int, maxevents, int, timeout) + { + int error; + struct file *file; +@@ -1315,9 +1315,9 @@ error_return: + * Implement the event wait interface for the eventpoll file. It is the kernel + * part of the user space epoll_pwait(2). + */ +-asmlinkage long sys_epoll_pwait(int epfd, struct epoll_event __user *events, +- int maxevents, int timeout, const sigset_t __user *sigmask, +- size_t sigsetsize) ++SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events, ++ int, maxevents, int, timeout, const sigset_t __user *, sigmask, ++ size_t, sigsetsize) + { + int error; + sigset_t ksigmask, sigsaved; +--- a/fs/select.c ++++ b/fs/select.c +@@ -374,8 +374,8 @@ out_nofds: + return ret; + } + +-asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, +- fd_set __user *exp, struct timeval __user *tvp) ++SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp, ++ fd_set __user *, exp, struct timeval __user *, tvp) + { + s64 timeout = -1; + struct timeval tv; +@@ -727,8 +727,8 @@ static long do_restart_poll(struct resta + return ret; + } + +-asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds, +- long timeout_msecs) ++SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds, ++ long, timeout_msecs) + { + s64 timeout_jiffies; + int ret; +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -1340,7 +1340,7 @@ asmlinkage long sys_newuname(struct new_ + return errno; + } + +-asmlinkage long sys_sethostname(char __user *name, int len) ++SYSCALL_DEFINE2(sethostname, char __user *, name, int, len) + { + int errno; + char tmp[__NEW_UTS_LEN]; +@@ -1362,7 +1362,7 @@ asmlinkage long sys_sethostname(char __u + + #ifdef __ARCH_WANT_SYS_GETHOSTNAME + +-asmlinkage long sys_gethostname(char __user *name, int len) ++SYSCALL_DEFINE2(gethostname, char __user *, name, int, len) + { + int i, errno; + +@@ -1385,7 +1385,7 @@ asmlinkage long sys_gethostname(char __u + * Only setdomainname; getdomainname can be implemented by calling + * uname() + */ +-asmlinkage long sys_setdomainname(char __user *name, int len) ++SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len) + { + int errno; + char tmp[__NEW_UTS_LEN]; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:40 2009 +Message-Id: <20090115215440.781103413@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:31 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 54/85] [PATCH 34/44] [CVE-2009-0029] System call wrappers part 24 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0034--CVE-2009-0029-System-call-wrappers-part-24.patch +Content-Length: 3292 +Lines: 111 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit e48fbb699f82ef1e80bd7126046394d2dc9ca7e6 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + ipc/msg.c | 12 ++++++------ + kernel/sys.c | 13 +++++++------ + 2 files changed, 13 insertions(+), 12 deletions(-) + +--- a/ipc/msg.c ++++ b/ipc/msg.c +@@ -309,7 +309,7 @@ static inline int msg_security(struct ke + return security_msg_queue_associate(msq, msgflg); + } + +-asmlinkage long sys_msgget(key_t key, int msgflg) ++SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg) + { + struct ipc_namespace *ns; + struct ipc_ops msg_ops; +@@ -466,7 +466,7 @@ out_up: + return err; + } + +-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: + return err; + } + +-asmlinkage long +-sys_msgsnd(int msqid, struct msgbuf __user *msgp, size_t msgsz, int msgflg) ++SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, ++ int, msgflg) + { + long mtype; + +@@ -904,8 +904,8 @@ out_unlock: + return msgsz; + } + +-asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz, +- long msgtyp, int msgflg) ++SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, ++ long, msgtyp, int, msgflg) + { + long err, mtype; + +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -1329,7 +1329,7 @@ EXPORT_SYMBOL(in_egroup_p); + + DECLARE_RWSEM(uts_sem); + +-asmlinkage long sys_newuname(struct new_utsname __user * name) ++SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name) + { + int errno = 0; + +@@ -1406,7 +1406,7 @@ SYSCALL_DEFINE2(setdomainname, char __us + return errno; + } + +-asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim) ++SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim) + { + if (resource >= RLIM_NLIMITS) + return -EINVAL; +@@ -1425,7 +1425,8 @@ asmlinkage long sys_getrlimit(unsigned i + * Back compatibility for getrlimit. Needed for some apps. + */ + +-asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *rlim) ++SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource, ++ struct rlimit __user *, rlim) + { + struct rlimit x; + if (resource >= RLIM_NLIMITS) +@@ -1443,7 +1444,7 @@ asmlinkage long sys_old_getrlimit(unsign + + #endif + +-asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim) ++SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim) + { + struct rlimit new_rlim, *old_rlim; + unsigned long it_prof_secs; +@@ -1619,7 +1620,7 @@ 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) +@@ -1627,7 +1628,7 @@ asmlinkage long sys_getrusage(int who, s + return getrusage(current, who, ru); + } + +-asmlinkage long sys_umask(int mask) ++SYSCALL_DEFINE1(umask, int, mask) + { + mask = xchg(¤t->fs->umask, mask & S_IRWXUGO); + return mask; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215440.921514066@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:32 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 55/85] [PATCH 35/44] [CVE-2009-0029] System call wrappers part 25 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0035--CVE-2009-0029-System-call-wrappers-part-25.patch +Content-Length: 3042 +Lines: 105 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit d5460c9974a321a194aded4a8c4daaac68ea8171 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + ipc/mqueue.c | 6 +++--- + ipc/sem.c | 9 +++++---- + ipc/shm.c | 8 ++++---- + 3 files changed, 12 insertions(+), 11 deletions(-) + +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -647,8 +647,8 @@ static int oflag2acc[O_ACCMODE] = { MAY_ + return dentry_open(dentry, mqueue_mnt, oflag); + } + +-asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, +- struct mq_attr __user *u_attr) ++SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, mode_t, mode, ++ struct mq_attr __user *, u_attr) + { + struct dentry *dentry; + struct file *filp; +@@ -715,7 +715,7 @@ out_putname: + return fd; + } + +-asmlinkage long sys_mq_unlink(const char __user *u_name) ++SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name) + { + int err; + char *name; +--- a/ipc/sem.c ++++ b/ipc/sem.c +@@ -308,7 +308,7 @@ static inline int sem_more_checks(struct + return 0; + } + +-asmlinkage long sys_semget(key_t key, int nsems, int semflg) ++SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) + { + struct ipc_namespace *ns; + struct ipc_ops sem_ops; +@@ -1055,8 +1055,8 @@ out: + return un; + } + +-asmlinkage long sys_semtimedop(int semid, struct sembuf __user *tsops, +- unsigned nsops, const struct timespec __user *timeout) ++SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops, ++ unsigned, nsops, const struct timespec __user *, timeout) + { + int error = -EINVAL; + struct sem_array *sma; +@@ -1233,7 +1233,8 @@ out_free: + return error; + } + +-asmlinkage long sys_semop (int semid, struct sembuf __user *tsops, unsigned nsops) ++SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops, ++ unsigned, nsops) + { + return sys_semtimedop(semid, tsops, nsops, NULL); + } +--- a/ipc/shm.c ++++ b/ipc/shm.c +@@ -440,7 +440,7 @@ static inline int shm_more_checks(struct + return 0; + } + +-asmlinkage long sys_shmget (key_t key, size_t size, int shmflg) ++SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg) + { + struct ipc_namespace *ns; + struct ipc_ops shm_ops; +@@ -621,7 +621,7 @@ out_up: + return err; + } + +-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 shmid_kernel *shp; + int err, version; +@@ -941,7 +941,7 @@ out_put_dentry: + goto out_nattch; + } + +-asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg) ++SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) + { + unsigned long ret; + long err; +@@ -957,7 +957,7 @@ asmlinkage long sys_shmat(int shmid, cha + * detach and kill segment if marked destroyed. + * The work is done in shm_close. + */ +-asmlinkage long sys_shmdt(char __user *shmaddr) ++SYSCALL_DEFINE1(shmdt, char __user *, shmaddr) + { + struct mm_struct *mm = current->mm; + struct vm_area_struct *vma, *next; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.047611238@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:33 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 56/85] [PATCH 36/44] [CVE-2009-0029] System call wrappers part 26 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0036--CVE-2009-0029-System-call-wrappers-part-26.patch +Content-Length: 3907 +Lines: 127 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit c4ea37c26a691ad0b7e86aa5884aab27830e95c9 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/syscall.c | 12 ++++-------- + ipc/mqueue.c | 22 +++++++++++----------- + kernel/sys.c | 4 ++-- + mm/swapfile.c | 4 ++-- + 4 files changed, 19 insertions(+), 23 deletions(-) + +--- a/drivers/pci/syscall.c ++++ b/drivers/pci/syscall.c +@@ -14,10 +14,8 @@ + #include + #include "pci.h" + +-asmlinkage long +-sys_pciconfig_read(unsigned long bus, unsigned long dfn, +- unsigned long off, unsigned long len, +- void __user *buf) ++SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn, ++ unsigned long, off, unsigned long, len, void __user *, buf) + { + struct pci_dev *dev; + u8 byte; +@@ -86,10 +84,8 @@ error: + return err; + } + +-asmlinkage long +-sys_pciconfig_write(unsigned long bus, unsigned long dfn, +- unsigned long off, unsigned long len, +- void __user *buf) ++SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, ++ unsigned long, off, unsigned long, len, void __user *, buf) + { + struct pci_dev *dev; + u8 byte; +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -808,9 +808,9 @@ static inline void pipelined_receive(str + sender->state = STATE_READY; + } + +-asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr, +- size_t msg_len, unsigned int msg_prio, +- const struct timespec __user *u_abs_timeout) ++SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, ++ size_t, msg_len, unsigned int, msg_prio, ++ const struct timespec __user *, u_abs_timeout) + { + struct file *filp; + struct inode *inode; +@@ -896,9 +896,9 @@ out: + return ret; + } + +-asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, +- size_t msg_len, unsigned int __user *u_msg_prio, +- const struct timespec __user *u_abs_timeout) ++SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, ++ size_t, msg_len, unsigned int __user *, u_msg_prio, ++ const struct timespec __user *, u_abs_timeout) + { + long timeout; + ssize_t ret; +@@ -981,8 +981,8 @@ out: + * and he isn't currently owner of notification, will be silently discarded. + * It isn't explicitly defined in the POSIX. + */ +-asmlinkage long sys_mq_notify(mqd_t mqdes, +- const struct sigevent __user *u_notification) ++SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes, ++ const struct sigevent __user *, u_notification) + { + int ret; + struct file *filp; +@@ -1107,9 +1107,9 @@ out: + return ret; + } + +-asmlinkage long sys_mq_getsetattr(mqd_t mqdes, +- const struct mq_attr __user *u_mqstat, +- struct mq_attr __user *u_omqstat) ++SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, ++ const struct mq_attr __user *, u_mqstat, ++ struct mq_attr __user *, u_omqstat) + { + int ret; + struct mq_attr mqstat, omqstat; +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -1634,8 +1634,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; + +--- a/mm/swapfile.c ++++ b/mm/swapfile.c +@@ -1204,7 +1204,7 @@ int page_queue_congested(struct page *pa + } + #endif + +-asmlinkage long sys_swapoff(const char __user * specialfile) ++SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) + { + struct swap_info_struct * p = NULL; + unsigned short *swap_map; +@@ -1448,7 +1448,7 @@ __initcall(procswaps_init); + * + * The swapon system call + */ +-asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags) ++SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) + { + struct swap_info_struct * p; + char *name = NULL; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.172548904@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:34 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 57/85] [PATCH 37/44] [CVE-2009-0029] System call wrappers part 27 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0037--CVE-2009-0029-System-call-wrappers-part-27.patch +Content-Length: 4126 +Lines: 140 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 1e7bfb2134dfec37ce04fb3a4ca89299e892d10c upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/exec.c | 2 +- + fs/filesystems.c | 2 +- + fs/nfsctl.c | 4 ++-- + kernel/printk.c | 2 +- + kernel/ptrace.c | 2 +- + kernel/sysctl.c | 4 ++-- + kernel/timer.c | 2 +- + security/keys/keyctl.c | 18 +++++++++--------- + 8 files changed, 18 insertions(+), 18 deletions(-) + +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -105,7 +105,7 @@ static inline void put_binfmt(struct lin + * + * Also note that we take the address to load from from the file itself. + */ +-asmlinkage long sys_uselib(const char __user * library) ++SYSCALL_DEFINE1(uselib, const char __user *, library) + { + struct file *file; + struct nameidata nd; +--- a/fs/filesystems.c ++++ b/fs/filesystems.c +@@ -177,7 +177,7 @@ static int fs_maxindex(void) + /* + * Whee.. Weird sysv syscall. + */ +-asmlinkage long sys_sysfs(int option, unsigned long arg1, unsigned long arg2) ++SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2) + { + int retval = -EINVAL; + +--- a/fs/nfsctl.c ++++ b/fs/nfsctl.c +@@ -82,8 +82,8 @@ static struct { + }, + }; + +-long +-asmlinkage sys_nfsservctl(int cmd, struct nfsctl_arg __user *arg, void __user *res) ++SYSCALL_DEFINE3(nfsservctl, int, cmd, struct nfsctl_arg __user *, arg, ++ void __user *, res) + { + struct file *file; + void __user *p = &arg->u; +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -421,7 +421,7 @@ out: + return error; + } + +-asmlinkage long sys_syslog(int type, char __user *buf, int len) ++SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) + { + return do_syslog(type, buf, len); + } +--- a/kernel/ptrace.c ++++ b/kernel/ptrace.c +@@ -545,7 +545,7 @@ struct task_struct *ptrace_get_task_stru + #define arch_ptrace_attach(child) do { } while (0) + #endif + +-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; +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -1614,7 +1614,7 @@ int do_sysctl(int __user *name, int nlen + return error; + } + +-asmlinkage long sys_sysctl(struct __sysctl_args __user *args) ++SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args) + { + struct __sysctl_args tmp; + int error; +@@ -2925,7 +2925,7 @@ int sysctl_ms_jiffies(struct ctl_table * + #else /* CONFIG_SYSCTL_SYSCALL */ + + +-asmlinkage long sys_sysctl(struct __sysctl_args __user *args) ++SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args) + { + struct __sysctl_args tmp; + int error; +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1345,7 +1345,7 @@ out: + return 0; + } + +-asmlinkage long sys_sysinfo(struct sysinfo __user *info) ++SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info) + { + struct sysinfo val; + +--- a/security/keys/keyctl.c ++++ b/security/keys/keyctl.c +@@ -54,11 +54,11 @@ static int key_get_type_from_user(char * + * - returns the new key's serial number + * - implements add_key() + */ +-asmlinkage long sys_add_key(const char __user *_type, +- const char __user *_description, +- const void __user *_payload, +- size_t plen, +- key_serial_t ringid) ++SYSCALL_DEFINE5(add_key, const char __user *, _type, ++ const char __user *, _description, ++ const void __user *, _payload, ++ size_t, plen, ++ key_serial_t, ringid) + { + key_ref_t keyring_ref, key_ref; + char type[32], *description; +@@ -146,10 +146,10 @@ asmlinkage long sys_add_key(const char _ + * - if the _callout_info string is empty, it will be rendered as "-" + * - implements request_key() + */ +-asmlinkage long sys_request_key(const char __user *_type, +- const char __user *_description, +- const char __user *_callout_info, +- key_serial_t destringid) ++SYSCALL_DEFINE4(request_key, const char __user *, _type, ++ const char __user *, _description, ++ const char __user *, _callout_info, ++ key_serial_t, destringid) + { + struct key_type *ktype; + struct key *key; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.302395156@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:35 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 58/85] [PATCH 38/44] [CVE-2009-0029] System call wrappers part 28 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0038--CVE-2009-0029-System-call-wrappers-part-28.patch +Content-Length: 4425 +Lines: 144 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 938bb9f5e840eddbf54e4f62f6c5ba9b3ae12c9d upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/inotify_user.c | 4 ++-- + fs/ioprio.c | 5 ++--- + mm/mempolicy.c | 24 +++++++++++------------- + mm/migrate.c | 8 ++++---- + security/keys/keyctl.c | 4 ++-- + 5 files changed, 21 insertions(+), 24 deletions(-) + +--- a/fs/inotify_user.c ++++ b/fs/inotify_user.c +@@ -579,7 +579,7 @@ static const struct inotify_operations i + .destroy_watch = free_inotify_user_watch, + }; + +-asmlinkage long sys_inotify_init1(int flags) ++SYSCALL_DEFINE1(inotify_init1, int, flags) + { + struct inotify_device *dev; + struct inotify_handle *ih; +@@ -658,7 +658,7 @@ out_put_fd: + return ret; + } + +-asmlinkage long sys_inotify_init(void) ++SYSCALL_DEFINE0(inotify_init) + { + return sys_inotify_init1(0); + } +--- a/fs/ioprio.c ++++ b/fs/ioprio.c +@@ -65,7 +65,7 @@ static int set_task_ioprio(struct task_s + return err; + } + +-asmlinkage long sys_ioprio_set(int which, int who, int ioprio) ++SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio) + { + int class = IOPRIO_PRIO_CLASS(ioprio); + int data = IOPRIO_PRIO_DATA(ioprio); +@@ -181,7 +181,7 @@ int ioprio_best(unsigned short aprio, un + return aprio; + } + +-asmlinkage long sys_ioprio_get(int which, int who) ++SYSCALL_DEFINE2(ioprio_get, int, which, int, who) + { + struct task_struct *g, *p; + struct user_struct *user; +@@ -245,4 +245,3 @@ asmlinkage long sys_ioprio_get(int which + read_unlock(&tasklist_lock); + return ret; + } +- +--- a/mm/mempolicy.c ++++ b/mm/mempolicy.c +@@ -1059,10 +1059,9 @@ static int copy_nodes_to_user(unsigned l + return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0; + } + +-asmlinkage long sys_mbind(unsigned long start, unsigned long len, +- unsigned long mode, +- unsigned long __user *nmask, unsigned long maxnode, +- unsigned flags) ++SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len, ++ unsigned long, mode, unsigned long __user *, nmask, ++ unsigned long, maxnode, unsigned, flags) + { + nodemask_t nodes; + int err; +@@ -1082,8 +1081,8 @@ asmlinkage long sys_mbind(unsigned long + } + + /* Set the process memory policy */ +-asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask, +- unsigned long maxnode) ++SYSCALL_DEFINE3(set_mempolicy, int, mode, unsigned long __user *, nmask, ++ unsigned long, maxnode) + { + int err; + nodemask_t nodes; +@@ -1101,9 +1100,9 @@ asmlinkage long sys_set_mempolicy(int mo + return do_set_mempolicy(mode, flags, &nodes); + } + +-asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode, +- const unsigned long __user *old_nodes, +- const unsigned long __user *new_nodes) ++SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, ++ const unsigned long __user *, old_nodes, ++ const unsigned long __user *, new_nodes) + { + struct mm_struct *mm; + struct task_struct *task; +@@ -1171,10 +1170,9 @@ out: + + + /* Retrieve NUMA policy */ +-asmlinkage long sys_get_mempolicy(int __user *policy, +- unsigned long __user *nmask, +- unsigned long maxnode, +- unsigned long addr, unsigned long flags) ++SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, ++ unsigned long __user *, nmask, unsigned long, maxnode, ++ unsigned long, addr, unsigned long, flags) + { + int err; + int uninitialized_var(pval); +--- a/mm/migrate.c ++++ b/mm/migrate.c +@@ -979,10 +979,10 @@ set_status: + * Move a list of pages in the address space of the currently executing + * process. + */ +-asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages, +- const void __user * __user *pages, +- const int __user *nodes, +- int __user *status, int flags) ++SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, ++ const void __user * __user *, pages, ++ const int __user *, nodes, ++ int __user *, status, int, flags) + { + int err = 0; + int i; +--- a/security/keys/keyctl.c ++++ b/security/keys/keyctl.c +@@ -1152,8 +1152,8 @@ long keyctl_get_security(key_serial_t ke + /* + * the key control system call + */ +-asmlinkage long sys_keyctl(int option, unsigned long arg2, unsigned long arg3, +- unsigned long arg4, unsigned long arg5) ++SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3, ++ unsigned long, arg4, unsigned long, arg5) + { + switch (option) { + case KEYCTL_GET_KEYRING_ID: + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.427585438@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:36 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 59/85] [PATCH 39/44] [CVE-2009-0029] System call wrappers part 29 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0039--CVE-2009-0029-System-call-wrappers-part-29.patch +Content-Length: 3003 +Lines: 98 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 2e4d0924eb0c403ce4014fa139d1d61bf2c44fee upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/inotify_user.c | 5 +++-- + fs/namei.c | 21 ++++++++++----------- + 2 files changed, 13 insertions(+), 13 deletions(-) + +--- a/fs/inotify_user.c ++++ b/fs/inotify_user.c +@@ -663,7 +663,8 @@ SYSCALL_DEFINE0(inotify_init) + return sys_inotify_init1(0); + } + +-asmlinkage long sys_inotify_add_watch(int fd, const char __user *pathname, u32 mask) ++SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, ++ u32, mask) + { + struct inode *inode; + struct inotify_device *dev; +@@ -707,7 +708,7 @@ fput_and_out: + return ret; + } + +-asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd) ++SYSCALL_DEFINE2(inotify_rm_watch, int, fd, __s32, wd) + { + struct file *filp; + struct inotify_device *dev; +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -1990,8 +1990,8 @@ static int may_mknod(mode_t mode) + } + } + +-asmlinkage long sys_mknodat(int dfd, const char __user *filename, int mode, +- unsigned dev) ++SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode, ++ unsigned, dev) + { + int error; + char *tmp; +@@ -2068,7 +2068,7 @@ int vfs_mkdir(struct inode *dir, struct + return error; + } + +-asmlinkage long sys_mkdirat(int dfd, const char __user *pathname, int mode) ++SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode) + { + int error = 0; + char * tmp; +@@ -2297,7 +2297,7 @@ slashes: + goto exit2; + } + +-asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag) ++SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag) + { + if ((flag & ~AT_REMOVEDIR) != 0) + return -EINVAL; +@@ -2334,8 +2334,8 @@ int vfs_symlink(struct inode *dir, struc + return error; + } + +-asmlinkage long sys_symlinkat(const char __user *oldname, +- int newdfd, const char __user *newname) ++SYSCALL_DEFINE3(symlinkat, const char __user *, oldname, ++ int, newdfd, const char __user *, newname) + { + int error; + char *from; +@@ -2424,9 +2424,8 @@ int vfs_link(struct dentry *old_dentry, + * with linux 2.0, and to avoid hard-linking to directories + * and other special files. --ADM + */ +-asmlinkage long sys_linkat(int olddfd, const char __user *oldname, +- int newdfd, const char __user *newname, +- int flags) ++SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, ++ int, newdfd, const char __user *, newname, int, flags) + { + struct dentry *new_dentry; + struct nameidata nd; +@@ -2622,8 +2621,8 @@ int vfs_rename(struct inode *old_dir, st + return error; + } + +-asmlinkage long sys_renameat(int olddfd, const char __user *oldname, +- int newdfd, const char __user *newname) ++SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname, ++ int, newdfd, const char __user *, newname) + { + struct dentry *old_dir, *new_dir; + struct dentry *old_dentry, *new_dentry; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.556225531@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:37 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 60/85] [PATCH 40/44] [CVE-2009-0029] System call wrappers part 30 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0040--CVE-2009-0029-System-call-wrappers-part-30.patch +Content-Length: 3886 +Lines: 125 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 6559eed8ca7db0531a207cd80be5e28cd6f213c5 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/open.c | 13 ++++++------- + fs/stat.c | 12 ++++++------ + fs/utimes.c | 6 ++++-- + kernel/fork.c | 2 +- + 4 files changed, 17 insertions(+), 16 deletions(-) + +--- a/fs/open.c ++++ b/fs/open.c +@@ -442,7 +442,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. + */ +-asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode) ++SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode) + { + struct path path; + struct inode *inode; +@@ -633,8 +633,7 @@ out: + return err; + } + +-asmlinkage long sys_fchmodat(int dfd, const char __user *filename, +- mode_t mode) ++SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, mode_t, mode) + { + struct path path; + struct inode *inode; +@@ -712,8 +711,8 @@ out: + return error; + } + +-asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user, +- gid_t group, int flag) ++SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user, ++ gid_t, group, int, flag) + { + struct path path; + int error = -EINVAL; +@@ -1060,8 +1059,8 @@ SYSCALL_DEFINE3(open, const char __user + return ret; + } + +-asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, +- int mode) ++SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags, ++ int, mode) + { + long ret; + +--- a/fs/stat.c ++++ b/fs/stat.c +@@ -260,8 +260,8 @@ SYSCALL_DEFINE2(newlstat, char __user *, + } + + #if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT) +-asmlinkage long sys_newfstatat(int dfd, char __user *filename, +- struct stat __user *statbuf, int flag) ++SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename, ++ struct stat __user *, statbuf, int, flag) + { + struct kstat stat; + int error = -EINVAL; +@@ -293,8 +293,8 @@ SYSCALL_DEFINE2(newfstat, unsigned int, + return error; + } + +-asmlinkage long sys_readlinkat(int dfd, const char __user *pathname, +- char __user *buf, int bufsiz) ++SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname, ++ char __user *, buf, int, bufsiz) + { + struct path path; + int error; +@@ -400,8 +400,8 @@ SYSCALL_DEFINE2(fstat64, unsigned long, + return error; + } + +-asmlinkage long sys_fstatat64(int dfd, char __user *filename, +- struct stat64 __user *statbuf, int flag) ++SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename, ++ struct stat64 __user *, statbuf, int, flag) + { + struct kstat stat; + int error = -EINVAL; +--- a/fs/utimes.c ++++ b/fs/utimes.c +@@ -170,7 +170,8 @@ out: + return error; + } + +-asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags) ++SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename, ++ struct timespec __user *, utimes, int, flags) + { + struct timespec tstimes[2]; + +@@ -187,7 +188,8 @@ asmlinkage long sys_utimensat(int dfd, c + return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags); + } + +-asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes) ++SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename, ++ struct timeval __user *, utimes) + { + struct timeval times[2]; + struct timespec tstimes[2]; +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1561,7 +1561,7 @@ static int unshare_fd(unsigned long unsh + * constructed. Here we are modifying the current, active, + * task_struct. + */ +-asmlinkage long sys_unshare(unsigned long unshare_flags) ++SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) + { + int err = 0; + struct fs_struct *fs, *new_fs = NULL; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.713741289@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:38 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 61/85] [PATCH 41/44] [CVE-2009-0029] System call wrappers part 31 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0041--CVE-2009-0029-System-call-wrappers-part-31.patch +Content-Length: 4356 +Lines: 138 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 836f92adf121f806e9beb5b6b88bd5c9c4ea3f24 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/signalfd.c | 8 ++++---- + fs/splice.c | 12 ++++++------ + fs/timerfd.c | 8 ++++---- + kernel/futex.c | 11 +++++------ + kernel/sys.c | 4 ++-- + 5 files changed, 21 insertions(+), 22 deletions(-) + +--- a/fs/signalfd.c ++++ b/fs/signalfd.c +@@ -205,8 +205,8 @@ static const struct file_operations sign + .read = signalfd_read, + }; + +-asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, +- size_t sizemask, int flags) ++SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, ++ size_t, sizemask, int, flags) + { + sigset_t sigmask; + struct signalfd_ctx *ctx; +@@ -259,8 +259,8 @@ asmlinkage long sys_signalfd4(int ufd, s + return ufd; + } + +-asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, +- size_t sizemask) ++SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask, ++ size_t, sizemask) + { + return sys_signalfd4(ufd, user_mask, sizemask, 0); + } +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -1434,8 +1434,8 @@ static long vmsplice_to_pipe(struct file + * Currently we punt and implement it as a normal copy, see pipe_to_user(). + * + */ +-asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov, +- unsigned long nr_segs, unsigned int flags) ++SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov, ++ unsigned long, nr_segs, unsigned int, flags) + { + struct file *file; + long error; +@@ -1460,9 +1460,9 @@ asmlinkage long sys_vmsplice(int fd, con + return error; + } + +-asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, +- int fd_out, loff_t __user *off_out, +- size_t len, unsigned int flags) ++SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in, ++ int, fd_out, loff_t __user *, off_out, ++ size_t, len, unsigned int, flags) + { + long error; + struct file *in, *out; +@@ -1684,7 +1684,7 @@ static long do_tee(struct file *in, stru + return ret; + } + +-asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags) ++SYSCALL_DEFINE4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags) + { + struct file *in; + int error, fput_in; +--- a/fs/timerfd.c ++++ b/fs/timerfd.c +@@ -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; +@@ -210,9 +210,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; +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -1797,9 +1797,8 @@ pi_faulted: + * @head: pointer to the list-head + * @len: length of the list-head, as userspace expects + */ +-asmlinkage long +-sys_set_robust_list(struct robust_list_head __user *head, +- size_t len) ++SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head, ++ size_t, len) + { + if (!futex_cmpxchg_enabled) + return -ENOSYS; +@@ -1820,9 +1819,9 @@ sys_set_robust_list(struct robust_list_h + * @head_ptr: pointer to a list-head pointer, the kernel fills it in + * @len_ptr: pointer to a length field, the kernel fills in the header size + */ +-asmlinkage long +-sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr, +- size_t __user *len_ptr) ++SYSCALL_DEFINE3(get_robust_list, int, pid, ++ struct robust_list_head __user * __user *, head_ptr, ++ size_t __user *, len_ptr) + { + struct robust_list_head __user *head; + unsigned long ret; +--- a/kernel/sys.c ++++ b/kernel/sys.c +@@ -1736,8 +1736,8 @@ SYSCALL_DEFINE5(prctl, int, option, unsi + return error; + } + +-asmlinkage long sys_getcpu(unsigned __user *cpup, unsigned __user *nodep, +- struct getcpu_cache __user *unused) ++SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep, ++ struct getcpu_cache __user *, unused) + { + int err = 0; + int cpu = raw_smp_processor_id(); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:41 2009 +Message-Id: <20090115215441.837940664@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:39 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 62/85] [PATCH 42/44] [CVE-2009-0029] System call wrappers part 32 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0042--CVE-2009-0029-System-call-wrappers-part-32.patch +Content-Length: 4633 +Lines: 142 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit d4e82042c4cfa87a7d51710b71f568fe80132551 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/eventfd.c | 5 ++--- + fs/pipe.c | 2 +- + fs/readdir.c | 3 ++- + fs/select.c | 11 ++++++----- + fs/timerfd.c | 2 +- + include/linux/syscalls.h | 7 +++++++ + kernel/signal.c | 11 +++++------ + 7 files changed, 24 insertions(+), 17 deletions(-) + +--- a/fs/eventfd.c ++++ b/fs/eventfd.c +@@ -198,7 +198,7 @@ struct file *eventfd_fget(int fd) + return file; + } + +-asmlinkage long sys_eventfd2(unsigned int count, int flags) ++SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags) + { + int fd; + struct eventfd_ctx *ctx; +@@ -228,8 +228,7 @@ asmlinkage long sys_eventfd2(unsigned in + return fd; + } + +-asmlinkage long sys_eventfd(unsigned int count) ++SYSCALL_DEFINE1(eventfd, unsigned int, count) + { + return sys_eventfd2(count, 0); + } +- +--- a/fs/pipe.c ++++ b/fs/pipe.c +@@ -1051,7 +1051,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. + */ +-asmlinkage long sys_pipe2(int __user *fildes, int flags) ++SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags) + { + int fd[2]; + int error; +--- a/fs/readdir.c ++++ b/fs/readdir.c +@@ -102,7 +102,8 @@ efault: + return -EFAULT; + } + +-asmlinkage long sys_old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count) ++SYSCALL_DEFINE3(old_readdir, unsigned int, fd, ++ struct old_linux_dirent __user *, dirent, unsigned int, count) + { + int error; + struct file * file; +--- a/fs/select.c ++++ b/fs/select.c +@@ -513,8 +513,9 @@ sticky: + * which has a pointer to the sigset_t itself followed by a size_t containing + * the sigset size. + */ +-asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp, +- fd_set __user *exp, struct timespec __user *tsp, void __user *sig) ++SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp, ++ fd_set __user *, exp, struct timespec __user *, tsp, ++ void __user *, sig) + { + size_t sigsetsize = 0; + sigset_t __user *up = NULL; +@@ -761,9 +762,9 @@ SYSCALL_DEFINE3(poll, struct pollfd __us + } + + #ifdef HAVE_SET_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) ++SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, unsigned int, nfds, ++ struct timespec __user *, tsp, const sigset_t __user *, sigmask, ++ size_t, sigsetsize) + { + sigset_t ksigmask, sigsaved; + struct timespec ts; +--- a/fs/timerfd.c ++++ b/fs/timerfd.c +@@ -267,7 +267,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; +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -679,6 +679,13 @@ asmlinkage long sys_eventfd(unsigned int + asmlinkage long sys_eventfd2(unsigned int count, int flags); + 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); ++asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *, ++ fd_set __user *, struct timespec __user *, ++ void __user *); ++asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int, ++ struct timespec __user *, const sigset_t __user *, ++ size_t); ++asmlinkage long sys_pipe2(int __user *, int); + + int kernel_execve(const char *filename, char *const argv[], char *const envp[]); + +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -2466,11 +2466,10 @@ out: + #endif /* __ARCH_WANT_SYS_SIGPROCMASK */ + + #ifdef __ARCH_WANT_SYS_RT_SIGACTION +-asmlinkage long +-sys_rt_sigaction(int sig, +- const struct sigaction __user *act, +- struct sigaction __user *oact, +- size_t sigsetsize) ++SYSCALL_DEFINE4(rt_sigaction, int, sig, ++ const struct sigaction __user *, act, ++ struct sigaction __user *, oact, ++ size_t, sigsetsize) + { + struct k_sigaction new_sa, old_sa; + int ret = -EINVAL; +@@ -2553,7 +2552,7 @@ SYSCALL_DEFINE0(pause) + #endif + + #ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND +-asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) ++SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize) + { + sigset_t newset; + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215441.976173526@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:40 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 63/85] [PATCH 43/44] [CVE-2009-0029] System call wrappers part 33 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0043--CVE-2009-0029-System-call-wrappers-part-33.patch +Content-Length: 957 +Lines: 33 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 2b66421995d2e93c9d1a0111acf2581f8529c6e5 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + fs/pipe.c | 2 +- + include/linux/syscalls.h | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/fs/pipe.c ++++ b/fs/pipe.c +@@ -1067,7 +1067,7 @@ SYSCALL_DEFINE2(pipe2, int __user *, fil + return error; + } + +-asmlinkage long sys_pipe(int __user *fildes) ++SYSCALL_DEFINE1(pipe, int __user *, fildes) + { + return sys_pipe2(fildes, 0); + } +--- a/include/linux/syscalls.h ++++ b/include/linux/syscalls.h +@@ -686,6 +686,7 @@ asmlinkage long sys_ppoll(struct pollfd + struct timespec __user *, const sigset_t __user *, + size_t); + asmlinkage long sys_pipe2(int __user *, int); ++asmlinkage long sys_pipe(int __user *); + + int kernel_execve(const char *filename, char *const argv[], char *const envp[]); + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.125654955@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:41 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Heiko Carstens +Subject: [patch 64/85] [PATCH 44/44] [CVE-2009-0029] s390 specific system call wrappers +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=0044--CVE-2009-0029-s390-specific-system-call-wrappers.patch +Content-Length: 12894 +Lines: 350 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 26689452f5ca201add63b1b1ff0dbcf82d6885e7 upstream. + +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + arch/s390/kernel/compat_wrapper.S | 4 ++-- + arch/s390/kernel/entry.h | 15 ++++++++------- + arch/s390/kernel/process.c | 9 +++++---- + arch/s390/kernel/signal.c | 19 ++++++++----------- + arch/s390/kernel/sys_s390.c | 35 +++++++++++++++++++++-------------- + arch/s390/kernel/syscalls.S | 12 ++++++------ + 6 files changed, 50 insertions(+), 44 deletions(-) + +--- a/arch/s390/kernel/compat_wrapper.S ++++ b/arch/s390/kernel/compat_wrapper.S +@@ -549,7 +549,7 @@ sys32_setdomainname_wrapper: + .globl sys32_newuname_wrapper + sys32_newuname_wrapper: + llgtr %r2,%r2 # struct new_utsname * +- jg s390x_newuname # branch to system call ++ jg sys_s390_newuname # branch to system call + + .globl compat_sys_adjtimex_wrapper + compat_sys_adjtimex_wrapper: +@@ -617,7 +617,7 @@ sys32_sysfs_wrapper: + .globl sys32_personality_wrapper + sys32_personality_wrapper: + llgfr %r2,%r2 # unsigned long +- jg s390x_personality # branch to system call ++ jg sys_s390_personality # branch to system call + + .globl sys32_setfsuid16_wrapper + sys32_setfsuid16_wrapper: +--- a/arch/s390/kernel/entry.h ++++ b/arch/s390/kernel/entry.h +@@ -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); +--- a/arch/s390/kernel/process.c ++++ b/arch/s390/kernel/process.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -257,13 +258,13 @@ int copy_thread(int nr, unsigned long cl + return 0; + } + +-asmlinkage long sys_fork(void) ++SYSCALL_DEFINE0(fork) + { + struct pt_regs *regs = task_pt_regs(current); + return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL); + } + +-asmlinkage long sys_clone(void) ++SYSCALL_DEFINE0(clone) + { + struct pt_regs *regs = task_pt_regs(current); + unsigned long clone_flags; +@@ -290,7 +291,7 @@ asmlinkage long sys_clone(void) + * do not have enough call-clobbered registers to hold all + * the information you need. + */ +-asmlinkage long sys_vfork(void) ++SYSCALL_DEFINE0(vfork) + { + struct pt_regs *regs = task_pt_regs(current); + return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, +@@ -310,7 +311,7 @@ asmlinkage void execve_tail(void) + /* + * sys_execve() executes a new program. + */ +-asmlinkage long sys_execve(void) ++SYSCALL_DEFINE0(execve) + { + struct pt_regs *regs = task_pt_regs(current); + char *filename; +--- a/arch/s390/kernel/signal.c ++++ b/arch/s390/kernel/signal.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -52,8 +53,7 @@ typedef struct + /* + * Atomically swap in the new signal mask, and wait for a signal. + */ +-asmlinkage int +-sys_sigsuspend(int history0, int history1, old_sigset_t mask) ++SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask) + { + mask &= _BLOCKABLE; + spin_lock_irq(¤t->sighand->siglock); +@@ -69,9 +69,8 @@ sys_sigsuspend(int history0, int history + return -ERESTARTNOHAND; + } + +-asmlinkage long +-sys_sigaction(int sig, const struct old_sigaction __user *act, +- struct old_sigaction __user *oact) ++SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act, ++ struct old_sigaction __user *, oact) + { + struct k_sigaction new_ka, old_ka; + int ret; +@@ -101,15 +100,13 @@ sys_sigaction(int sig, const struct old_ + return ret; + } + +-asmlinkage long +-sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) ++SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss, ++ stack_t __user *, uoss) + { + struct pt_regs *regs = task_pt_regs(current); + return do_sigaltstack(uss, uoss, regs->gprs[15]); + } + +- +- + /* Returns non-zero on fault. */ + static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs) + { +@@ -163,7 +160,7 @@ static int restore_sigregs(struct pt_reg + return 0; + } + +-asmlinkage long sys_sigreturn(void) ++SYSCALL_DEFINE0(sigreturn) + { + struct pt_regs *regs = task_pt_regs(current); + sigframe __user *frame = (sigframe __user *)regs->gprs[15]; +@@ -190,7 +187,7 @@ badframe: + return 0; + } + +-asmlinkage long sys_rt_sigreturn(void) ++SYSCALL_DEFINE0(rt_sigreturn) + { + struct pt_regs *regs = task_pt_regs(current); + rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15]; +--- a/arch/s390/kernel/syscalls.S ++++ b/arch/s390/kernel/syscalls.S +@@ -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) + SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */ +-SYSCALL(old_mmap,old_mmap,old32_mmap_wrapper) /* 90 */ ++SYSCALL(sys_s390_old_mmap,sys_s390_old_mmap,old32_mmap_wrapper) /* 90 */ + SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper) + SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper) + SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper) +@@ -130,7 +130,7 @@ SYSCALL(sys_fsync,sys_fsync,sys32_fsync_ + SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) + SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */ + SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper) +-SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper) ++SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper) + NI_SYSCALL /* modify_ldt for i386 */ + SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) + SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ +@@ -144,7 +144,7 @@ SYSCALL(sys_getpgid,sys_getpgid,sys32_ge + SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper) + SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper) + SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */ +-SYSCALL(sys_personality,s390x_personality,sys32_personality_wrapper) ++SYSCALL(sys_personality,sys_s390_personality,sys32_personality_wrapper) + NI_SYSCALL /* for afs_syscall */ + SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */ + SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */ +@@ -261,7 +261,7 @@ SYSCALL(sys_epoll_create,sys_epoll_creat + SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */ + SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper) + SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper) +-SYSCALL(s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper) ++SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper) + SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper) + SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */ + SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper) +@@ -272,7 +272,7 @@ SYSCALL(sys_clock_gettime,sys_clock_gett + SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper) + SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper) + NI_SYSCALL /* reserved for vserver */ +-SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) ++SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) + SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper) + SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper) + SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper) +@@ -322,7 +322,7 @@ NI_SYSCALL /* 310 sys_move_pages * + SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) + SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper) + SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper) +-SYSCALL(s390_fallocate,sys_fallocate,sys_fallocate_wrapper) ++SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper) + SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */ + SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper) + NI_SYSCALL /* 317 old sys_timer_fd */ +--- a/arch/s390/kernel/sys_s390.c ++++ b/arch/s390/kernel/sys_s390.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include "entry.h" + +@@ -74,7 +75,7 @@ struct mmap_arg_struct { + unsigned long offset; + }; + +-asmlinkage long sys_mmap2(struct mmap_arg_struct __user *arg) ++SYSCALL_DEFINE1(mmap2, struct mmap_arg_struct __user *, arg) + { + struct mmap_arg_struct a; + int error = -EFAULT; +@@ -86,7 +87,7 @@ out: + return error; + } + +-asmlinkage long old_mmap(struct mmap_arg_struct __user *arg) ++SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct __user *, arg) + { + struct mmap_arg_struct a; + long error = -EFAULT; +@@ -127,8 +128,8 @@ asmlinkage long old_select(struct sel_ar + * + * This is really horribly ugly. + */ +-asmlinkage long sys_ipc(uint call, int first, unsigned long second, +- unsigned long third, void __user *ptr) ++SYSCALL_DEFINE5(ipc, uint, call, int, first, unsigned long, second, ++ unsigned long, third, void __user *, ptr) + { + struct ipc_kludge tmp; + int ret; +@@ -194,7 +195,7 @@ asmlinkage long sys_ipc(uint call, int f + } + + #ifdef CONFIG_64BIT +-asmlinkage long s390x_newuname(struct new_utsname __user *name) ++SYSCALL_DEFINE1(s390_newuname, struct new_utsname __user *, name) + { + int ret = sys_newuname(name); + +@@ -205,7 +206,7 @@ asmlinkage long s390x_newuname(struct ne + return ret; + } + +-asmlinkage long s390x_personality(unsigned long personality) ++SYSCALL_DEFINE1(s390_personality, unsigned long, personality) + { + int ret; + +@@ -224,15 +225,13 @@ asmlinkage long s390x_personality(unsign + */ + #ifndef CONFIG_64BIT + +-asmlinkage long +-s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice) ++SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, offset_high, u32, offset_low, ++ size_t, len, int, advice) + { + return sys_fadvise64(fd, (u64) offset_high << 32 | offset_low, + len, advice); + } + +-#endif +- + struct fadvise64_64_args { + int fd; + long long offset; +@@ -240,8 +239,7 @@ struct fadvise64_64_args { + int advice; + }; + +-asmlinkage long +-s390_fadvise64_64(struct fadvise64_64_args __user *args) ++SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args) + { + struct fadvise64_64_args a; + +@@ -250,7 +248,6 @@ s390_fadvise64_64(struct fadvise64_64_ar + return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice); + } + +-#ifndef CONFIG_64BIT + /* + * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last + * 64 bit argument "len" is split into the upper and lower 32 bits. The +@@ -263,9 +260,19 @@ s390_fadvise64_64(struct fadvise64_64_ar + * to + * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len + */ +-asmlinkage long s390_fallocate(int fd, int mode, loff_t offset, ++SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset, + u32 len_high, u32 len_low) + { + return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low); + } ++#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS ++asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset, ++ long len_high, long len_low) ++{ ++ return SYSC_s390_fallocate((int) fd, (int) mode, offset, ++ (u32) len_high, (u32) len_low); ++} ++SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate); ++#endif ++ + #endif + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.273453418@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:42 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jeff Kirsher , + Jesse Brandeburg , + "David S. Miller" , + Bryon Roche +Subject: [patch 65/85] e1000e: fix IPMI traffic +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=e1000e-fix-ipmi-traffic.patch +Content-Length: 4911 +Lines: 155 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Jeff Kirsher + +commit eb7c3adb1ca92450870dbb0d347fc986cd5e2af4 upstream. + +Some users reported that they have machines with BMCs enabled that cannot +receive IPMI traffic after e1000e is loaded. +http://marc.info/?l=e1000-devel&m=121909039127414&w=2 +http://marc.info/?l=e1000-devel&m=121365543823387&w=2 + +This fixes the issue if they load with the new parameter = 0 by disabling +crc stripping, but leaves the performance feature on for most users. +Based on work done by Hong Zhang. + +Signed-off-by: Jeff Kirsher +Signed-off-by: Jesse Brandeburg +Signed-off-by: David S. Miller +Cc: Bryon Roche +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/e1000e/e1000.h | 5 +++++ + drivers/net/e1000e/netdev.c | 23 +++++++++++++++++++++-- + drivers/net/e1000e/param.c | 25 +++++++++++++++++++++++++ + 3 files changed, 51 insertions(+), 2 deletions(-) + +--- a/drivers/net/e1000e/e1000.h ++++ b/drivers/net/e1000e/e1000.h +@@ -283,6 +283,7 @@ struct e1000_adapter { + unsigned long led_status; + + unsigned int flags; ++ unsigned int flags2; + struct work_struct downshift_task; + struct work_struct update_phy_task; + }; +@@ -290,6 +291,7 @@ struct e1000_adapter { + struct e1000_info { + enum e1000_mac_type mac; + unsigned int flags; ++ unsigned int flags2; + u32 pba; + s32 (*get_variants)(struct e1000_adapter *); + struct e1000_mac_operations *mac_ops; +@@ -330,6 +332,9 @@ struct e1000_info { + #define FLAG_RX_RESTART_NOW (1 << 30) + #define FLAG_MSI_TEST_FAILED (1 << 31) + ++/* CRC Stripping defines */ ++#define FLAG2_CRC_STRIPPING (1 << 0) ++ + #define E1000_RX_DESC_PS(R, i) \ + (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) + #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i])) +--- a/drivers/net/e1000e/netdev.c ++++ b/drivers/net/e1000e/netdev.c +@@ -497,6 +497,10 @@ static bool e1000_clean_rx_irq(struct e1 + goto next_desc; + } + ++ /* adjust length to remove Ethernet CRC */ ++ if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) ++ length -= 4; ++ + total_rx_bytes += length; + total_rx_packets++; + +@@ -802,6 +806,10 @@ static bool e1000_clean_rx_irq_ps(struct + pci_dma_sync_single_for_device(pdev, ps_page->dma, + PAGE_SIZE, PCI_DMA_FROMDEVICE); + ++ /* remove the CRC */ ++ if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) ++ l1 -= 4; ++ + skb_put(skb, l1); + goto copydone; + } /* if */ +@@ -823,6 +831,12 @@ static bool e1000_clean_rx_irq_ps(struct + skb->truesize += length; + } + ++ /* strip the ethernet crc, problem is we're using pages now so ++ * this whole operation can get a little cpu intensive ++ */ ++ if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) ++ pskb_trim(skb, skb->len - 4); ++ + copydone: + total_rx_bytes += skb->len; + total_rx_packets++; +@@ -1987,8 +2001,12 @@ static void e1000_setup_rctl(struct e100 + else + rctl |= E1000_RCTL_LPE; + +- /* Enable hardware CRC frame stripping */ +- rctl |= E1000_RCTL_SECRC; ++ /* Some systems expect that the CRC is included in SMBUS traffic. The ++ * hardware strips the CRC before sending to both SMBUS (BMC) and to ++ * host memory when this is enabled ++ */ ++ if (adapter->flags2 & FLAG2_CRC_STRIPPING) ++ rctl |= E1000_RCTL_SECRC; + + /* Setup buffer sizes */ + rctl &= ~E1000_RCTL_SZ_4096; +@@ -4412,6 +4430,7 @@ static int __devinit e1000_probe(struct + adapter->ei = ei; + adapter->pba = ei->pba; + adapter->flags = ei->flags; ++ adapter->flags2 = ei->flags2; + adapter->hw.adapter = adapter; + adapter->hw.mac.type = ei->mac; + adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1; +--- a/drivers/net/e1000e/param.c ++++ b/drivers/net/e1000e/param.c +@@ -142,6 +142,16 @@ E1000_PARAM(KumeranLockLoss, "Enable Kum + */ + E1000_PARAM(WriteProtectNVM, "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]"); + ++/* ++ * Enable CRC Stripping ++ * ++ * Valid Range: 0, 1 ++ * ++ * Default Value: 1 (enabled) ++ */ ++E1000_PARAM(CrcStripping, "Enable CRC Stripping, disable if your BMC needs " \ ++ "the CRC"); ++ + struct e1000_option { + enum { enable_option, range_option, list_option } type; + const char *name; +@@ -377,6 +387,21 @@ void __devinit e1000e_check_options(stru + adapter->flags |= FLAG_SMART_POWER_DOWN; + } + } ++ { /* CRC Stripping */ ++ const struct e1000_option opt = { ++ .type = enable_option, ++ .name = "CRC Stripping", ++ .err = "defaulting to enabled", ++ .def = OPTION_ENABLED ++ }; ++ ++ if (num_CrcStripping > bd) { ++ unsigned int crc_stripping = CrcStripping[bd]; ++ e1000_validate_option(&crc_stripping, &opt, adapter); ++ if (crc_stripping == OPTION_ENABLED) ++ adapter->flags2 |= FLAG2_CRC_STRIPPING; ++ } ++ } + { /* Kumeran Lock Loss Workaround */ + const struct e1000_option opt = { + .type = enable_option, + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.411774979@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:43 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Tyler Hicks , + Dustin Kirkland , + ecryptfs-devel@lists.launchpad.net, + Duane Griffin , + Michael Halcrow , + Al Viro +Subject: [patch 66/85] eCryptfs: check readlink result was not an error before using it +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=ecryptfs-check-readlink-result-was-not-an-error-before-using-it.patch +Content-Length: 1196 +Lines: 37 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Duane Griffin + +commit a17d5232de7b53d34229de79ec22f4bb04adb7e4 upstream. + +The result from readlink is being used to index into the link name +buffer without checking whether it is a valid length. If readlink +returns an error this will fault or cause memory corruption. + +Cc: Tyler Hicks +Cc: Dustin Kirkland +Cc: ecryptfs-devel@lists.launchpad.net +Signed-off-by: Duane Griffin +Acked-by: Michael Halcrow +Acked-by: Tyler Hicks +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ecryptfs/inode.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/fs/ecryptfs/inode.c ++++ b/fs/ecryptfs/inode.c +@@ -673,10 +673,11 @@ static void *ecryptfs_follow_link(struct + ecryptfs_printk(KERN_DEBUG, "Calling readlink w/ " + "dentry->d_name.name = [%s]\n", dentry->d_name.name); + rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); +- buf[rc] = '\0'; + set_fs(old_fs); + if (rc < 0) + goto out_free; ++ else ++ buf[rc] = '\0'; + rc = 0; + nd_set_link(nd, buf); + goto out; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.539700246@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:44 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Al Viro +Subject: [patch 67/85] fix switch_names() breakage in short-to-short case +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=fix-switch_names-breakage-in-short-to-short-case.patch +Content-Length: 1187 +Lines: 45 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Al Viro + +commit dc711ca35f9d95a1eec02118e0c298b5e3068315 upstream. + +We want ->name.len to match the resulting name on *both* +source and target + +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + fs/dcache.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1615,8 +1615,11 @@ static void switch_names(struct dentry * + */ + memcpy(dentry->d_iname, target->d_name.name, + target->d_name.len + 1); ++ dentry->d_name.len = target->d_name.len; ++ return; + } + } ++ do_switch(dentry->d_name.len, target->d_name.len); + } + + /* +@@ -1676,7 +1679,6 @@ already_unhashed: + + /* Switch the names.. */ + switch_names(dentry, target); +- do_switch(dentry->d_name.len, target->d_name.len); + do_switch(dentry->d_name.hash, target->d_name.hash); + + /* ... and switch the parents */ +@@ -1781,7 +1783,6 @@ static void __d_materialise_dentry(struc + struct dentry *dparent, *aparent; + + switch_names(dentry, anon); +- do_switch(dentry->d_name.len, anon->d_name.len); + do_switch(dentry->d_name.hash, anon->d_name.hash); + + dparent = dentry->d_parent; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.666408669@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:45 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Nick Piggin , + KOSAKI Motohiro +Subject: [patch 68/85] fs: symlink write_begin allocation context fix +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=fs-symlink-write_begin-allocation-context-fix.patch +Content-Length: 13633 +Lines: 415 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Nick Piggin + +commit 54566b2c1594c2326a645a3551f9d989f7ba3c5e upstream. + +With the write_begin/write_end aops, page_symlink was broken because it +could no longer pass a GFP_NOFS type mask into the point where the +allocations happened. They are done in write_begin, which would always +assume that the filesystem can be entered from reclaim. This bug could +cause filesystem deadlocks. + +The funny thing with having a gfp_t mask there is that it doesn't really +allow the caller to arbitrarily tinker with the context in which it can be +called. It couldn't ever be GFP_ATOMIC, for example, because it needs to +take the page lock. The only thing any callers care about is __GFP_FS +anyway, so turn that into a single flag. + +Add a new flag for write_begin, AOP_FLAG_NOFS. Filesystems can now act on +this flag in their write_begin function. Change __grab_cache_page to +accept a nofs argument as well, to honour that flag (while we're there, +change the name to grab_cache_page_write_begin which is more instructive +and does away with random leading underscores). + +This is really a more flexible way to go in the end anyway -- if a +filesystem happens to want any extra allocations aside from the pagecache +ones in ints write_begin function, it may now use GFP_KERNEL (rather than +GFP_NOFS) for common case allocations (eg. ocfs2_alloc_write_ctxt, for a +random example). + +[kosaki.motohiro@jp.fujitsu.com: fix ubifs] +[kosaki.motohiro@jp.fujitsu.com: fix fuse] +Signed-off-by: Nick Piggin +Reviewed-by: KOSAKI Motohiro +Cc: +Signed-off-by: KOSAKI Motohiro +Signed-off-by: Andrew Morton +[ Cleaned up the calling convention: just pass in the AOP flags + untouched to the grab_cache_page_write_begin() function. That + just simplifies everybody, and may even allow future expansion of the + logic. - Linus ] +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/affs/file.c | 2 +- + fs/buffer.c | 4 ++-- + fs/ext3/inode.c | 2 +- + fs/ext3/namei.c | 3 +-- + fs/ext4/inode.c | 4 ++-- + fs/ext4/namei.c | 3 +-- + fs/fuse/file.c | 4 ++-- + fs/gfs2/ops_address.c | 2 +- + fs/hostfs/hostfs_kern.c | 2 +- + fs/jffs2/file.c | 2 +- + fs/libfs.c | 2 +- + fs/namei.c | 13 +++++++++---- + fs/nfs/file.c | 2 +- + fs/reiserfs/inode.c | 2 +- + fs/smbfs/file.c | 2 +- + fs/ubifs/file.c | 9 +++++---- + include/linux/fs.h | 5 ++++- + include/linux/pagemap.h | 3 ++- + mm/filemap.c | 17 +++++++++++------ + 19 files changed, 48 insertions(+), 35 deletions(-) + +--- a/fs/affs/file.c ++++ b/fs/affs/file.c +@@ -628,7 +628,7 @@ static int affs_write_begin_ofs(struct f + } + + index = pos >> PAGE_CACHE_SHIFT; +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + *pagep = page; +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -1988,7 +1988,7 @@ int block_write_begin(struct file *file, + page = *pagep; + if (page == NULL) { + ownpage = 1; +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) { + status = -ENOMEM; + goto out; +@@ -2494,7 +2494,7 @@ int nobh_write_begin(struct file *file, + from = pos & (PAGE_CACHE_SIZE - 1); + to = from + len; + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + *pagep = page; +--- a/fs/ext3/inode.c ++++ b/fs/ext3/inode.c +@@ -1152,7 +1152,7 @@ static int ext3_write_begin(struct file + to = from + len; + + retry: +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + *pagep = page; +--- a/fs/ext3/namei.c ++++ b/fs/ext3/namei.c +@@ -2187,8 +2187,7 @@ retry: + * We have a transaction open. All is sweetness. It also sets + * i_size in generic_commit_write(). + */ +- err = __page_symlink(inode, symname, l, +- mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS); ++ err = __page_symlink(inode, symname, l, 1); + if (err) { + drop_nlink(inode); + ext3_mark_inode_dirty(handle, inode); +--- a/fs/ext4/inode.c ++++ b/fs/ext4/inode.c +@@ -1370,7 +1370,7 @@ retry: + goto out; + } + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) { + ext4_journal_stop(handle); + ret = -ENOMEM; +@@ -2421,7 +2421,7 @@ retry: + goto out; + } + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) { + ext4_journal_stop(handle); + ret = -ENOMEM; +--- a/fs/ext4/namei.c ++++ b/fs/ext4/namei.c +@@ -2216,8 +2216,7 @@ retry: + * We have a transaction open. All is sweetness. It also sets + * i_size in generic_commit_write(). + */ +- err = __page_symlink(inode, symname, l, +- mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS); ++ err = __page_symlink(inode, symname, l, 1); + if (err) { + clear_nlink(inode); + ext4_mark_inode_dirty(handle, inode); +--- a/fs/fuse/file.c ++++ b/fs/fuse/file.c +@@ -644,7 +644,7 @@ static int fuse_write_begin(struct file + { + pgoff_t index = pos >> PAGE_CACHE_SHIFT; + +- *pagep = __grab_cache_page(mapping, index); ++ *pagep = grab_cache_page_write_begin(mapping, index, flags); + if (!*pagep) + return -ENOMEM; + return 0; +@@ -777,7 +777,7 @@ static ssize_t fuse_fill_write_pages(str + break; + + err = -ENOMEM; +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, 0); + if (!page) + break; + +--- a/fs/gfs2/ops_address.c ++++ b/fs/gfs2/ops_address.c +@@ -675,7 +675,7 @@ static int gfs2_write_begin(struct file + goto out_trans_fail; + + error = -ENOMEM; +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + *pagep = page; + if (unlikely(!page)) + goto out_endtrans; +--- a/fs/hostfs/hostfs_kern.c ++++ b/fs/hostfs/hostfs_kern.c +@@ -500,7 +500,7 @@ int hostfs_write_begin(struct file *file + { + pgoff_t index = pos >> PAGE_CACHE_SHIFT; + +- *pagep = __grab_cache_page(mapping, index); ++ *pagep = grab_cache_page_write_begin(mapping, index, flags); + if (!*pagep) + return -ENOMEM; + return 0; +--- a/fs/jffs2/file.c ++++ b/fs/jffs2/file.c +@@ -132,7 +132,7 @@ static int jffs2_write_begin(struct file + uint32_t pageofs = index << PAGE_CACHE_SHIFT; + int ret = 0; + +- pg = __grab_cache_page(mapping, index); ++ pg = grab_cache_page_write_begin(mapping, index, flags); + if (!pg) + return -ENOMEM; + *pagep = pg; +--- a/fs/libfs.c ++++ b/fs/libfs.c +@@ -360,7 +360,7 @@ int simple_write_begin(struct file *file + index = pos >> PAGE_CACHE_SHIFT; + from = pos & (PAGE_CACHE_SIZE - 1); + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2796,18 +2796,23 @@ void page_put_link(struct dentry *dentry + } + } + +-int __page_symlink(struct inode *inode, const char *symname, int len, +- gfp_t gfp_mask) ++/* ++ * The nofs argument instructs pagecache_write_begin to pass AOP_FLAG_NOFS ++ */ ++int __page_symlink(struct inode *inode, const char *symname, int len, int nofs) + { + struct address_space *mapping = inode->i_mapping; + struct page *page; + void *fsdata; + int err; + char *kaddr; ++ unsigned int flags = AOP_FLAG_UNINTERRUPTIBLE; ++ if (nofs) ++ flags |= AOP_FLAG_NOFS; + + retry: + err = pagecache_write_begin(NULL, mapping, 0, len-1, +- AOP_FLAG_UNINTERRUPTIBLE, &page, &fsdata); ++ flags, &page, &fsdata); + if (err) + goto fail; + +@@ -2831,7 +2836,7 @@ fail: + int page_symlink(struct inode *inode, const char *symname, int len) + { + return __page_symlink(inode, symname, len, +- mapping_gfp_mask(inode->i_mapping)); ++ !(mapping_gfp_mask(inode->i_mapping) & __GFP_FS)); + } + + const struct inode_operations page_symlink_inode_operations = { +--- a/fs/nfs/file.c ++++ b/fs/nfs/file.c +@@ -351,7 +351,7 @@ static int nfs_write_begin(struct file * + file->f_path.dentry->d_name.name, + mapping->host->i_ino, len, (long long) pos); + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + *pagep = page; +--- a/fs/reiserfs/inode.c ++++ b/fs/reiserfs/inode.c +@@ -2565,7 +2565,7 @@ static int reiserfs_write_begin(struct f + } + + index = pos >> PAGE_CACHE_SHIFT; +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + *pagep = page; +--- a/fs/smbfs/file.c ++++ b/fs/smbfs/file.c +@@ -297,7 +297,7 @@ static int smb_write_begin(struct file * + struct page **pagep, void **fsdata) + { + pgoff_t index = pos >> PAGE_CACHE_SHIFT; +- *pagep = __grab_cache_page(mapping, index); ++ *pagep = grab_cache_page_write_begin(mapping, index, flags); + if (!*pagep) + return -ENOMEM; + return 0; +--- a/fs/ubifs/file.c ++++ b/fs/ubifs/file.c +@@ -213,7 +213,8 @@ static void release_existing_page_budget + } + + static int write_begin_slow(struct address_space *mapping, +- loff_t pos, unsigned len, struct page **pagep) ++ loff_t pos, unsigned len, struct page **pagep, ++ unsigned flags) + { + struct inode *inode = mapping->host; + struct ubifs_info *c = inode->i_sb->s_fs_info; +@@ -241,7 +242,7 @@ static int write_begin_slow(struct addre + if (unlikely(err)) + return err; + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (unlikely(!page)) { + ubifs_release_budget(c, &req); + return -ENOMEM; +@@ -432,7 +433,7 @@ static int ubifs_write_begin(struct file + return -EROFS; + + /* Try out the fast-path part first */ +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + if (unlikely(!page)) + return -ENOMEM; + +@@ -477,7 +478,7 @@ static int ubifs_write_begin(struct file + unlock_page(page); + page_cache_release(page); + +- return write_begin_slow(mapping, pos, len, pagep); ++ return write_begin_slow(mapping, pos, len, pagep, flags); + } + + /* +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -403,6 +403,9 @@ enum positive_aop_returns { + + #define AOP_FLAG_UNINTERRUPTIBLE 0x0001 /* will not do a short write */ + #define AOP_FLAG_CONT_EXPAND 0x0002 /* called from cont_expand */ ++#define AOP_FLAG_NOFS 0x0004 /* used by filesystem to direct ++ * helper code (eg buffer layer) ++ * to clear GFP_FS from alloc */ + + /* + * oh the beauties of C type declarations. +@@ -1959,7 +1962,7 @@ extern int page_readlink(struct dentry * + extern void *page_follow_link_light(struct dentry *, struct nameidata *); + extern void page_put_link(struct dentry *, struct nameidata *, void *); + extern int __page_symlink(struct inode *inode, const char *symname, int len, +- gfp_t gfp_mask); ++ int nofs); + extern int page_symlink(struct inode *inode, const char *symname, int len); + extern const struct inode_operations page_symlink_inode_operations; + extern int generic_readlink(struct dentry *, char __user *, int); +--- a/include/linux/pagemap.h ++++ b/include/linux/pagemap.h +@@ -213,7 +213,8 @@ unsigned find_get_pages_contig(struct ad + unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index, + int tag, unsigned int nr_pages, struct page **pages); + +-struct page *__grab_cache_page(struct address_space *mapping, pgoff_t index); ++struct page *grab_cache_page_write_begin(struct address_space *mapping, ++ pgoff_t index, unsigned flags); + + /* + * Returns locked page at given index in given cache, creating it if needed. +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -2033,7 +2033,7 @@ int pagecache_write_begin(struct file *f + struct inode *inode = mapping->host; + struct page *page; + again: +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, flags); + *pagep = page; + if (!page) + return -ENOMEM; +@@ -2197,19 +2197,24 @@ EXPORT_SYMBOL(generic_file_direct_write) + * Find or create a page at the given pagecache position. Return the locked + * page. This function is specifically for buffered writes. + */ +-struct page *__grab_cache_page(struct address_space *mapping, pgoff_t index) ++struct page *grab_cache_page_write_begin(struct address_space *mapping, ++ pgoff_t index, unsigned flags) + { + int status; + struct page *page; ++ gfp_t gfp_notmask = 0; ++ if (flags & AOP_FLAG_NOFS) ++ gfp_notmask = __GFP_FS; + repeat: + page = find_lock_page(mapping, index); + if (likely(page)) + return page; + +- page = page_cache_alloc(mapping); ++ page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); + if (!page) + return NULL; +- status = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL); ++ status = add_to_page_cache_lru(page, mapping, index, ++ GFP_KERNEL & ~gfp_notmask); + if (unlikely(status)) { + page_cache_release(page); + if (status == -EEXIST) +@@ -2218,7 +2223,7 @@ repeat: + } + return page; + } +-EXPORT_SYMBOL(__grab_cache_page); ++EXPORT_SYMBOL(grab_cache_page_write_begin); + + static ssize_t generic_perform_write_2copy(struct file *file, + struct iov_iter *i, loff_t pos) +@@ -2263,7 +2268,7 @@ static ssize_t generic_perform_write_2co + break; + } + +- page = __grab_cache_page(mapping, index); ++ page = grab_cache_page_write_begin(mapping, index, GFP_KERNEL); + if (!page) { + status = -ENOMEM; + break; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:42 2009 +Message-Id: <20090115215442.807455715@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:46 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Brian King , + James Bottomley +Subject: [patch 69/85] [SCSI] ibmvfc: Delay NPIV login retry and add retries +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=ibmvfc-delay-npiv-login-retry-and-add-retries.patch +Content-Length: 3549 +Lines: 92 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Brian King + +commit 1c41fa8288277e76785acb50f52bb2f39509f903 upstream. + +Adds a delay prior to retrying a failed NPIV login. This fixes +a scenario if the backing fibre channel adapter is getting reset +due to an EEH event, NPIV login will fail. Currently, ibmvfc +retries three times very quickly, resets the CRQ and tries one +more time. If the adapter is getting reset due to EEH, this isn't +enough time. This adds a delay prior to retrying a failed NPIV +login and also increments the number of retries. + +Signed-off-by: Brian King +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/ibmvscsi/ibmvfc.c | 17 ++++++++++++----- + drivers/scsi/ibmvscsi/ibmvfc.h | 4 +++- + 2 files changed, 15 insertions(+), 6 deletions(-) + +--- a/drivers/scsi/ibmvscsi/ibmvfc.c ++++ b/drivers/scsi/ibmvscsi/ibmvfc.c +@@ -566,7 +566,7 @@ static void ibmvfc_init_host(struct ibmv + struct ibmvfc_target *tgt; + + if (vhost->action == IBMVFC_HOST_ACTION_INIT_WAIT) { +- if (++vhost->init_retries > IBMVFC_MAX_INIT_RETRIES) { ++ if (++vhost->init_retries > IBMVFC_MAX_HOST_INIT_RETRIES) { + dev_err(vhost->dev, + "Host initialization retries exceeded. Taking adapter offline\n"); + ibmvfc_link_down(vhost, IBMVFC_HOST_OFFLINE); +@@ -847,11 +847,12 @@ static void ibmvfc_reset_host(struct ibm + static void ibmvfc_retry_host_init(struct ibmvfc_host *vhost) + { + if (vhost->action == IBMVFC_HOST_ACTION_INIT_WAIT) { +- if (++vhost->init_retries > IBMVFC_MAX_INIT_RETRIES) { ++ vhost->delay_init = 1; ++ if (++vhost->init_retries > IBMVFC_MAX_HOST_INIT_RETRIES) { + dev_err(vhost->dev, + "Host initialization retries exceeded. Taking adapter offline\n"); + ibmvfc_link_down(vhost, IBMVFC_HOST_OFFLINE); +- } else if (vhost->init_retries == IBMVFC_MAX_INIT_RETRIES) ++ } else if (vhost->init_retries == IBMVFC_MAX_HOST_INIT_RETRIES) + __ibmvfc_reset_host(vhost); + else + ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT); +@@ -2671,7 +2672,7 @@ static void ibmvfc_init_tgt(struct ibmvf + static void ibmvfc_retry_tgt_init(struct ibmvfc_target *tgt, + void (*job_step) (struct ibmvfc_target *)) + { +- if (++tgt->init_retries > IBMVFC_MAX_INIT_RETRIES) { ++ if (++tgt->init_retries > IBMVFC_MAX_TGT_INIT_RETRIES) { + ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); + wake_up(&tgt->vhost->work_wait_q); + } else +@@ -3521,7 +3522,13 @@ static void ibmvfc_do_work(struct ibmvfc + break; + case IBMVFC_HOST_ACTION_INIT: + BUG_ON(vhost->state != IBMVFC_INITIALIZING); +- vhost->job_step(vhost); ++ if (vhost->delay_init) { ++ vhost->delay_init = 0; ++ spin_unlock_irqrestore(vhost->host->host_lock, flags); ++ ssleep(5); ++ return; ++ } else ++ vhost->job_step(vhost); + break; + case IBMVFC_HOST_ACTION_QUERY: + list_for_each_entry(tgt, &vhost->targets, queue) +--- a/drivers/scsi/ibmvscsi/ibmvfc.h ++++ b/drivers/scsi/ibmvscsi/ibmvfc.h +@@ -43,7 +43,8 @@ + #define IBMVFC_MAX_DISC_THREADS 4 + #define IBMVFC_TGT_MEMPOOL_SZ 64 + #define IBMVFC_MAX_CMDS_PER_LUN 64 +-#define IBMVFC_MAX_INIT_RETRIES 3 ++#define IBMVFC_MAX_HOST_INIT_RETRIES 6 ++#define IBMVFC_MAX_TGT_INIT_RETRIES 3 + #define IBMVFC_DEV_LOSS_TMO (5 * 60) + #define IBMVFC_DEFAULT_LOG_LEVEL 2 + #define IBMVFC_MAX_CDB_LEN 16 +@@ -671,6 +672,7 @@ struct ibmvfc_host { + int discovery_threads; + int client_migrated; + int reinit; ++ int delay_init; + int events_to_log; + #define IBMVFC_AE_LINKUP 0x0001 + #define IBMVFC_AE_LINKDOWN 0x0002 + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215442.929683959@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:47 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Brian King , + James Bottomley +Subject: [patch 70/85] [SCSI] ibmvfc: Improve async event handling +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=ibmvfc-improve-async-event-handling.patch +Content-Length: 2079 +Lines: 64 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Brian King + +commit d2131b33c7e07c2905ee2f2321cc4dae1928c483 upstream. + +While doing various error injection testing, such as cable +pulls and target moves, some issues were observed in handling +these events. This patch improves the way these events are handled +by increasing the delay waiting for the fabric to settle and also +changes the behavior of Link Up to break the CRQ to ensure everything +gets cleaned up properly on the VIOS. + +Signed-off-by: Brian King +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/ibmvscsi/ibmvfc.c | 10 ++++++---- + drivers/scsi/ibmvscsi/ibmvfc.h | 2 +- + 2 files changed, 7 insertions(+), 5 deletions(-) + +--- a/drivers/scsi/ibmvscsi/ibmvfc.c ++++ b/drivers/scsi/ibmvscsi/ibmvfc.c +@@ -2092,15 +2092,17 @@ static void ibmvfc_handle_async(struct i + case IBMVFC_AE_LINK_UP: + case IBMVFC_AE_RESUME: + vhost->events_to_log |= IBMVFC_AE_LINKUP; +- ibmvfc_init_host(vhost, 1); ++ vhost->delay_init = 1; ++ __ibmvfc_reset_host(vhost); + break; + case IBMVFC_AE_SCN_FABRIC: ++ case IBMVFC_AE_SCN_DOMAIN: + vhost->events_to_log |= IBMVFC_AE_RSCN; +- ibmvfc_init_host(vhost, 1); ++ vhost->delay_init = 1; ++ __ibmvfc_reset_host(vhost); + break; + case IBMVFC_AE_SCN_NPORT: + case IBMVFC_AE_SCN_GROUP: +- case IBMVFC_AE_SCN_DOMAIN: + vhost->events_to_log |= IBMVFC_AE_RSCN; + case IBMVFC_AE_ELS_LOGO: + case IBMVFC_AE_ELS_PRLO: +@@ -3525,7 +3527,7 @@ static void ibmvfc_do_work(struct ibmvfc + if (vhost->delay_init) { + vhost->delay_init = 0; + spin_unlock_irqrestore(vhost->host->host_lock, flags); +- ssleep(5); ++ ssleep(15); + return; + } else + vhost->job_step(vhost); +--- a/drivers/scsi/ibmvscsi/ibmvfc.h ++++ b/drivers/scsi/ibmvscsi/ibmvfc.h +@@ -33,7 +33,7 @@ + #define IBMVFC_DRIVER_DATE "(August 14, 2008)" + + #define IBMVFC_DEFAULT_TIMEOUT 15 +-#define IBMVFC_INIT_TIMEOUT 30 ++#define IBMVFC_INIT_TIMEOUT 120 + #define IBMVFC_MAX_REQUESTS_DEFAULT 100 + + #define IBMVFC_DEBUG 0 + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.057522343@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:48 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Nick Piggin +Subject: [patch 71/85] mm: fix assertion +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=mm-fix-assertion.patch +Content-Length: 1039 +Lines: 32 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Nick Piggin + +commit 18e6959c385f3edf3991fa6662a53dac4eb10d5b upstream. + +This assertion is incorrect for lockless pagecache. By definition if we +have an unpinned page that we are trying to take a speculative reference +to, it may become the tail of a compound page at any time (if it is +freed, then reallocated as a compound page). + +It was still a valid assertion for the vmscan.c LRU isolation case, but +it doesn't seem incredibly helpful... if somebody wants it, they can +put it back directly where it applies in the vmscan code. + +Signed-off-by: Nick Piggin +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/mm.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -253,7 +253,6 @@ static inline int put_page_testzero(stru + */ + static inline int get_page_unless_zero(struct page *page) + { +- VM_BUG_ON(PageTail(page)); + return atomic_inc_not_zero(&page->_count); + } + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.190805484@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:49 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Nick Piggin +Subject: [patch 72/85] mm lockless pagecache barrier fix +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=mm-lockless-pagecache-barrier-fix.patch +Content-Length: 2850 +Lines: 75 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Nick Piggin + +commit e8c82c2e23e3527e0c9dc195e432c16784d270fa upstream. + +An XFS workload showed up a bug in the lockless pagecache patch. Basically it +would go into an "infinite" loop, although it would sometimes be able to break +out of the loop! The reason is a missing compiler barrier in the "increment +reference count unless it was zero" case of the lockless pagecache protocol in +the gang lookup functions. + +This would cause the compiler to use a cached value of struct page pointer to +retry the operation with, rather than reload it. So the page might have been +removed from pagecache and freed (refcount==0) but the lookup would not correctly +notice the page is no longer in pagecache, and keep attempting to increment the +refcount and failing, until the page gets reallocated for something else. This +isn't a data corruption because the condition will be detected if the page has +been reallocated. However it can result in a lockup. + +Linus points out that ACCESS_ONCE is also required in that pointer load, even +if it's absence is not causing a bug on our particular build. The most general +way to solve this is just to put an rcu_dereference in radix_tree_deref_slot. + +Assembly of find_get_pages, +before: +.L220: + movq (%rbx), %rax #* ivtmp.1162, tmp82 + movq (%rax), %rdi #, prephitmp.1149 +.L218: + testb $1, %dil #, prephitmp.1149 + jne .L217 #, + testq %rdi, %rdi # prephitmp.1149 + je .L203 #, + cmpq $-1, %rdi #, prephitmp.1149 + je .L217 #, + movl 8(%rdi), %esi # ._count.counter, c + testl %esi, %esi # c + je .L218 #, + +after: +.L212: + movq (%rbx), %rax #* ivtmp.1109, tmp81 + movq (%rax), %rdi #, ret + testb $1, %dil #, ret + jne .L211 #, + testq %rdi, %rdi # ret + je .L197 #, + cmpq $-1, %rdi #, ret + je .L211 #, + movl 8(%rdi), %esi # ._count.counter, c + testl %esi, %esi # c + je .L212 #, + +(notice the obvious infinite loop in the first example, if page->count remains 0) + +Signed-off-by: Nick Piggin +Reviewed-by: Paul E. McKenney +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/radix-tree.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/radix-tree.h ++++ b/include/linux/radix-tree.h +@@ -136,7 +136,7 @@ do { \ + */ + static inline void *radix_tree_deref_slot(void **pslot) + { +- void *ret = *pslot; ++ void *ret = rcu_dereference(*pslot); + if (unlikely(radix_tree_is_indirect_ptr(ret))) + ret = RADIX_TREE_RETRY; + return ret; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.317469348@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:50 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Reinhard Nissl , + Ke Wei , + James Bottomley +Subject: [patch 73/85] [SCSI] mvsas: increase port type detection delay to suit Seagates 10k6 drive ST3450856SS 0003 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=mvsas-increase-port-type-detection-delay-to-suit-seagate-s-10k6-drive-st3450856ss-0003.patch +Content-Length: 1007 +Lines: 31 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Reinhard Nissl + +commit ddccf307a3599e452804e228d8ed30fba578923e upstream. + +I increased the delay step by step until loading of mvsas +reliably detected the drive 200 times in sequence. A much better +approach would be to monitor the hardware for some flag which +indicates that port detection has finished, but I do not have any +hardware documentation. + +Signed-off-by: Reinhard Nissl +Cc: Ke Wei +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/mvsas.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/scsi/mvsas.c ++++ b/drivers/scsi/mvsas.c +@@ -2959,7 +2959,7 @@ static int __devinit mvs_hw_init(struct + + /* enable auto port detection */ + mw32(GBL_PORT_TYPE, MODE_AUTO_DET_EN); +- msleep(100); ++ msleep(1100); + /* init and reset phys */ + for (i = 0; i < mvi->chip->n_phy; i++) { + u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.454737562@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:51 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Trond Myklebust , + Wu Fengguang +Subject: [patch 74/85] nfs: remove redundant tests on reading new pages +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=nfs-remove-redundant-tests-on-reading-new-pages.patch +Content-Length: 1558 +Lines: 44 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Wu Fengguang + +commit 136221fc3219b3805c48db5da065e8e3467175d4 upstream. + +aops->readpages() and its NFS helper readpage_async_filler() will only +be called to do readahead I/O for newly allocated pages. So it's not +necessary to test for the always 0 dirty/uptodate page flags. + +The removal of nfs_wb_page() call also fixes a readahead bug: the NFS +readahead has been synchronous since 2.6.23, because that call will +clear PG_readahead, which is the reminder for asynchronous readahead. + +More background: the PG_readahead page flag is shared with PG_reclaim, +one for read path and the other for write path. clear_page_dirty_for_io() +unconditionally clears PG_readahead to prevent possible readahead residuals, +assuming itself to be always called in the write path. However, NFS is one +and the only exception in that it _always_ calls clear_page_dirty_for_io() +in the read path, i.e. for readpages()/readpage(). + +Cc: Trond Myklebust +Signed-off-by: Wu Fengguang +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfs/read.c | 6 ------ + 1 file changed, 6 deletions(-) + +--- a/fs/nfs/read.c ++++ b/fs/nfs/read.c +@@ -533,12 +533,6 @@ readpage_async_filler(void *data, struct + unsigned int len; + int error; + +- error = nfs_wb_page(inode, page); +- if (error) +- goto out_unlock; +- if (PageUptodate(page)) +- goto out_unlock; +- + len = nfs_page_length(page); + if (len == 0) + return nfs_return_empty_page(page); + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.579737039@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:52 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Brian King , + Paul Mackerras +Subject: [patch 75/85] powerpc: Disable Collaborative Memory Manager for kdump +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=powerpc-disable-collaborative-memory-manager-for-kdump.patch +Content-Length: 1498 +Lines: 37 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Brian King + +commit 2218108e182fd8a6d9106077833ed7ad05fc8e75 upstream. + +When running Active Memory Sharing, the Collaborative Memory Manager +(CMM) may mark some pages as "loaned" with the hypervisor. +Periodically, the CMM will query the hypervisor for a loan request, +which is a single signed value. When kexec'ing into a kdump kernel, +the CMM driver in the kdump kernel is not aware of the pages the +previous kernel had marked as "loaned", so the hypervisor and the CMM +driver are out of sync. This results in the CMM driver getting a +negative loan request, which can then get treated as a large unsigned +value and can cause kdump to hang due to the CMM driver inflating too +large. Since there really is no clean way for the CMM driver in the +kdump kernel to clean this up, simply disable CMM in the kdump kernel. +This fixes hangs we were seeing doing kdump with AMS. + +Signed-off-by: Brian King +Signed-off-by: Paul Mackerras +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/platforms/pseries/Kconfig ++++ b/arch/powerpc/platforms/pseries/Kconfig +@@ -54,7 +54,7 @@ config PPC_SMLPAR + + config CMM + tristate "Collaborative memory management" +- depends on PPC_SMLPAR ++ depends on PPC_SMLPAR && !CRASH_DUMP + default y + help + Select this option, if you want to enable the kernel interface + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.705939251@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:53 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Kuniyasu Suzaki , + Nguyen Anh Quynh +Subject: [patch 76/85] USB: another unusual_devs entry for another bad Argosy storage device +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-another-unusual_devs-entry-for-another-bad-argosy-storage-device.patch +Content-Length: 5277 +Lines: 145 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Nguyen Anh Quynh + +commit e2673b28911a43257265523e3672861be6e44093 upstream. + +I have another Argosy USB storage device, which has the same problem +with the Argosy USB storage device already fixed in 2.6.27.7. But this +device has another product ID (840:84), so this patch adds a new entry +into unusual_devs to fix the mount problem. + +I enclose here two patches: one against 2.6.27.8, and another against +the latest linus-git tree. + + +The information about the Argosy device is like below: + +#lsusb -v -d 840:84 +Bus 005 Device 005: ID 0840:0084 Argosy Research, Inc. +Device Descriptor: + bLength 18 + bDescriptorType 1 + bcdUSB 2.00 + bDeviceClass 0 (Defined at Interface level) + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 64 + idVendor 0x0840 Argosy Research, Inc. + idProduct 0x0084 + bcdDevice 0.01 + iManufacturer 1 Generic + iProduct 2 USB 2.0 Storage Device + iSerial 3 8400000000002549 + bNumConfigurations 1 + Configuration Descriptor: + bLength 9 + bDescriptorType 2 + wTotalLength 32 + bNumInterfaces 1 + bConfigurationValue 1 + iConfiguration 0 + bmAttributes 0xc0 + Self Powered + MaxPower 2mA + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 8 Mass Storage + bInterfaceSubClass 6 SCSI + bInterfaceProtocol 80 Bulk (Zip) + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x82 EP 2 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 +Device Qualifier (for other device speed): + bLength 10 + bDescriptorType 6 + bcdUSB 2.00 + bDeviceClass 0 (Defined at Interface level) + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 64 + bNumConfigurations 1 +Device Status: 0x0000 + (Bus Powered) + +Before the patch, dmesg returns a lot of information like below (my +dmesg is overflown): +.... +[ 138.833390] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information +[ 138.877631] sd 7:0:0:0: [sdb] Sense Key : No Sense [current] +[ 138.877643] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information +[ 138.921906] sd 7:0:0:0: [sdb] Sense Key : No Sense [current] +[ 138.921923] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information +.... + +After the fix, dmesg returns below information: +.... +usb 5-1: new high speed USB device using ehci_hcd and address 5 +usb 5-1: configuration #1 chosen from 1 choice +scsi7 : SCSI emulation for USB Mass Storage devices +usb-storage: device found at 5 +usb-storage: waiting for device to settle before scanning +usb-storage: device scan complete +scsi 7:0:0:0: Direct-Access HTS54808 0M9AT00 MG4O PQ: 0 ANSI: 0 +sd 7:0:0:0: [sdb] 156301488 512-byte hardware sectors (80026 MB) +sd 7:0:0:0: [sdb] Write Protect is off +sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00 +sd 7:0:0:0: [sdb] Assuming drive cache: write through +sd 7:0:0:0: [sdb] 156301488 512-byte hardware sectors (80026 MB) +sd 7:0:0:0: [sdb] Write Protect is off +sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00 +sd 7:0:0:0: [sdb] Assuming drive cache: write through + sdb: sdb1 +sd 7:0:0:0: [sdb] Attached SCSI disk +sd 7:0:0:0: Attached scsi generic sg1 type 0 +kjournald starting. Commit interval 5 seconds +EXT3 FS on sdb1, internal journal +EXT3-fs: recovery complete. +EXT3-fs: mounted filesystem with ordered data mode. + +Cc: Kuniyasu Suzaki +Signed-off-by: Nguyen Anh Quynh +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1320,6 +1320,13 @@ UNUSUAL_DEV( 0x0840, 0x0082, 0x0001, 0x0 + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_CAPACITY), + ++/* Reported and patched by Nguyen Anh Quynh */ ++UNUSUAL_DEV( 0x0840, 0x0084, 0x0001, 0x0001, ++ "Argosy", ++ "Storage", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_FIX_CAPACITY), ++ + /* Entry and supporting patch by Theodore Kilgore . + * Flag will support Bulk devices which use a standards-violating 32-byte + * Command Block Wrapper. Here, the "DC2MEGA" cameras (several brands) with + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:43 2009 +Message-Id: <20090115215443.831431388@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:54 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Oliver Neukum , + Phil Dibowitz +Subject: [patch 77/85] USB: storage: extend unusual range for 067b:3507 +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-storage-extend-unusual-range-for-067b-3507.patch +Content-Length: 856 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Oliver Neukum + +commit b16363991414a6025beb7269f9c1dd294f9b241f upstream. + +This device has been released in a new revision which is still buggy. + +Signed-off-by: Oliver Neukum +Signed-off-by: Phil Dibowitz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1040,7 +1040,7 @@ UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0 + US_FL_FIX_CAPACITY | US_FL_GO_SLOW ), + + /* Reported by Alex Butcher */ +-UNUSUAL_DEV( 0x067b, 0x3507, 0x0001, 0x0001, ++UNUSUAL_DEV( 0x067b, 0x3507, 0x0001, 0x0101, + "Prolific Technology Inc.", + "ATAPI-6 Bridge Controller", + US_SC_DEVICE, US_PR_DEVICE, NULL, + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215443.968280624@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:55 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Paulo Afonso Graner Fessel , + Phil Dibowitz +Subject: [patch 78/85] USB: storage: recognizing and enabling Nokia 5200 cell phoes +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=usb-storage-recognizing-and-enabling-nokia-5200-cell-phoes.patch +Content-Length: 5807 +Lines: 152 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Paulo Afonso Graner Fessel + +commit b8d23491f127aa0cd1863bd6cb58e771c558b762 upstream. + +This patch corrects the issue when one connects a Nokia 5200 cell +phone in data storage mode. If one uses an unpatched unusual_devs.h, +the following messages appear on /var/log/messages: + +Dec 12 01:03:24 alberich kernel: usb 4-2: new full speed USB device +using uhci_hcd and address 3 +Dec 12 01:03:25 alberich kernel: usb 4-2: configuration #1 chosen from 1 choice +Dec 12 01:03:25 alberich kernel: scsi10 : SCSI emulation for USB Mass +Storage devices +Dec 12 01:03:25 alberich kernel: usb 4-2: New USB device found, +idVendor=0421, idProduct=04bd +Dec 12 01:03:25 alberich kernel: usb 4-2: New USB device strings: +Mfr=1, Product=2, SerialNumber=3 +Dec 12 01:03:25 alberich kernel: usb 4-2: Product: Nokia 5200 +Dec 12 01:03:25 alberich kernel: usb 4-2: Manufacturer: Nokia +Dec 12 01:03:25 alberich kernel: usb 4-2: SerialNumber: 353930018354523 +Dec 12 01:03:25 alberich kernel: usbcore: registered new interface driver ub +Dec 12 01:03:30 alberich kernel: scsi 10:0:0:0: Direct-Access +Nokia Nokia 5200 0000 PQ: 0 AN +SI: 4 +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] 3985409 512-byte +hardware sectors (2041 MB) +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Write Protect is off +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Assuming drive +cache: write through +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] 3985409 512-byte +hardware sectors (2041 MB) +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Write Protect is off +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Assuming drive +cache: write through +Dec 12 01:03:30 alberich kernel: sdg: sdg1 +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Attached SCSI removable disk +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: Attached scsi generic sg9 type 0 +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No +Sense [current] +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Add. Sense: No +additional sense information +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No +Sense [current] +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Add. Sense: No +additional sense information +Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No +Sense [current] + +(...) + +The MicroSD card in the phone remains inaccessible and finally the +cell phone turns itself off. The patch solves this problem and makes +the cell phone fully accessible: + +[root@alberich kernel-linus-2.6.27.5-1mdv]# df -h +Sist. Arq. Tam Usad Disp Uso% Montado em +/dev/sda6 31G 5,2G 26G 17% / +/dev/sda1 92M 27M 61M 31% /boot +/dev/mapper/homevg-homelv 240G 237G 3,5G 99% /home +/dev/sda3 21G 7,9G 13G 40% /mnt/windows +/dev/sdg1 2,0G 287M 1,7G 15% /media/disk <-------- + +I've found necessary to use the FL_US_CAPACITY_FIX switch, as without +it the cell phone is recognized but it went berserk when performing +low-level functions on it (a fdisk -l /dev/uba for example). + +lsusb -v output follows: + +Bus 004 Device 004: ID 0421:04bd Nokia Mobile Phones +Device Descriptor: + bLength 18 + bDescriptorType 1 + bcdUSB 2.00 + bDeviceClass 0 (Defined at Interface level) + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 64 + idVendor 0x0421 Nokia Mobile Phones + idProduct 0x04bd + bcdDevice 6.03 + iManufacturer 1 Nokia + iProduct 2 Nokia 5200 + iSerial 3 353930018354523 + bNumConfigurations 1 + Configuration Descriptor: + bLength 9 + bDescriptorType 2 + wTotalLength 32 + bNumInterfaces 1 + bConfigurationValue 1 + iConfiguration 0 + bmAttributes 0xc0 + Self Powered + MaxPower 100mA + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 8 Mass Storage + bInterfaceSubClass 6 SCSI + bInterfaceProtocol 80 Bulk (Zip) + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x81 EP 1 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 +Device Status: 0x0001 + Self Powered + +Signed-off-by: Paulo Afonso Graner Fessel +Signed-off-by: Phil Dibowitz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -246,6 +246,13 @@ UNUSUAL_DEV( 0x0421, 0x04b9, 0x0500, 0x + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_CAPACITY ), + ++/* Reported by Paulo Fessel */ ++UNUSUAL_DEV( 0x0421, 0x04bd, 0x0000, 0x9999, ++ "Nokia", ++ "5200", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_FIX_CAPACITY ), ++ + /* Reported by Richard Nauber */ + UNUSUAL_DEV( 0x0421, 0x04fa, 0x0550, 0x0660, + "Nokia", + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215444.115588104@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:56 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Andi Kleen , + Ingo Molnar +Subject: [patch 79/85] x86: avoid theoretical vmalloc fault loop +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-avoid-theoretical-vmalloc-fault-loop.patch +Content-Length: 1697 +Lines: 45 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Andi Kleen + +commit f313e12308f7c5ea645f18e759d104d088b18615 upstream. + +Ajith Kumar noticed: + + I was going through the vmalloc fault handling for x86_64 and am unclear + about the following lines in the vmalloc_fault() function. + + pgd = pgd_offset(current->mm ?: &init_mm, address); + pgd_ref = pgd_offset_k(address); + + Here the intention is to get the pgd corresponding to the current process + and sync it up with the pgd in init_mm(obtained from pgd_offset_k). + However, for kernel threads current->mm is NULL and hence pgd = + pgd_offset(init_mm, address) = pgd_ref which means the fault handler + returns without setting the pgd entry in the MM structure in the context + of which the kernel thread has faulted. This could lead to never-ending + faults and busy looping of kernel threads like pdflush. So, shouldn't the + pgd = pgd_offset(current->mm ?: &init_mm, address); be pgd = + pgd_offset(current->active_mm ?: &init_mm, address); + +We can use active_mm unconditionally because it should be always set. + +Signed-off-by: Andi Kleen +Signed-off-by: Andrew Morton +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/mm/fault.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c +@@ -534,7 +534,7 @@ static int vmalloc_fault(unsigned long a + happen within a race in page table update. In the later + case just flush. */ + +- pgd = pgd_offset(current->mm ?: &init_mm, address); ++ pgd = pgd_offset(current->active_mm, address); + pgd_ref = pgd_offset_k(address); + if (pgd_none(*pgd_ref)) + return -1; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215444.243838831@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:57 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Suresh Siddha , + arjan@linux.intel.com, + venkatesh.pallipadi@intel.com, + jeremy@goop.org, + Ingo Molnar +Subject: [patch 80/85] x86, cpa: dont use large pages for kernel identity mapping with DEBUG_PAGEALLOC +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-cpa-dont-use-large-pages-for-kernel-identity-mapping-with-debug_pagealloc.patch +Content-Length: 4648 +Lines: 148 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Suresh Siddha + +commit 0b8fdcbcd287a1fbe66817491e6149841ae25705 upstream. + +Don't use large pages for kernel identity mapping with DEBUG_PAGEALLOC. +This will remove the need to split the large page for the +allocated kernel page in the interrupt context. + +This will simplify cpa code(as we don't do the split any more from the +interrupt context). cpa code simplication in the subsequent patches. + +Tested-by: Tony Battersby +Signed-off-by: Suresh Siddha +Cc: Suresh Siddha +Cc: arjan@linux.intel.com +Cc: venkatesh.pallipadi@intel.com +Cc: jeremy@goop.org +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/mm/init_32.c | 18 ++++++++++++++---- + arch/x86/mm/init_64.c | 26 ++++++++++++++++++++------ + 2 files changed, 34 insertions(+), 10 deletions(-) + +--- a/arch/x86/mm/init_32.c ++++ b/arch/x86/mm/init_32.c +@@ -718,7 +718,7 @@ void __init setup_bootmem_allocator(void + after_init_bootmem = 1; + } + +-static void __init find_early_table_space(unsigned long end) ++static void __init find_early_table_space(unsigned long end, int use_pse) + { + unsigned long puds, pmds, ptes, tables, start; + +@@ -728,7 +728,7 @@ static void __init find_early_table_spac + pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT; + tables += PAGE_ALIGN(pmds * sizeof(pmd_t)); + +- if (cpu_has_pse) { ++ if (use_pse) { + unsigned long extra; + + extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT); +@@ -768,12 +768,22 @@ unsigned long __init_refok init_memory_m + pgd_t *pgd_base = swapper_pg_dir; + unsigned long start_pfn, end_pfn; + unsigned long big_page_start; ++#ifdef CONFIG_DEBUG_PAGEALLOC ++ /* ++ * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages. ++ * This will simplify cpa(), which otherwise needs to support splitting ++ * large pages into small in interrupt context, etc. ++ */ ++ int use_pse = 0; ++#else ++ int use_pse = cpu_has_pse; ++#endif + + /* + * Find space for the kernel direct mapping tables. + */ + if (!after_init_bootmem) +- find_early_table_space(end); ++ find_early_table_space(end, use_pse); + + #ifdef CONFIG_X86_PAE + set_nx(); +@@ -819,7 +829,7 @@ unsigned long __init_refok init_memory_m + end_pfn = (end>>PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT); + if (start_pfn < end_pfn) + kernel_physical_mapping_init(pgd_base, start_pfn, end_pfn, +- cpu_has_pse); ++ use_pse); + + /* tail is not big page alignment ? */ + start_pfn = end_pfn; +--- a/arch/x86/mm/init_64.c ++++ b/arch/x86/mm/init_64.c +@@ -446,13 +446,14 @@ phys_pud_update(pgd_t *pgd, unsigned lon + return phys_pud_init(pud, addr, end, page_size_mask); + } + +-static void __init find_early_table_space(unsigned long end) ++static void __init find_early_table_space(unsigned long end, int use_pse, ++ int use_gbpages) + { + unsigned long puds, pmds, ptes, tables, start; + + puds = (end + PUD_SIZE - 1) >> PUD_SHIFT; + tables = round_up(puds * sizeof(pud_t), PAGE_SIZE); +- if (direct_gbpages) { ++ if (use_gbpages) { + unsigned long extra; + extra = end - ((end>>PUD_SHIFT) << PUD_SHIFT); + pmds = (extra + PMD_SIZE - 1) >> PMD_SHIFT; +@@ -460,7 +461,7 @@ static void __init find_early_table_spac + pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT; + tables += round_up(pmds * sizeof(pmd_t), PAGE_SIZE); + +- if (cpu_has_pse) { ++ if (use_pse) { + unsigned long extra; + extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT); + ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; +@@ -571,6 +572,7 @@ unsigned long __init_refok init_memory_m + + struct map_range mr[NR_RANGE_MR]; + int nr_range, i; ++ int use_pse, use_gbpages; + + printk(KERN_INFO "init_memory_mapping\n"); + +@@ -584,9 +586,21 @@ unsigned long __init_refok init_memory_m + if (!after_bootmem) + init_gbpages(); + +- if (direct_gbpages) ++#ifdef CONFIG_DEBUG_PAGEALLOC ++ /* ++ * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages. ++ * This will simplify cpa(), which otherwise needs to support splitting ++ * large pages into small in interrupt context, etc. ++ */ ++ use_pse = use_gbpages = 0; ++#else ++ use_pse = cpu_has_pse; ++ use_gbpages = direct_gbpages; ++#endif ++ ++ if (use_gbpages) + page_size_mask |= 1 << PG_LEVEL_1G; +- if (cpu_has_pse) ++ if (use_pse) + page_size_mask |= 1 << PG_LEVEL_2M; + + memset(mr, 0, sizeof(mr)); +@@ -647,7 +661,7 @@ unsigned long __init_refok init_memory_m + (mr[i].page_size_mask & (1< +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:58 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jiri Slaby , + Ingo Molnar +Subject: [patch 81/85] x86: fix RIP printout in early_idt_handler +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=x86-fix-rip-printout-in-early_idt_handler.patch +Content-Length: 786 +Lines: 29 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Jiri Slaby + +commit 7aed55d1085f71241284a30af0300feea48c36db upstream. + +Impact: fix debug/crash printout + +Since errorcode is popped out, RIP is on the top of the stack. +Use real RIP value instead of wrong CS. + +Signed-off-by: Jiri Slaby +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/head_64.S | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/head_64.S ++++ b/arch/x86/kernel/head_64.S +@@ -305,7 +305,7 @@ ENTRY(early_idt_handler) + call dump_stack + #ifdef CONFIG_KALLSYMS + leaq early_idt_ripmsg(%rip),%rdi +- movq 8(%rsp),%rsi # get rip again ++ movq 0(%rsp),%rsi # get rip again + call __print_symbol + #endif + #endif /* EARLY_PRINTK */ + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215444.500111206@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:53:59 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" , + Jesse Barnes +Subject: [patch 82/85] PCI: Rework default handling of suspend and resume +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=pci-rework-default-handling-of-suspend-and-resume.patch +Content-Length: 7906 +Lines: 260 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Rafael J. Wysocki + +commit 355a72d75b3b4f4877db4c9070c798238028ecb5 upstream. + +Rework the handling of suspend and resume of PCI devices which have +no drivers or the drivers of which do not provide any suspend-resume +callbacks in such a way that their standard PCI configuration +registers will be saved and restored with interrupts disabled. This +should prevent such devices, including PCI bridges, from being +resumed too late to be able to function correctly during the resume +of the other PCI devices that may depend on them. + +Also, to remove one possible source of future confusion, drop the +default handling of suspend and resume for PCI devices with drivers +providing the 'pm' object introduced by the new suspend-resume +framework (there are no such PCI drivers at the moment). + +This patch addresses the regression from 2.6.26 tracked as +http://bugzilla.kernel.org/show_bug.cgi?id=12121 . + +Signed-off-by: Rafael J. Wysocki +Cc: Jesse Barnes +Cc: Greg Kroah-Hartman + +--- + drivers/pci/pci-driver.c | 90 ++++++++++++++++++++++++++++++----------------- + 1 file changed, 59 insertions(+), 31 deletions(-) + +--- a/drivers/pci/pci-driver.c ++++ b/drivers/pci/pci-driver.c +@@ -287,6 +287,14 @@ static void pci_device_shutdown(struct d + + #ifdef CONFIG_PM_SLEEP + ++static bool pci_has_legacy_pm_support(struct pci_dev *pci_dev) ++{ ++ struct pci_driver *drv = pci_dev->driver; ++ ++ return drv && (drv->suspend || drv->suspend_late || drv->resume ++ || drv->resume_early); ++} ++ + /* + * Default "suspend" method for devices that have no driver provided suspend, + * or not even a driver at all. +@@ -304,14 +312,22 @@ static void pci_default_pm_suspend(struc + + /* + * Default "resume" method for devices that have no driver provided resume, +- * or not even a driver at all. ++ * or not even a driver at all (first part). + */ +-static int pci_default_pm_resume(struct pci_dev *pci_dev) ++static void pci_default_pm_resume_early(struct pci_dev *pci_dev) + { +- int retval = 0; +- + /* restore the PCI config space */ + pci_restore_state(pci_dev); ++} ++ ++/* ++ * Default "resume" method for devices that have no driver provided resume, ++ * or not even a driver at all (second part). ++ */ ++static int pci_default_pm_resume_late(struct pci_dev *pci_dev) ++{ ++ int retval; ++ + /* if the device was enabled before suspend, reenable */ + retval = pci_reenable_device(pci_dev); + /* +@@ -358,10 +374,12 @@ static int pci_legacy_resume(struct devi + struct pci_dev * pci_dev = to_pci_dev(dev); + struct pci_driver * drv = pci_dev->driver; + +- if (drv && drv->resume) ++ if (drv && drv->resume) { + error = drv->resume(pci_dev); +- else +- error = pci_default_pm_resume(pci_dev); ++ } else { ++ pci_default_pm_resume_early(pci_dev); ++ error = pci_default_pm_resume_late(pci_dev); ++ } + return error; + } + +@@ -407,10 +425,8 @@ static int pci_pm_suspend(struct device + if (drv->pm->suspend) { + error = drv->pm->suspend(dev); + suspend_report_result(drv->pm->suspend, error); +- } else { +- pci_default_pm_suspend(pci_dev); + } +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_suspend(dev, PMSG_SUSPEND); + } + pci_fixup_device(pci_fixup_suspend, pci_dev); +@@ -429,8 +445,10 @@ static int pci_pm_suspend_noirq(struct d + error = drv->pm->suspend_noirq(dev); + suspend_report_result(drv->pm->suspend_noirq, error); + } +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_suspend_late(dev, PMSG_SUSPEND); ++ } else { ++ pci_default_pm_suspend(pci_dev); + } + + return error; +@@ -440,15 +458,17 @@ static int pci_pm_resume(struct device * + { + struct pci_dev *pci_dev = to_pci_dev(dev); + struct device_driver *drv = dev->driver; +- int error; ++ int error = 0; + + pci_fixup_device(pci_fixup_resume, pci_dev); + + if (drv && drv->pm) { +- error = drv->pm->resume ? drv->pm->resume(dev) : +- pci_default_pm_resume(pci_dev); +- } else { ++ if (drv->pm->resume) ++ error = drv->pm->resume(dev); ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_resume(dev); ++ } else { ++ error = pci_default_pm_resume_late(pci_dev); + } + + return error; +@@ -465,8 +485,10 @@ static int pci_pm_resume_noirq(struct de + if (drv && drv->pm) { + if (drv->pm->resume_noirq) + error = drv->pm->resume_noirq(dev); +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_resume_early(dev); ++ } else { ++ pci_default_pm_resume_early(pci_dev); + } + + return error; +@@ -493,10 +515,8 @@ static int pci_pm_freeze(struct device * + if (drv->pm->freeze) { + error = drv->pm->freeze(dev); + suspend_report_result(drv->pm->freeze, error); +- } else { +- pci_default_pm_suspend(pci_dev); + } +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_suspend(dev, PMSG_FREEZE); + pci_fixup_device(pci_fixup_suspend, pci_dev); + } +@@ -515,8 +535,10 @@ static int pci_pm_freeze_noirq(struct de + error = drv->pm->freeze_noirq(dev); + suspend_report_result(drv->pm->freeze_noirq, error); + } +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_suspend_late(dev, PMSG_FREEZE); ++ } else { ++ pci_default_pm_suspend(pci_dev); + } + + return error; +@@ -524,14 +546,15 @@ static int pci_pm_freeze_noirq(struct de + + static int pci_pm_thaw(struct device *dev) + { ++ struct pci_dev *pci_dev = to_pci_dev(dev); + struct device_driver *drv = dev->driver; + int error = 0; + + if (drv && drv->pm) { + if (drv->pm->thaw) + error = drv->pm->thaw(dev); +- } else { +- pci_fixup_device(pci_fixup_resume, to_pci_dev(dev)); ++ } else if (pci_has_legacy_pm_support(pci_dev)) { ++ pci_fixup_device(pci_fixup_resume, pci_dev); + error = pci_legacy_resume(dev); + } + +@@ -547,7 +570,7 @@ static int pci_pm_thaw_noirq(struct devi + if (drv && drv->pm) { + if (drv->pm->thaw_noirq) + error = drv->pm->thaw_noirq(dev); +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + pci_fixup_device(pci_fixup_resume_early, pci_dev); + error = pci_legacy_resume_early(dev); + } +@@ -557,17 +580,18 @@ static int pci_pm_thaw_noirq(struct devi + + static int pci_pm_poweroff(struct device *dev) + { ++ struct pci_dev *pci_dev = to_pci_dev(dev); + struct device_driver *drv = dev->driver; + int error = 0; + +- pci_fixup_device(pci_fixup_suspend, to_pci_dev(dev)); ++ pci_fixup_device(pci_fixup_suspend, pci_dev); + + if (drv && drv->pm) { + if (drv->pm->poweroff) { + error = drv->pm->poweroff(dev); + suspend_report_result(drv->pm->poweroff, error); + } +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_suspend(dev, PMSG_HIBERNATE); + } + +@@ -585,7 +609,7 @@ static int pci_pm_poweroff_noirq(struct + error = drv->pm->poweroff_noirq(dev); + suspend_report_result(drv->pm->poweroff_noirq, error); + } +- } else { ++ } else if (pci_has_legacy_pm_support(to_pci_dev(dev))) { + error = pci_legacy_suspend_late(dev, PMSG_HIBERNATE); + } + +@@ -596,13 +620,15 @@ static int pci_pm_restore(struct device + { + struct pci_dev *pci_dev = to_pci_dev(dev); + struct device_driver *drv = dev->driver; +- int error; ++ int error = 0; + + if (drv && drv->pm) { +- error = drv->pm->restore ? drv->pm->restore(dev) : +- pci_default_pm_resume(pci_dev); +- } else { ++ if (drv->pm->restore) ++ error = drv->pm->restore(dev); ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_resume(dev); ++ } else { ++ error = pci_default_pm_resume_late(pci_dev); + } + pci_fixup_device(pci_fixup_resume, pci_dev); + +@@ -620,8 +646,10 @@ static int pci_pm_restore_noirq(struct d + if (drv && drv->pm) { + if (drv->pm->restore_noirq) + error = drv->pm->restore_noirq(dev); +- } else { ++ } else if (pci_has_legacy_pm_support(pci_dev)) { + error = pci_legacy_resume_early(dev); ++ } else { ++ pci_default_pm_resume_early(pci_dev); + } + pci_fixup_device(pci_fixup_resume_early, pci_dev); + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215444.630612010@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:54:00 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" , + Jesse Barnes +Subject: [patch 83/85] PCI: Suspend and resume PCI Express ports with interrupts disabled +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=pci-suspend-and-resume-pci-express-ports-with-interrupts-disabled.patch +Content-Length: 1988 +Lines: 63 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Rafael J. Wysocki + +commit 90d25f246ddefbb743764f8d45ae97e545a6ee86 upstream + +I don't see why the suspend and resume of PCI Express ports should be +handled with interrupts enabled and it may even lead to problems in +some situations. For this reason, move the suspending and resuming +of PCI Express ports into ->suspend_late() and ->resume_early() +callbacks executed with interrupts disabled. + +This patch addresses the regression from 2.6.26 tracked as +http://bugzilla.kernel.org/show_bug.cgi?id=12121 . + +Acked-by: Linus Torvalds +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pcie/portdrv_pci.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/pci/pcie/portdrv_pci.c ++++ b/drivers/pci/pcie/portdrv_pci.c +@@ -50,7 +50,7 @@ static int pcie_portdrv_restore_config(s + } + + #ifdef CONFIG_PM +-static int pcie_portdrv_suspend(struct pci_dev *dev, pm_message_t state) ++static int pcie_portdrv_suspend_late(struct pci_dev *dev, pm_message_t state) + { + int ret = pcie_port_device_suspend(dev, state); + +@@ -59,14 +59,14 @@ static int pcie_portdrv_suspend(struct p + return ret; + } + +-static int pcie_portdrv_resume(struct pci_dev *dev) ++static int pcie_portdrv_resume_early(struct pci_dev *dev) + { + pcie_portdrv_restore_config(dev); + return pcie_port_device_resume(dev); + } + #else +-#define pcie_portdrv_suspend NULL +-#define pcie_portdrv_resume NULL ++#define pcie_portdrv_suspend_late NULL ++#define pcie_portdrv_resume_early NULL + #endif + + /* +@@ -282,8 +282,8 @@ static struct pci_driver pcie_portdriver + .probe = pcie_portdrv_probe, + .remove = pcie_portdrv_remove, + +- .suspend = pcie_portdrv_suspend, +- .resume = pcie_portdrv_resume, ++ .suspend_late = pcie_portdrv_suspend_late, ++ .resume_early = pcie_portdrv_resume_early, + + .err_handler = &pcie_portdrv_err_handler, + }; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:44 2009 +Message-Id: <20090115215444.775322650@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:54:01 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" , + Jesse Barnes +Subject: [patch 84/85] PCI: handle PCI state saving with interrupts disabled +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=pci-handle-pci-state-saving-with-interrupts-disabled.patch +Content-Length: 4762 +Lines: 162 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Rafael J. Wysocki + +commit 63f4898ace2788a89ed685672aab092e1c3e50e6 upstream. + +Since interrupts will soon be disabled at PCI resume time, we need to +pre-allocate memory to save/restore PCI config space (or use GFP_ATOMIC, +but this is safer). + +Reported-by: Linus Torvalds +Signed-off-by: "Rafael J. Wysocki" +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pci.c | 72 ++++++++++++++++++++++++++++++++++++---------------- + drivers/pci/pci.h | 1 + drivers/pci/probe.c | 3 ++ + 3 files changed, 54 insertions(+), 22 deletions(-) + +--- a/drivers/pci/pci.c ++++ b/drivers/pci/pci.c +@@ -636,19 +636,14 @@ static int pci_save_pcie_state(struct pc + int pos, i = 0; + struct pci_cap_saved_state *save_state; + u16 *cap; +- int found = 0; + + pos = pci_find_capability(dev, PCI_CAP_ID_EXP); + if (pos <= 0) + return 0; + + save_state = pci_find_saved_cap(dev, PCI_CAP_ID_EXP); +- if (!save_state) +- save_state = kzalloc(sizeof(*save_state) + sizeof(u16) * 4, GFP_KERNEL); +- else +- found = 1; + if (!save_state) { +- dev_err(&dev->dev, "out of memory in pci_save_pcie_state\n"); ++ dev_err(&dev->dev, "buffer not found in %s\n", __FUNCTION__); + return -ENOMEM; + } + cap = (u16 *)&save_state->data[0]; +@@ -657,9 +652,7 @@ static int pci_save_pcie_state(struct pc + pci_read_config_word(dev, pos + PCI_EXP_LNKCTL, &cap[i++]); + pci_read_config_word(dev, pos + PCI_EXP_SLTCTL, &cap[i++]); + pci_read_config_word(dev, pos + PCI_EXP_RTCTL, &cap[i++]); +- save_state->cap_nr = PCI_CAP_ID_EXP; +- if (!found) +- pci_add_saved_cap(dev, save_state); ++ + return 0; + } + +@@ -684,30 +677,21 @@ static void pci_restore_pcie_state(struc + + static int pci_save_pcix_state(struct pci_dev *dev) + { +- int pos, i = 0; ++ int pos; + struct pci_cap_saved_state *save_state; +- u16 *cap; +- int found = 0; + + pos = pci_find_capability(dev, PCI_CAP_ID_PCIX); + if (pos <= 0) + return 0; + + save_state = pci_find_saved_cap(dev, PCI_CAP_ID_PCIX); +- if (!save_state) +- save_state = kzalloc(sizeof(*save_state) + sizeof(u16), GFP_KERNEL); +- else +- found = 1; + if (!save_state) { +- dev_err(&dev->dev, "out of memory in pci_save_pcie_state\n"); ++ dev_err(&dev->dev, "buffer not found in %s\n", __FUNCTION__); + return -ENOMEM; + } +- cap = (u16 *)&save_state->data[0]; + +- pci_read_config_word(dev, pos + PCI_X_CMD, &cap[i++]); +- save_state->cap_nr = PCI_CAP_ID_PCIX; +- if (!found) +- pci_add_saved_cap(dev, save_state); ++ pci_read_config_word(dev, pos + PCI_X_CMD, (u16 *)save_state->data); ++ + return 0; + } + +@@ -726,6 +710,50 @@ static void pci_restore_pcix_state(struc + pci_write_config_word(dev, pos + PCI_X_CMD, cap[i++]); + } + ++ /** ++ * pci_add_save_buffer - allocate buffer for saving given capability registers ++ * @dev: the PCI device ++ * @cap: the capability to allocate the buffer for ++ * @size: requested size of the buffer ++ */ ++static int pci_add_cap_save_buffer( ++ struct pci_dev *dev, char cap, unsigned int size) ++{ ++ int pos; ++ struct pci_cap_saved_state *save_state; ++ ++ pos = pci_find_capability(dev, cap); ++ if (pos <= 0) ++ return 0; ++ ++ save_state = kzalloc(sizeof(*save_state) + size, GFP_KERNEL); ++ if (!save_state) ++ return -ENOMEM; ++ ++ save_state->cap_nr = cap; ++ pci_add_saved_cap(dev, save_state); ++ ++ return 0; ++} ++ ++/** ++ * pci_allocate_cap_save_buffers - allocate buffers for saving capabilities ++ * @dev: the PCI device ++ */ ++void pci_allocate_cap_save_buffers(struct pci_dev *dev) ++{ ++ int error; ++ ++ error = pci_add_cap_save_buffer(dev, PCI_CAP_ID_EXP, 4 * sizeof(u16)); ++ if (error) ++ dev_err(&dev->dev, ++ "unable to preallocate PCI Express save buffer\n"); ++ ++ error = pci_add_cap_save_buffer(dev, PCI_CAP_ID_PCIX, sizeof(u16)); ++ if (error) ++ dev_err(&dev->dev, ++ "unable to preallocate PCI-X save buffer\n"); ++} + + /** + * pci_save_state - save the PCI configuration space of a device before suspending +--- a/drivers/pci/pci.h ++++ b/drivers/pci/pci.h +@@ -35,6 +35,7 @@ struct pci_platform_pm_ops { + + extern int pci_set_platform_pm(struct pci_platform_pm_ops *ops); + extern void pci_pm_init(struct pci_dev *dev); ++extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); + + extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); + extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); +--- a/drivers/pci/probe.c ++++ b/drivers/pci/probe.c +@@ -1028,6 +1028,9 @@ void pci_device_add(struct pci_dev *dev, + /* Fix up broken headers */ + pci_fixup_device(pci_fixup_header, dev); + ++ /* Buffers for saving PCIe and PCI-X capabilities */ ++ pci_allocate_cap_save_buffers(dev); ++ + /* Initialize power management of the device */ + pci_pm_init(dev); + + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:45 2009 +Message-Id: <20090115215444.903723676@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:54:02 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" , + Jesse Barnes +Subject: [patch 85/85] PCI PM: Split PCI Express port suspend-resume +References: <20090115215237.906089480@mini.kroah.org> +Content-Disposition: inline; filename=pci-pm-split-pci-express-port-suspend-resume.patch +Content-Length: 2549 +Lines: 87 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Rafael J. Wysocki + +commit a79d682f789730dfabaebbb507c87a90c0671a62 upstream + +Suspend-resume of PCI Express ports has recently been moved into +_suspend_late() and _resume_early() callbacks, but some functions +executed from there should not be called with interrupts disabled, +eg. pci_enable_device(). For this reason, split the suspend-resume +of PCI Express ports into parts to be executed with interrupts +disabled and with interrupts enabled. + +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pcie/portdrv_pci.c | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +--- a/drivers/pci/pcie/portdrv_pci.c ++++ b/drivers/pci/pcie/portdrv_pci.c +@@ -41,7 +41,6 @@ static int pcie_portdrv_restore_config(s + { + int retval; + +- pci_restore_state(dev); + retval = pci_enable_device(dev); + if (retval) + return retval; +@@ -50,23 +49,32 @@ static int pcie_portdrv_restore_config(s + } + + #ifdef CONFIG_PM +-static int pcie_portdrv_suspend_late(struct pci_dev *dev, pm_message_t state) ++static int pcie_portdrv_suspend(struct pci_dev *dev, pm_message_t state) + { +- int ret = pcie_port_device_suspend(dev, state); ++ return pcie_port_device_suspend(dev, state); ++ ++} + +- if (!ret) +- ret = pcie_portdrv_save_config(dev); +- return ret; ++static int pcie_portdrv_suspend_late(struct pci_dev *dev, pm_message_t state) ++{ ++ return pci_save_state(dev); + } + + static int pcie_portdrv_resume_early(struct pci_dev *dev) + { ++ return pci_restore_state(dev); ++} ++ ++static int pcie_portdrv_resume(struct pci_dev *dev) ++{ + pcie_portdrv_restore_config(dev); + return pcie_port_device_resume(dev); + } + #else ++#define pcie_portdrv_suspend NULL + #define pcie_portdrv_suspend_late NULL + #define pcie_portdrv_resume_early NULL ++#define pcie_portdrv_resume NULL + #endif + + /* +@@ -221,6 +229,7 @@ static pci_ers_result_t pcie_portdrv_slo + + /* If fatal, restore cfg space for possible link reset at upstream */ + if (dev->error_state == pci_channel_io_frozen) { ++ pci_restore_state(dev); + pcie_portdrv_restore_config(dev); + pci_enable_pcie_error_reporting(dev); + } +@@ -282,8 +291,10 @@ static struct pci_driver pcie_portdriver + .probe = pcie_portdrv_probe, + .remove = pcie_portdrv_remove, + ++ .suspend = pcie_portdrv_suspend, + .suspend_late = pcie_portdrv_suspend_late, + .resume_early = pcie_portdrv_resume_early, ++ .resume = pcie_portdrv_resume, + + .err_handler = &pcie_portdrv_err_handler, + }; + + +From gregkh@mini.kroah.org Thu Jan 15 13:54:33 2009 +Message-Id: <20090115215237.906089480@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Thu, 15 Jan 2009 13:52:37 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk +Subject: [patch 00/85] 2.6.27.12-stable review +Content-Length: 9525 +Lines: 193 + +This is the start of the stable review cycle for the 2.6.27.12 release. +There are 85 patches in this series, all will be posted as a response to +this one. If anyone has any issues with these being applied, please let +us know. If anyone is a maintainer of the proper subsystem, and wants +to add a Signed-off-by: line to the patch, please respond with it. + +These patches are sent out with a number of different people on the Cc: +line. If you wish to be a reviewer, please email stable@kernel.org to +add your name to the list. If you want to be off the reviewer list, +also email us. + +Responses should be made by Saturday, January 17, 20:00:00 UTC. +Anything received after that time might be too late. + +The whole patch series can be found in one patch at: + kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.27.12-rc1.gz +and the diffstat can be found below. + + +thanks, + +greg k-h + +-------------- + + Makefile | 2 +- + arch/Kconfig | 3 + + arch/alpha/kernel/entry.S | 8 +- + arch/alpha/kernel/systbls.S | 2 +- + arch/arm/kernel/calls.S | 2 +- + arch/cris/arch-v10/kernel/entry.S | 2 +- + arch/cris/arch-v32/kernel/entry.S | 2 +- + arch/h8300/kernel/syscalls.S | 2 +- + arch/ia64/ia32/ia32_entry.S | 2 +- + arch/ia64/include/asm/unistd.h | 2 +- + arch/ia64/kernel/entry.S | 2 +- + arch/ia64/kernel/sys_ia64.c | 2 +- + arch/m68k/kernel/entry.S | 2 +- + arch/m68knommu/kernel/syscalltable.S | 2 +- + arch/mips/kernel/scall32-o32.S | 2 +- + arch/mn10300/kernel/entry.S | 2 +- + arch/powerpc/Kconfig | 1 + + arch/powerpc/include/asm/systbl.h | 2 +- + arch/powerpc/platforms/pseries/Kconfig | 2 +- + arch/s390/Kconfig | 1 + + arch/s390/kernel/compat_wrapper.S | 4 +- + arch/s390/kernel/entry.h | 16 ++-- + arch/s390/kernel/process.c | 9 +- + arch/s390/kernel/signal.c | 19 ++-- + arch/s390/kernel/sys_s390.c | 35 ++++--- + arch/s390/kernel/syscalls.S | 12 +- + arch/sh/kernel/sys_sh32.c | 2 +- + arch/sh/kernel/syscalls_32.S | 4 +- + arch/sh/kernel/syscalls_64.S | 2 +- + arch/sparc/kernel/entry.S | 4 +- + arch/sparc/kernel/systbls.S | 4 +- + arch/sparc64/kernel/syscalls.S | 2 +- + arch/sparc64/kernel/systbls.S | 4 +- + arch/x86/Kconfig | 2 +- + arch/x86/kernel/head64.c | 2 +- + arch/x86/kernel/head_64.S | 2 +- + arch/x86/kernel/syscall_table_32.S | 2 +- + arch/x86/kernel/tlb_uv.c | 9 -- + arch/x86/mm/fault.c | 2 +- + arch/x86/mm/init_32.c | 18 +++- + arch/x86/mm/init_64.c | 26 ++++- + drivers/dma/ioat_dma.c | 13 ++- + drivers/md/bitmap.c | 8 +- + drivers/md/dm-log.c | 5 + + drivers/md/dm-raid1.c | 6 +- + drivers/net/e1000e/e1000.h | 5 + + drivers/net/e1000e/netdev.c | 23 ++++- + drivers/net/e1000e/param.c | 25 +++++ + drivers/net/wireless/iwlwifi/iwl-agn.c | 12 +-- + drivers/net/wireless/iwlwifi/iwl-rx.c | 29 ++++-- + drivers/pci/pci-driver.c | 90 +++++++++++------ + drivers/pci/pci.c | 72 +++++++++---- + drivers/pci/pci.h | 1 + + drivers/pci/pcie/portdrv_pci.c | 21 +++- + drivers/pci/probe.c | 3 + + drivers/pci/syscall.c | 12 +-- + drivers/scsi/eata.c | 15 +++- + drivers/scsi/ibmvscsi/ibmvfc.c | 25 +++-- + drivers/scsi/ibmvscsi/ibmvfc.h | 6 +- + drivers/scsi/mvsas.c | 2 +- + drivers/scsi/pcmcia/aha152x_stub.c | 2 +- + drivers/usb/host/isp1760-if.c | 16 ++- + drivers/usb/misc/emi26.c | 2 +- + drivers/usb/storage/unusual_devs.h | 23 ++++- + fs/affs/file.c | 2 +- + fs/aio.c | 22 ++-- + fs/buffer.c | 6 +- + fs/compat.c | 6 +- + fs/dcache.c | 7 +- + fs/dcookies.c | 10 ++- + fs/ecryptfs/inode.c | 3 +- + fs/eventfd.c | 5 +- + fs/eventpoll.c | 18 ++-- + fs/exec.c | 2 +- + fs/ext3/inode.c | 2 +- + fs/ext3/namei.c | 3 +- + fs/ext4/inode.c | 4 +- + fs/ext4/namei.c | 3 +- + fs/fcntl.c | 11 +- + fs/filesystems.c | 2 +- + fs/fuse/file.c | 4 +- + fs/gfs2/ops_address.c | 2 +- + fs/hostfs/hostfs_kern.c | 2 +- + fs/inotify_user.c | 9 +- + fs/ioctl.c | 2 +- + fs/ioprio.c | 5 +- + fs/jffs2/file.c | 2 +- + fs/libfs.c | 2 +- + fs/locks.c | 2 +- + fs/minix/dir.c | 2 +- + fs/namei.c | 48 +++++---- + fs/namespace.c | 13 +-- + fs/nfs/file.c | 2 +- + fs/nfs/read.c | 6 - + fs/nfsctl.c | 4 +- + fs/open.c | 82 +++++++++------ + fs/pipe.c | 4 +- + fs/quota.c | 3 +- + fs/read_write.c | 49 ++++++--- + fs/readdir.c | 9 +- + fs/reiserfs/inode.c | 2 +- + fs/select.c | 27 +++--- + fs/signalfd.c | 8 +- + fs/smbfs/file.c | 2 +- + fs/splice.c | 12 +- + fs/stat.c | 38 ++++--- + fs/super.c | 2 +- + fs/sync.c | 32 +++++-- + fs/timerfd.c | 10 +- + fs/ubifs/file.c | 9 +- + fs/utimes.c | 11 ++- + fs/xattr.c | 53 +++++------ + include/linux/compat.h | 13 +++ + include/linux/fs.h | 5 +- + include/linux/mm.h | 1 - + include/linux/pagemap.h | 3 +- + include/linux/radix-tree.h | 2 +- + include/linux/syscalls.h | 171 ++++++++++++++++++++++---------- + include/linux/time.h | 1 + + ipc/mqueue.c | 28 +++--- + ipc/msg.c | 12 +- + ipc/sem.c | 18 +++- + ipc/shm.c | 8 +- + kernel/acct.c | 2 +- + kernel/capability.c | 4 +- + kernel/cgroup.c | 6 +- + kernel/exec_domain.c | 3 +- + kernel/exit.c | 17 ++-- + kernel/fork.c | 4 +- + kernel/futex.c | 17 ++-- + kernel/hrtimer.c | 4 +- + kernel/itimer.c | 7 +- + kernel/kexec.c | 5 +- + kernel/module.c | 10 +- + kernel/posix-timers.c | 43 ++++----- + kernel/printk.c | 7 +- + kernel/ptrace.c | 2 +- + kernel/sched.c | 30 +++--- + kernel/sched_clock.c | 5 +- + kernel/signal.c | 59 +++++------- + kernel/sys.c | 70 +++++++------- + kernel/sys_ni.c | 1 + + kernel/sysctl.c | 4 +- + kernel/time.c | 14 ++-- + kernel/time/timekeeping.c | 7 +- + kernel/timer.c | 18 ++-- + kernel/uid16.c | 39 ++++---- + mm/fadvise.c | 18 +++- + mm/filemap.c | 26 ++++-- + mm/fremap.c | 4 +- + mm/madvise.c | 2 +- + mm/mempolicy.c | 24 ++--- + mm/migrate.c | 8 +- + mm/mincore.c | 4 +- + mm/mlock.c | 8 +- + mm/mmap.c | 4 +- + mm/mprotect.c | 4 +- + mm/mremap.c | 6 +- + mm/msync.c | 2 +- + mm/nommu.c | 10 +- + mm/swapfile.c | 4 +- + net/socket.c | 59 ++++++------ + security/device_cgroup.c | 3 + + security/keys/keyctl.c | 22 ++-- + sound/pci/hda/patch_analog.c | 1 + + sound/usb/caiaq/caiaq-device.h | 1 + + sound/usb/caiaq/caiaq-midi.c | 32 ++++--- + 167 files changed, 1227 insertions(+), 860 deletions(-) + diff --git a/queue-2.6.27/md-fix-bitmap-on-external-file-bug.patch b/review-2.6.27/md-fix-bitmap-on-external-file-bug.patch similarity index 100% rename from queue-2.6.27/md-fix-bitmap-on-external-file-bug.patch rename to review-2.6.27/md-fix-bitmap-on-external-file-bug.patch diff --git a/queue-2.6.27/minix-fix-add-link-s-wrong-position-calculation.patch b/review-2.6.27/minix-fix-add-link-s-wrong-position-calculation.patch similarity index 100% rename from queue-2.6.27/minix-fix-add-link-s-wrong-position-calculation.patch rename to review-2.6.27/minix-fix-add-link-s-wrong-position-calculation.patch diff --git a/queue-2.6.27/mm-fix-assertion.patch b/review-2.6.27/mm-fix-assertion.patch similarity index 100% rename from queue-2.6.27/mm-fix-assertion.patch rename to review-2.6.27/mm-fix-assertion.patch diff --git a/queue-2.6.27/mm-lockless-pagecache-barrier-fix.patch b/review-2.6.27/mm-lockless-pagecache-barrier-fix.patch similarity index 100% rename from queue-2.6.27/mm-lockless-pagecache-barrier-fix.patch rename to review-2.6.27/mm-lockless-pagecache-barrier-fix.patch diff --git a/queue-2.6.27/mvsas-increase-port-type-detection-delay-to-suit-seagate-s-10k6-drive-st3450856ss-0003.patch b/review-2.6.27/mvsas-increase-port-type-detection-delay-to-suit-seagate-s-10k6-drive-st3450856ss-0003.patch similarity index 100% rename from queue-2.6.27/mvsas-increase-port-type-detection-delay-to-suit-seagate-s-10k6-drive-st3450856ss-0003.patch rename to review-2.6.27/mvsas-increase-port-type-detection-delay-to-suit-seagate-s-10k6-drive-st3450856ss-0003.patch diff --git a/queue-2.6.27/nfs-remove-redundant-tests-on-reading-new-pages.patch b/review-2.6.27/nfs-remove-redundant-tests-on-reading-new-pages.patch similarity index 100% rename from queue-2.6.27/nfs-remove-redundant-tests-on-reading-new-pages.patch rename to review-2.6.27/nfs-remove-redundant-tests-on-reading-new-pages.patch diff --git a/queue-2.6.27/pci-handle-pci-state-saving-with-interrupts-disabled.patch b/review-2.6.27/pci-handle-pci-state-saving-with-interrupts-disabled.patch similarity index 100% rename from queue-2.6.27/pci-handle-pci-state-saving-with-interrupts-disabled.patch rename to review-2.6.27/pci-handle-pci-state-saving-with-interrupts-disabled.patch diff --git a/queue-2.6.27/pci-pm-split-pci-express-port-suspend-resume.patch b/review-2.6.27/pci-pm-split-pci-express-port-suspend-resume.patch similarity index 100% rename from queue-2.6.27/pci-pm-split-pci-express-port-suspend-resume.patch rename to review-2.6.27/pci-pm-split-pci-express-port-suspend-resume.patch diff --git a/queue-2.6.27/pci-rework-default-handling-of-suspend-and-resume.patch b/review-2.6.27/pci-rework-default-handling-of-suspend-and-resume.patch similarity index 100% rename from queue-2.6.27/pci-rework-default-handling-of-suspend-and-resume.patch rename to review-2.6.27/pci-rework-default-handling-of-suspend-and-resume.patch diff --git a/queue-2.6.27/pci-suspend-and-resume-pci-express-ports-with-interrupts-disabled.patch b/review-2.6.27/pci-suspend-and-resume-pci-express-ports-with-interrupts-disabled.patch similarity index 100% rename from queue-2.6.27/pci-suspend-and-resume-pci-express-ports-with-interrupts-disabled.patch rename to review-2.6.27/pci-suspend-and-resume-pci-express-ports-with-interrupts-disabled.patch diff --git a/queue-2.6.27/powerpc-disable-collaborative-memory-manager-for-kdump.patch b/review-2.6.27/powerpc-disable-collaborative-memory-manager-for-kdump.patch similarity index 100% rename from queue-2.6.27/powerpc-disable-collaborative-memory-manager-for-kdump.patch rename to review-2.6.27/powerpc-disable-collaborative-memory-manager-for-kdump.patch diff --git a/queue-2.6.27/sched_clock-prevent-scd-clock-from-moving-backwards-take-2.patch b/review-2.6.27/sched_clock-prevent-scd-clock-from-moving-backwards-take-2.patch similarity index 100% rename from queue-2.6.27/sched_clock-prevent-scd-clock-from-moving-backwards-take-2.patch rename to review-2.6.27/sched_clock-prevent-scd-clock-from-moving-backwards-take-2.patch diff --git a/queue-2.6.27/scsi-aha152x_cs-fix-regression-that-keeps-driver-from-using-shared-interrupts.patch b/review-2.6.27/scsi-aha152x_cs-fix-regression-that-keeps-driver-from-using-shared-interrupts.patch similarity index 100% rename from queue-2.6.27/scsi-aha152x_cs-fix-regression-that-keeps-driver-from-using-shared-interrupts.patch rename to review-2.6.27/scsi-aha152x_cs-fix-regression-that-keeps-driver-from-using-shared-interrupts.patch diff --git a/queue-2.6.27/scsi-eata-fix-the-data-buffer-accessors-conversion-regression.patch b/review-2.6.27/scsi-eata-fix-the-data-buffer-accessors-conversion-regression.patch similarity index 100% rename from queue-2.6.27/scsi-eata-fix-the-data-buffer-accessors-conversion-regression.patch rename to review-2.6.27/scsi-eata-fix-the-data-buffer-accessors-conversion-regression.patch diff --git a/queue-2.6.27/series b/review-2.6.27/series similarity index 100% rename from queue-2.6.27/series rename to review-2.6.27/series diff --git a/queue-2.6.27/usb-another-unusual_devs-entry-for-another-bad-argosy-storage-device.patch b/review-2.6.27/usb-another-unusual_devs-entry-for-another-bad-argosy-storage-device.patch similarity index 100% rename from queue-2.6.27/usb-another-unusual_devs-entry-for-another-bad-argosy-storage-device.patch rename to review-2.6.27/usb-another-unusual_devs-entry-for-another-bad-argosy-storage-device.patch diff --git a/queue-2.6.27/usb-emi26-fix-oops-on-load.patch b/review-2.6.27/usb-emi26-fix-oops-on-load.patch similarity index 100% rename from queue-2.6.27/usb-emi26-fix-oops-on-load.patch rename to review-2.6.27/usb-emi26-fix-oops-on-load.patch diff --git a/queue-2.6.27/usb-isp1760-use-a-specific-plx-bridge-instead-of-any-bdridge.patch b/review-2.6.27/usb-isp1760-use-a-specific-plx-bridge-instead-of-any-bdridge.patch similarity index 100% rename from queue-2.6.27/usb-isp1760-use-a-specific-plx-bridge-instead-of-any-bdridge.patch rename to review-2.6.27/usb-isp1760-use-a-specific-plx-bridge-instead-of-any-bdridge.patch diff --git a/queue-2.6.27/usb-storage-extend-unusual-range-for-067b-3507.patch b/review-2.6.27/usb-storage-extend-unusual-range-for-067b-3507.patch similarity index 100% rename from queue-2.6.27/usb-storage-extend-unusual-range-for-067b-3507.patch rename to review-2.6.27/usb-storage-extend-unusual-range-for-067b-3507.patch diff --git a/queue-2.6.27/usb-storage-recognizing-and-enabling-nokia-5200-cell-phoes.patch b/review-2.6.27/usb-storage-recognizing-and-enabling-nokia-5200-cell-phoes.patch similarity index 100% rename from queue-2.6.27/usb-storage-recognizing-and-enabling-nokia-5200-cell-phoes.patch rename to review-2.6.27/usb-storage-recognizing-and-enabling-nokia-5200-cell-phoes.patch diff --git a/queue-2.6.27/usb-unusual_devs.h-additions-for-pentax-k10d.patch b/review-2.6.27/usb-unusual_devs.h-additions-for-pentax-k10d.patch similarity index 100% rename from queue-2.6.27/usb-unusual_devs.h-additions-for-pentax-k10d.patch rename to review-2.6.27/usb-unusual_devs.h-additions-for-pentax-k10d.patch diff --git a/queue-2.6.27/x86-avoid-theoretical-vmalloc-fault-loop.patch b/review-2.6.27/x86-avoid-theoretical-vmalloc-fault-loop.patch similarity index 100% rename from queue-2.6.27/x86-avoid-theoretical-vmalloc-fault-loop.patch rename to review-2.6.27/x86-avoid-theoretical-vmalloc-fault-loop.patch diff --git a/queue-2.6.27/x86-cpa-dont-use-large-pages-for-kernel-identity-mapping-with-debug_pagealloc.patch b/review-2.6.27/x86-cpa-dont-use-large-pages-for-kernel-identity-mapping-with-debug_pagealloc.patch similarity index 100% rename from queue-2.6.27/x86-cpa-dont-use-large-pages-for-kernel-identity-mapping-with-debug_pagealloc.patch rename to review-2.6.27/x86-cpa-dont-use-large-pages-for-kernel-identity-mapping-with-debug_pagealloc.patch diff --git a/queue-2.6.27/x86-default-to-swiotlb-y-on-x86_64.patch b/review-2.6.27/x86-default-to-swiotlb-y-on-x86_64.patch similarity index 100% rename from queue-2.6.27/x86-default-to-swiotlb-y-on-x86_64.patch rename to review-2.6.27/x86-default-to-swiotlb-y-on-x86_64.patch diff --git a/queue-2.6.27/x86-fix-incorrect-__read_mostly-on-_boot_cpu_pda.patch b/review-2.6.27/x86-fix-incorrect-__read_mostly-on-_boot_cpu_pda.patch similarity index 100% rename from queue-2.6.27/x86-fix-incorrect-__read_mostly-on-_boot_cpu_pda.patch rename to review-2.6.27/x86-fix-incorrect-__read_mostly-on-_boot_cpu_pda.patch diff --git a/queue-2.6.27/x86-fix-rip-printout-in-early_idt_handler.patch b/review-2.6.27/x86-fix-rip-printout-in-early_idt_handler.patch similarity index 100% rename from queue-2.6.27/x86-fix-rip-printout-in-early_idt_handler.patch rename to review-2.6.27/x86-fix-rip-printout-in-early_idt_handler.patch diff --git a/queue-2.6.27/x86-uv-remove-erroneous-bau-initialization.patch b/review-2.6.27/x86-uv-remove-erroneous-bau-initialization.patch similarity index 100% rename from queue-2.6.27/x86-uv-remove-erroneous-bau-initialization.patch rename to review-2.6.27/x86-uv-remove-erroneous-bau-initialization.patch