]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start 2.6.25.16 review cycle
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 18 Aug 2008 19:22:03 +0000 (12:22 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 18 Aug 2008 19:22:03 +0000 (12:22 -0700)
51 files changed:
review-2.6.25/acer-wmi-fix-wireless-and-bluetooth-on-early-amw0-v2-laptops.patch [moved from queue-2.6.25/acer-wmi-fix-wireless-and-bluetooth-on-early-amw0-v2-laptops.patch with 100% similarity]
review-2.6.25/cifs-fix-compiler-warning-on-64-bit.patch [moved from queue-2.6.25/cifs-fix-compiler-warning-on-64-bit.patch with 100% similarity]
review-2.6.25/cifs-if-get-root-inode-fails-during-mount-cleanup-tree-connection.patch [moved from queue-2.6.25/cifs-if-get-root-inode-fails-during-mount-cleanup-tree-connection.patch with 100% similarity]
review-2.6.25/cifs-mount-of-ipc-breaks-with-iget-patch.patch [moved from queue-2.6.25/cifs-mount-of-ipc-breaks-with-iget-patch.patch with 100% similarity]
review-2.6.25/dccp-change-l-r-must-have-at-least-one-byte-in-the-dccpsf_val-field.patch [moved from queue-2.6.25/dccp-change-l-r-must-have-at-least-one-byte-in-the-dccpsf_val-field.patch with 100% similarity]
review-2.6.25/i2c-fix-null-pointer-dereference-in-i2c_new_probed_device.patch [moved from queue-2.6.25/i2c-fix-null-pointer-dereference-in-i2c_new_probed_device.patch with 100% similarity]
review-2.6.25/ide-cd-fix-endianity-for-the-error-message-in-cdrom_read_capacity.patch [moved from queue-2.6.25/ide-cd-fix-endianity-for-the-error-message-in-cdrom_read_capacity.patch with 100% similarity]
review-2.6.25/ipv6-fix-ip6_xmit-to-send-fragments-if-ipfragok-is-true.patch [moved from queue-2.6.25/ipv6-fix-ip6_xmit-to-send-fragments-if-ipfragok-is-true.patch with 100% similarity]
review-2.6.25/ipvs-fix-possible-deadlock-in-estimator-code.patch [moved from queue-2.6.25/ipvs-fix-possible-deadlock-in-estimator-code.patch with 100% similarity]
review-2.6.25/matrox-maven-fix-a-broken-error-path.patch [moved from queue-2.6.25/matrox-maven-fix-a-broken-error-path.patch with 100% similarity]
review-2.6.25/mbox [new file with mode: 0644]
review-2.6.25/mlock-fix-return-values.patch [moved from queue-2.6.25/mlock-fix-return-values.patch with 100% similarity]
review-2.6.25/netfilter-nf_nat_snmp_basic-fix-a-range-check-in-nat-for-snmp.patch [moved from queue-2.6.25/netfilter-nf_nat_snmp_basic-fix-a-range-check-in-nat-for-snmp.patch with 100% similarity]
review-2.6.25/posix-timers-do_schedule_next_timer-fix-the-setting-of-si_overrun.patch [moved from queue-2.6.25/posix-timers-do_schedule_next_timer-fix-the-setting-of-si_overrun.patch with 100% similarity]
review-2.6.25/posix-timers-fix-posix_timer_event-vs-dequeue_signal-race.patch [moved from queue-2.6.25/posix-timers-fix-posix_timer_event-vs-dequeue_signal-race.patch with 100% similarity]
review-2.6.25/qla2xxx-add-dev_loss_tmo_callbk-terminate_rport_io-callback-support.patch [moved from queue-2.6.25/qla2xxx-add-dev_loss_tmo_callbk-terminate_rport_io-callback-support.patch with 100% similarity]
review-2.6.25/qla2xxx-set-an-rport-s-dev_loss_tmo-value-in-a-consistent-manner.patch [moved from queue-2.6.25/qla2xxx-set-an-rport-s-dev_loss_tmo-value-in-a-consistent-manner.patch with 100% similarity]
review-2.6.25/r8169-avoid-thrashing-pci-conf-space-above-rtl_giga_mac_ver_06.patch [moved from queue-2.6.25/r8169-avoid-thrashing-pci-conf-space-above-rtl_giga_mac_ver_06.patch with 100% similarity]
review-2.6.25/radeon-misc-corrections.patch [moved from queue-2.6.25/radeon-misc-corrections.patch with 100% similarity]
review-2.6.25/radeonfb-fix-accel-engine-hangs.patch [moved from queue-2.6.25/radeonfb-fix-accel-engine-hangs.patch with 100% similarity]
review-2.6.25/random32-seeding-improvement.patch [moved from queue-2.6.25/random32-seeding-improvement.patch with 100% similarity]
review-2.6.25/relay-fix-full-buffer-with-exactly-full-last-subbuffer-accounting-problem.patch [moved from queue-2.6.25/relay-fix-full-buffer-with-exactly-full-last-subbuffer-accounting-problem.patch with 100% similarity]
review-2.6.25/scsi-block-fix-miscalculation-of-sg_io-timeout-in-cdrom_send_packet-handler.patch [moved from queue-2.6.25/scsi-block-fix-miscalculation-of-sg_io-timeout-in-cdrom_send_packet-handler.patch with 100% similarity]
review-2.6.25/scsi-hptiop-add-more-pci-device-ids.patch [moved from queue-2.6.25/scsi-hptiop-add-more-pci-device-ids.patch with 100% similarity]
review-2.6.25/scsi-scsi_transport_spi-fix-oops-in-revalidate.patch [moved from queue-2.6.25/scsi-scsi_transport_spi-fix-oops-in-revalidate.patch with 100% similarity]
review-2.6.25/scsi-ses-fix-vpd-inquiry-overrun.patch [moved from queue-2.6.25/scsi-ses-fix-vpd-inquiry-overrun.patch with 100% similarity]
review-2.6.25/series [moved from queue-2.6.25/series with 100% similarity]
review-2.6.25/sparc64-do-not-clobber-g7-in-setcontext-trap.patch [moved from queue-2.6.25/sparc64-do-not-clobber-g7-in-setcontext-trap.patch with 100% similarity]
review-2.6.25/sparc64-futex_op_andn-fix.patch [moved from queue-2.6.25/sparc64-futex_op_andn-fix.patch with 100% similarity]
review-2.6.25/uml-deal-with-host-time-going-backwards.patch [moved from queue-2.6.25/uml-deal-with-host-time-going-backwards.patch with 100% similarity]
review-2.6.25/uml-deal-with-inaccessible-address-space-start.patch [moved from queue-2.6.25/uml-deal-with-inaccessible-address-space-start.patch with 100% similarity]
review-2.6.25/uml-fix-bad-ntp-interaction-with-clock.patch [moved from queue-2.6.25/uml-fix-bad-ntp-interaction-with-clock.patch with 100% similarity]
review-2.6.25/uml-fix-boot-crash.patch [moved from queue-2.6.25/uml-fix-boot-crash.patch with 100% similarity]
review-2.6.25/uml-fix-build-when-slob-is-enabled.patch [moved from queue-2.6.25/uml-fix-build-when-slob-is-enabled.patch with 100% similarity]
review-2.6.25/uml-fix-gcc-ices-and-unresolved-externs.patch [moved from queue-2.6.25/uml-fix-gcc-ices-and-unresolved-externs.patch with 100% similarity]
review-2.6.25/uml-memcpy-export-needs-to-follow-host-declaration.patch [moved from queue-2.6.25/uml-memcpy-export-needs-to-follow-host-declaration.patch with 100% similarity]
review-2.6.25/uml-missed-kmalloc-in-pcap_user.c.patch [moved from queue-2.6.25/uml-missed-kmalloc-in-pcap_user.c.patch with 100% similarity]
review-2.6.25/uml-missing-export-of-csum_partial-on-uml-amd64.patch [moved from queue-2.6.25/uml-missing-export-of-csum_partial-on-uml-amd64.patch with 100% similarity]
review-2.6.25/uml-path_max-needs-limits.h.patch [moved from queue-2.6.25/uml-path_max-needs-limits.h.patch with 100% similarity]
review-2.6.25/uml-physical-memory-shouldn-t-include-initial-stack.patch [moved from queue-2.6.25/uml-physical-memory-shouldn-t-include-initial-stack.patch with 100% similarity]
review-2.6.25/uml-stub-needs-to-tolerate-sigwinch.patch [moved from queue-2.6.25/uml-stub-needs-to-tolerate-sigwinch.patch with 100% similarity]
review-2.6.25/uml-track-and-make-up-lost-ticks.patch [moved from queue-2.6.25/uml-track-and-make-up-lost-ticks.patch with 100% similarity]
review-2.6.25/uml-work-around-broken-host-ptrace_sysemu.patch [moved from queue-2.6.25/uml-work-around-broken-host-ptrace_sysemu.patch with 100% similarity]
review-2.6.25/usb-ftdi_sio-add-support-for-luminance-stellaris-evaluation-development-kits.patch [moved from queue-2.6.25/usb-ftdi_sio-add-support-for-luminance-stellaris-evaluation-development-kits.patch with 100% similarity]
review-2.6.25/usb-ftdi_sio-add-usb-product-id-for-elv-hs485.patch [moved from queue-2.6.25/usb-ftdi_sio-add-usb-product-id-for-elv-hs485.patch with 100% similarity]
review-2.6.25/usb-pl2023-remove-usb-id-handled-by-ch341.patch [moved from queue-2.6.25/usb-pl2023-remove-usb-id-handled-by-ch341.patch with 100% similarity]
review-2.6.25/usb-serial-don-t-release-unregistered-minors.patch [moved from queue-2.6.25/usb-serial-don-t-release-unregistered-minors.patch with 100% similarity]
review-2.6.25/usb-storage-unusual_devs-entries-for-iriver-t10-and-datafab-cf-sm-reader.patch [moved from queue-2.6.25/usb-storage-unusual_devs-entries-for-iriver-t10-and-datafab-cf-sm-reader.patch with 100% similarity]
review-2.6.25/usb-usb-storage-quirk-around-v1.11-firmware-on-nikon-d4.patch [moved from queue-2.6.25/usb-usb-storage-quirk-around-v1.11-firmware-on-nikon-d4.patch with 100% similarity]
review-2.6.25/x86-fix-setup-code-crashes-on-my-old-486-box.patch [moved from queue-2.6.25/x86-fix-setup-code-crashes-on-my-old-486-box.patch with 100% similarity]
review-2.6.25/x86-fix-spin_is_contended.patch [moved from queue-2.6.25/x86-fix-spin_is_contended.patch with 100% similarity]

diff --git a/review-2.6.25/mbox b/review-2.6.25/mbox
new file mode 100644 (file)
index 0000000..f389869
--- /dev/null
@@ -0,0 +1,5063 @@
+From gregkh@mini.kroah.org Mon Aug 18 12:11:42 2008
+Message-Id: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:12 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/49] 2.6.25-stable review
+
+This is the start of the stable review cycle for the 2.6.25.16 release.
+There are 49 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 Wed, August 20, 17: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.25.16-rc1.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+the -stable release team
+
+
+ Makefile                                 |    2 -
+ arch/sparc64/kernel/signal.c             |    6 ++-
+ arch/um/Makefile                         |    1 
+ arch/um/Makefile-i386                    |    7 +++
+ arch/um/Makefile-x86_64                  |    3 +
+ arch/um/drivers/chan_user.c              |    1 
+ arch/um/drivers/cow_sys.h                |    2 -
+ arch/um/drivers/daemon_user.c            |    4 +-
+ arch/um/drivers/fd.c                     |    2 -
+ arch/um/drivers/mcast_user.c             |    3 +
+ arch/um/drivers/net_user.c               |    2 -
+ arch/um/drivers/pcap_user.c              |    2 -
+ arch/um/drivers/port_user.c              |    2 -
+ arch/um/drivers/pty.c                    |    2 -
+ arch/um/drivers/slip_user.c              |    2 -
+ arch/um/drivers/tty.c                    |    2 -
+ arch/um/drivers/xterm.c                  |    2 -
+ arch/um/include/init.h                   |    8 ++++
+ arch/um/include/os.h                     |    2 -
+ arch/um/include/process.h                |    4 +-
+ arch/um/include/um_malloc.h              |    9 +---
+ arch/um/kernel/mem.c                     |    5 ++
+ arch/um/kernel/time.c                    |    4 +-
+ arch/um/kernel/um_arch.c                 |    7 ++-
+ arch/um/os-Linux/drivers/ethertap_user.c |    4 +-
+ arch/um/os-Linux/helper.c                |    5 +-
+ arch/um/os-Linux/main.c                  |    2 -
+ arch/um/os-Linux/sigio.c                 |    4 +-
+ arch/um/os-Linux/signal.c                |    1 
+ arch/um/os-Linux/skas/process.c          |    2 -
+ arch/um/os-Linux/start_up.c              |   25 ++++++++----
+ arch/um/os-Linux/sys-i386/task_size.c    |   38 ++++++++++++++-----
+ arch/um/os-Linux/sys-x86_64/task_size.c  |    2 -
+ arch/um/os-Linux/time.c                  |   61 ++++++++++++++++++++++++++++---
+ arch/um/sys-x86_64/ksyms.c               |    5 ++
+ arch/x86/boot/boot.h                     |    8 ++++
+ arch/x86/boot/cpucheck.c                 |    8 ----
+ arch/x86/boot/main.c                     |    4 ++
+ block/scsi_ioctl.c                       |    2 -
+ drivers/i2c/i2c-core.c                   |    4 +-
+ drivers/ide/ide-cd.c                     |   18 +++++----
+ drivers/misc/acer-wmi.c                  |   19 +++++++++
+ drivers/net/r8169.c                      |    6 ++-
+ drivers/scsi/hptiop.c                    |    7 +++
+ drivers/scsi/qla2xxx/qla_attr.c          |   43 ++++++++++++++-------
+ drivers/scsi/qla2xxx/qla_def.h           |    1 
+ drivers/scsi/qla2xxx/qla_gbl.h           |    2 +
+ drivers/scsi/qla2xxx/qla_init.c          |   16 ++------
+ drivers/scsi/qla2xxx/qla_os.c            |   55 ++++++++++++++++++++-------
+ drivers/scsi/scsi_transport_spi.c        |    8 ++--
+ drivers/scsi/ses.c                       |   18 +++++++--
+ drivers/usb/serial/ftdi_sio.c            |    5 ++
+ drivers/usb/serial/ftdi_sio.h            |    6 +++
+ drivers/usb/serial/pl2303.c              |    1 
+ drivers/usb/serial/pl2303.h              |    4 --
+ drivers/usb/serial/usb-serial.c          |    7 +--
+ drivers/usb/storage/unusual_devs.h       |   18 ++++++++-
+ drivers/video/aty/radeon_accel.c         |   12 +++++-
+ drivers/video/matrox/matroxfb_maven.c    |    2 -
+ fs/cifs/asn1.c                           |    2 -
+ fs/cifs/cifsfs.c                         |    2 +
+ fs/cifs/inode.c                          |    1 
+ include/asm-sparc64/futex.h              |    2 -
+ include/asm-x86/spinlock.h               |    4 +-
+ include/linux/usb/serial.h               |    3 +
+ include/video/radeon.h                   |    9 +++-
+ kernel/posix-timers.c                    |   19 +++++++--
+ kernel/relay.c                           |   12 +++++-
+ kernel/signal.c                          |    1 
+ lib/random32.c                           |   48 +++++++++++++-----------
+ mm/memory.c                              |   16 ++++++--
+ mm/mlock.c                               |    2 -
+ net/dccp/proto.c                         |    5 ++
+ net/ipv4/ipvs/ip_vs_est.c                |    7 ++-
+ net/ipv4/netfilter/nf_nat_snmp_basic.c   |    2 -
+ net/ipv6/ip6_output.c                    |    4 ++
+ 76 files changed, 464 insertions(+), 182 deletions(-)
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191142.913359914@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:13 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Johannes Berg <johannes@sipsolutions.net>,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [patch 01/49] USB: usb-storage: quirk around v1.11 firmware on Nikon D4
+Content-Disposition: inline; filename=usb-usb-storage-quirk-around-v1.11-firmware-on-nikon-d4.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Dave Jones <davej@redhat.com>
+
+commit b9a097f26e55968cbc52e30a4a2e73d32d7604ce upstream
+
+usb-storage: quirk around v1.11 firmware on Nikon D40
+
+https://bugzilla.redhat.com/show_bug.cgi?id=454028
+Just as in earlier firmware versions, we need to perform this
+quirk for the latest version too.
+
+Speculatively do the entry for the D80 too, as they seem to
+have the same firmware problems historically.
+
+Signed-off-by: Dave Jones <davej@redhat.com>
+Cc: Johannes Berg <johannes@sipsolutions.net>
+Cc: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -357,14 +357,14 @@ UNUSUAL_DEV(  0x04b0, 0x040f, 0x0100, 0x
+               US_FL_FIX_CAPACITY),
+ /* Reported by Emil Larsson <emil@swip.net> */
+-UNUSUAL_DEV(  0x04b0, 0x0411, 0x0100, 0x0110,
++UNUSUAL_DEV(  0x04b0, 0x0411, 0x0100, 0x0111,
+               "NIKON",
+               "NIKON DSC D80",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_FIX_CAPACITY),
+ /* Reported by Ortwin Glueck <odi@odi.ch> */
+-UNUSUAL_DEV(  0x04b0, 0x0413, 0x0110, 0x0110,
++UNUSUAL_DEV(  0x04b0, 0x0413, 0x0110, 0x0111,
+               "NIKON",
+               "NIKON DSC D40",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191143.023201877@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:14 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [patch 02/49] usb-storage: unusual_devs entries for iRiver T10 and Datafab CF+SM reader
+Content-Disposition: inline; filename=usb-storage-unusual_devs-entries-for-iriver-t10-and-datafab-cf-sm-reader.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 368ee6469c327364ea10082a348f91c1f5ba47f7 upstream
+
+This patch (as1115) adds unusual_devs entries with the IGNORE_RESIDE
+flag for the iRiver T10 and the Simple Tech/Datafab CF+SM card
+reader.  Apparently these devices provide reasonable residue values
+for READ and WRITE operations, but not for others like INQUIRY or READ
+CAPACITY.
+
+This fixes the iRiver T10 problem reported in Bugzilla #11125.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1164,6 +1164,13 @@ UNUSUAL_DEV(  0x07c4, 0xa400, 0x0000, 0x
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_FIX_INQUIRY ),
++/* Reported by Rauch Wolke <rauchwolke@gmx.net> */
++UNUSUAL_DEV(  0x07c4, 0xa4a5, 0x0000, 0xffff,
++              "Simple Tech/Datafab",
++              "CF+SM Reader",
++              US_SC_DEVICE, US_PR_DEVICE, NULL,
++              US_FL_IGNORE_RESIDUE ),
++
+ /* Casio QV 2x00/3x00/4000/8000 digital still cameras are not conformant
+  * to the USB storage specification in two ways:
+  * - They tell us they are using transport protocol CBI. In reality they
+@@ -1705,6 +1712,13 @@ UNUSUAL_DEV(  0x2735, 0x100b, 0x0000, 0x
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               US_FL_GO_SLOW ),
++/* Reported by Andrey Rahmatullin <wrar@altlinux.org> */
++UNUSUAL_DEV(  0x4102, 0x1020, 0x0100,  0x0100,
++              "iRiver",
++              "MP3 T10",
++              US_SC_DEVICE, US_PR_DEVICE, NULL,
++              US_FL_IGNORE_RESIDUE ),
++
+ /*
+  * David Härdeman <david@2gen.com>
+  * The key makes the SCSI stack print confusing (but harmless) messages
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191143.205542998@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:15 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [patch 03/49] usb-serial: dont release unregistered minors
+Content-Disposition: inline; filename=usb-serial-don-t-release-unregistered-minors.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 0282b7f2a874e72c18fcd5a112ccf67f71ba7f5c upstream
+
+This patch (as1121) fixes a bug in the USB serial core.  When a device
+is unregistered, the core will give back its minors -- even if the
+device hasn't been assigned any!
+
+The patch reserves the highest minor value (255) to mean that no minor
+was assigned.  It also removes some dead code and does a small style
+fixup.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/usb-serial.c |    7 +++----
+ include/linux/usb/serial.h      |    3 ++-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -119,9 +119,6 @@ static void return_serial(struct usb_ser
+       dbg("%s", __FUNCTION__);
+-      if (serial == NULL)
+-              return;
+-
+       for (i = 0; i < serial->num_ports; ++i) {
+               serial_table[serial->minor + i] = NULL;
+       }
+@@ -140,7 +137,8 @@ static void destroy_serial(struct kref *
+       serial->type->shutdown(serial);
+       /* return the minor range that this device had */
+-      return_serial(serial);
++      if (serial->minor != SERIAL_TTY_NO_MINOR)
++              return_serial(serial);
+       for (i = 0; i < serial->num_ports; ++i)
+               serial->port[i]->open_count = 0;
+@@ -635,6 +633,7 @@ static struct usb_serial * create_serial
+       serial->interface = interface;
+       kref_init(&serial->kref);
+       mutex_init(&serial->disc_mutex);
++      serial->minor = SERIAL_TTY_NO_MINOR;
+       return serial;
+ }
+--- a/include/linux/usb/serial.h
++++ b/include/linux/usb/serial.h
+@@ -18,7 +18,8 @@
+ #include <linux/mutex.h>
+ #define SERIAL_TTY_MAJOR      188     /* Nice legal number now */
+-#define SERIAL_TTY_MINORS     255     /* loads of devices :) */
++#define SERIAL_TTY_MINORS     254     /* loads of devices :) */
++#define SERIAL_TTY_NO_MINOR   255     /* No minor was assigned */
+ /* The maximum number of ports one device can grab at once */
+ #define MAX_NUM_PORTS         8
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191143.390246361@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:16 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tollef Fog Heen <tfheen@err.no>
+Subject: [patch 04/49] USB: pl2023: Remove USB id (4348:5523) handled by ch341
+Content-Disposition: inline; filename=usb-pl2023-remove-usb-id-handled-by-ch341.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tollef Fog Heen <tfheen@err.no>
+
+commit 8c809681ba0289afd0ed7bbb63679a0568dd441d upstream
+
+USB ID 4348:5523 is handled by the ch341 driver.  Remove it from the
+pl2023 driver.
+
+Reverts 002e8f2c80c6be76bb312940bc278fc10b2b2487.
+
+Signed-off-by: Tollef Fog Heen <tfheen@err.no>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/pl2303.c |    1 -
+ drivers/usb/serial/pl2303.h |    4 ----
+ 2 files changed, 5 deletions(-)
+
+--- a/drivers/usb/serial/pl2303.c
++++ b/drivers/usb/serial/pl2303.c
+@@ -87,7 +87,6 @@ static struct usb_device_id id_table [] 
+       { USB_DEVICE(ALCOR_VENDOR_ID, ALCOR_PRODUCT_ID) },
+       { USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
+       { USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) },
+-      { USB_DEVICE(HL340_VENDOR_ID, HL340_PRODUCT_ID) },
+       { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) },
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/pl2303.h
++++ b/drivers/usb/serial/pl2303.h
+@@ -105,10 +105,6 @@
+ #define COREGA_VENDOR_ID      0x07aa
+ #define COREGA_PRODUCT_ID     0x002a
+-/* HL HL-340 (ID: 4348:5523) */
+-#define HL340_VENDOR_ID               0x4348
+-#define HL340_PRODUCT_ID      0x5523
+-
+ /* Y.C. Cable U.S.A., Inc - USB to RS-232 */
+ #define YCCABLE_VENDOR_ID     0x05ad
+ #define YCCABLE_PRODUCT_ID    0x0fba
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191143.584214310@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:17 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Andre Schenk <andre@melior.s.bawue.de>
+Subject: [patch 05/49] USB: ftdi_sio: Add USB Product Id for ELV HS485
+Content-Disposition: inline; filename=usb-ftdi_sio-add-usb-product-id-for-elv-hs485.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Andre Schenk <andre@melior.s.bawue.de>
+
+commit b5894a500127fce1db1309db5f9ca8b77a2ac266 upstream
+
+USB product id registration for the ELV HS485 USB adapter (www.elv.de) to
+their home automation bus system. Applies to 2.6.26.
+
+Signed-off-by: Andre Schenk <andre@melior.s.bawue.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    1 +
+ drivers/usb/serial/ftdi_sio.h |    1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -283,6 +283,7 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1300PC_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ELV_EM1010PC_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ELV_WS500_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_ELV_HS485_PID) },
+       { USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) },
+       { USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) },
+       { USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) },
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -256,6 +256,7 @@
+ #define FTDI_ELV_WS300PC_PID  0xE0F6  /* PC-Wetterstation (WS 300 PC) */
+ #define FTDI_ELV_FHZ1300PC_PID        0xE0E8  /* FHZ 1300 PC */
+ #define FTDI_ELV_WS500_PID    0xE0E9  /* PC-Wetterstation (WS 500) */
++#define FTDI_ELV_HS485_PID    0xE0EA  /* USB to RS-485 adapter */
+ #define FTDI_ELV_EM1010PC_PID 0xE0EF  /* Engery monitor EM 1010 PC */
+ /*
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:43 2008
+Message-Id: <20080818191143.778197833@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:18 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Frederik Kriewitz <frederik@kriewitz.eu>
+Subject: [patch 06/49] USB: ftdi_sio: add support for Luminance Stellaris Evaluation/Development Kits
+Content-Disposition: inline; filename=usb-ftdi_sio-add-support-for-luminance-stellaris-evaluation-development-kits.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Frederik Kriewitz <frederik@kriewitz.eu>
+
+commit a00c3cadc2bf50b3c925acdb3d0e5789b1650498 upstream
+
+The Patch adds support for Luminance Stellaris Evaluation/Development
+Kits (FTDI 2232C based).
+The PIDs were missing.
+
+Successfully tested with a Stellaris LM3S8962 Evaluation kit.
+
+Signed-off-by: Frederik Kriewitz <frederik@kriewitz.eu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    4 ++++
+ drivers/usb/serial/ftdi_sio.h |    5 +++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -367,6 +367,10 @@ static struct usb_device_id id_table_com
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++      { USB_DEVICE(FTDI_VID, LMI_LM3S_DEVEL_BOARD_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++      { USB_DEVICE(FTDI_VID, LMI_LM3S_EVAL_BOARD_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -548,6 +548,11 @@
+ #define OLIMEX_VID                    0x15BA
+ #define OLIMEX_ARM_USB_OCD_PID                0x0003
++/* Luminary Micro Stellaris Boards, VID = FTDI_VID */
++/* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
++#define LMI_LM3S_DEVEL_BOARD_PID      0xbcd8
++#define LMI_LM3S_EVAL_BOARD_PID               0xbcd9
++
+ /* www.elsterelectricity.com Elster Unicom III Optical Probe */
+ #define FTDI_ELSTER_UNICOM_PID                0xE700 /* Product Id */
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:44 2008
+Message-Id: <20080818191143.970226499@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:19 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 07/49] SCSI: ses: fix VPD inquiry overrun
+Content-Disposition: inline; filename=scsi-ses-fix-vpd-inquiry-overrun.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: James Bottomley <James.Bottomley@HansenPartnership.com>
+
+commit 671a99c8eb2f1dde08ac5538d8cd912047c61ddf upstream
+
+There are a few kerneloops.org reports like this one:
+
+http://www.kerneloops.org/search.php?search=ses_match_to_enclosure
+
+That seem to imply we're running off the end of the VPD inquiry data
+(although at 512 bytes, it should be long enough for just about
+anything).  we should be using correctly sized buffers anyway, so put
+those in and hope this oops goes away.
+
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/ses.c |   18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+--- a/drivers/scsi/ses.c
++++ b/drivers/scsi/ses.c
+@@ -345,14 +345,14 @@ static int ses_enclosure_find_by_addr(st
+       return 0;
+ }
+-#define VPD_INQUIRY_SIZE 512
++#define VPD_INQUIRY_SIZE 36
+ static void ses_match_to_enclosure(struct enclosure_device *edev,
+                                  struct scsi_device *sdev)
+ {
+       unsigned char *buf = kmalloc(VPD_INQUIRY_SIZE, GFP_KERNEL);
+       unsigned char *desc;
+-      int len;
++      u16 vpd_len;
+       struct efd efd = {
+               .addr = 0,
+       };
+@@ -372,9 +372,19 @@ static void ses_match_to_enclosure(struc
+                            VPD_INQUIRY_SIZE, NULL, SES_TIMEOUT, SES_RETRIES))
+               goto free;
+-      len = (buf[2] << 8) + buf[3];
++      vpd_len = (buf[2] << 8) + buf[3];
++      kfree(buf);
++      buf = kmalloc(vpd_len, GFP_KERNEL);
++      if (!buf)
++              return;
++      cmd[3] = vpd_len >> 8;
++      cmd[4] = vpd_len & 0xff;
++      if (scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf,
++                           vpd_len, NULL, SES_TIMEOUT, SES_RETRIES))
++              goto free;
++
+       desc = buf + 4;
+-      while (desc < buf + len) {
++      while (desc < buf + vpd_len) {
+               enum scsi_protocol proto = desc[0] >> 4;
+               u8 code_set = desc[0] & 0x0f;
+               u8 piv = desc[1] & 0x80;
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:44 2008
+Message-Id: <20080818191144.175861154@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:20 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 08/49] SCSI: scsi_transport_spi: fix oops in revalidate
+Content-Disposition: inline; filename=scsi-scsi_transport_spi-fix-oops-in-revalidate.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: James Bottomley <James.Bottomley@HansenPartnership.com>
+
+commit e8bac9e0647dd04c83fd0bfe7cdfe2f6dfb100d0 upstream
+
+The class_device->device conversion is causing an oops in revalidate
+because it's assuming that the device_for_each_child iterator will only
+return struct scsi_device children.  The conversion made all former
+class_devices children of the device as well, so this assumption is
+broken.  Fix it.
+
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/scsi_transport_spi.c |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/scsi/scsi_transport_spi.c
++++ b/drivers/scsi/scsi_transport_spi.c
+@@ -360,12 +360,14 @@ spi_transport_rd_attr(rti, "%d\n");
+ spi_transport_rd_attr(pcomp_en, "%d\n");
+ spi_transport_rd_attr(hold_mcs, "%d\n");
+-/* we only care about the first child device so we return 1 */
++/* we only care about the first child device that's a real SCSI device
++ * so we return 1 to terminate the iteration when we find it */
+ static int child_iter(struct device *dev, void *data)
+ {
+-      struct scsi_device *sdev = to_scsi_device(dev);
++      if (!scsi_is_sdev_device(dev))
++              return 0;
+-      spi_dv_device(sdev);
++      spi_dv_device(to_scsi_device(dev));
+       return 1;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:44 2008
+Message-Id: <20080818191144.328536005@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:21 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ HighPoint Linux Team <linux@highpoint-tech.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 09/49] SCSI: hptiop: add more PCI device IDs
+Content-Disposition: inline; filename=scsi-hptiop-add-more-pci-device-ids.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: HighPoint Linux Team <linux@highpoint-tech.com>
+
+commit dd07428b44944b42f699408fe31af47977f1e733 upstream
+
+Add PCI device ID for new adapter models.
+
+Signed-off-by: HighPoint Linux Team <linux@highpoint-tech.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/hptiop.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/scsi/hptiop.c
++++ b/drivers/scsi/hptiop.c
+@@ -1246,6 +1246,13 @@ static struct pci_device_id hptiop_id_ta
+       { PCI_VDEVICE(TTI, 0x3522), (kernel_ulong_t)&hptiop_itl_ops },
+       { PCI_VDEVICE(TTI, 0x3410), (kernel_ulong_t)&hptiop_itl_ops },
+       { PCI_VDEVICE(TTI, 0x3540), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x3530), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x3560), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x4322), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x4210), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x4211), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x4310), (kernel_ulong_t)&hptiop_itl_ops },
++      { PCI_VDEVICE(TTI, 0x4311), (kernel_ulong_t)&hptiop_itl_ops },
+       { PCI_VDEVICE(TTI, 0x3120), (kernel_ulong_t)&hptiop_mv_ops },
+       { PCI_VDEVICE(TTI, 0x3122), (kernel_ulong_t)&hptiop_mv_ops },
+       { PCI_VDEVICE(TTI, 0x3020), (kernel_ulong_t)&hptiop_mv_ops },
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:44 2008
+Message-Id: <20080818191144.518199425@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:22 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tim Wright <timw@splhi.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 10/49] SCSI: block: Fix miscalculation of sg_io timeout in CDROM_SEND_PACKET handler.
+Content-Disposition: inline; filename=scsi-block-fix-miscalculation-of-sg_io-timeout-in-cdrom_send_packet-handler.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tim Wright <timw@splhi.com>
+
+commit ad337591f4fd20de6a0ca03d6715267a5c1d2b16 upstream
+
+It seems cdrwtool in the udftools has been unusable on "modern" kernels
+for some time. A Google search reveals many people with the same issue
+but no solution (cdrwtool fails to format the disk). After spending some
+time tracking down the issue, it comes down to the following:
+
+The udftools still use the older CDROM_SEND_PACKET interface to send
+things like FORMAT_UNIT through to the drive. They should really be
+updated, but that's another story. Since most distros are using libata
+now, the cd or dvd burner appears as a SCSI device, and we wind up in
+block/scsi_ioctl.c. Here, the code tries to take the "struct
+cdrom_generic_command" and translate it and stuff it into a "struct
+sg_io_hdr" structure so it can pass it to the modern sg_io() routine
+instead. Unfortunately, there is one error, or rather an omission in the
+translation. The timeout that is passed in in the "struct
+cdrom_generic_command" is in HZ=100 units, and this is modified and
+correctly converted to jiffies by use of clock_t_to_jiffies(). However,
+a little further down, this cgc.timeout value in jiffies is simply
+copied into the sg_io_hdr timeout, which should be in milliseconds.
+Since most modern x86 kernels seems to be getting build with HZ=250, the
+timeout that is passed to sg_io and eventually converted to the
+timeout_per_command member of the scsi_cmnd structure is now four times
+too small. Since cdrwtool tries to set the timeout to one hour for the
+FORMAT_UNIT command, and it takes about 20 minutes to format a 4x CDRW,
+the SCSI error-handler kicks in after the FORMAT_UNIT completes because
+it took longer than the incorrectly-calculated timeout.
+
+[jejb: fix up whitespace]
+Signed-off-by: Tim Wright <timw@splhi.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ block/scsi_ioctl.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/block/scsi_ioctl.c
++++ b/block/scsi_ioctl.c
+@@ -633,7 +633,7 @@ int scsi_cmd_ioctl(struct file *file, st
+                       hdr.sbp = cgc.sense;
+                       if (hdr.sbp)
+                               hdr.mx_sb_len = sizeof(struct request_sense);
+-                      hdr.timeout = cgc.timeout;
++                      hdr.timeout = jiffies_to_msecs(cgc.timeout);
+                       hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd;
+                       hdr.cmd_len = sizeof(cgc.cmd);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:44 2008
+Message-Id: <20080818191144.706842185@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:23 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tom Zanussi <tzanussi@gmail.com>,
+ Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>,
+ Pekka Enberg <penberg@cs.helsinki.fi>,
+ Jens Axboe <jens.axboe@oracle.com>,
+ Mathieu Desnoyers <compudj@krystal.dyndns.org>,
+ Andrea Righi <righi.andrea@gmail.com>
+Subject: [patch 11/49] relay: fix "full buffer with exactly full last subbuffer" accounting problem
+Content-Disposition: inline; filename=relay-fix-full-buffer-with-exactly-full-last-subbuffer-accounting-problem.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tom Zanussi <tzanussi@gmail.com>
+
+commit 32194450330be327f3b25bf6b66298bd122599e9 upstream
+
+In relay's current read implementation, if the buffer is completely full
+but hasn't triggered the buffer-full condition (i.e. the last write
+didn't cross the subbuffer boundary) and the last subbuffer is exactly
+full, the subbuffer accounting code erroneously finds nothing available.
+This patch fixes the problem.
+
+Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
+Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
+Cc: Pekka Enberg <penberg@cs.helsinki.fi>
+Cc: Jens Axboe <jens.axboe@oracle.com>
+Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
+Cc: Andrea Righi <righi.andrea@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/relay.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+--- a/kernel/relay.c
++++ b/kernel/relay.c
+@@ -803,6 +803,10 @@ static void relay_file_read_consume(stru
+       size_t n_subbufs = buf->chan->n_subbufs;
+       size_t read_subbuf;
++      if (buf->subbufs_produced == buf->subbufs_consumed &&
++          buf->offset == buf->bytes_consumed)
++              return;
++
+       if (buf->bytes_consumed + bytes_consumed > subbuf_size) {
+               relay_subbufs_consumed(buf->chan, buf->cpu, 1);
+               buf->bytes_consumed = 0;
+@@ -834,6 +838,8 @@ static int relay_file_read_avail(struct 
+       relay_file_read_consume(buf, read_pos, 0);
++      consumed = buf->subbufs_consumed;
++
+       if (unlikely(buf->offset > subbuf_size)) {
+               if (produced == consumed)
+                       return 0;
+@@ -852,8 +858,12 @@ static int relay_file_read_avail(struct 
+       if (consumed > produced)
+               produced += n_subbufs * subbuf_size;
+-      if (consumed == produced)
++      if (consumed == produced) {
++              if (buf->offset == subbuf_size &&
++                  buf->subbufs_produced > buf->subbufs_consumed)
++                      return 1;
+               return 0;
++      }
+       return 1;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191144.895287714@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:24 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>,
+ Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Subject: [patch 12/49] radeonfb: fix accel engine hangs
+Content-Disposition: inline; filename=radeonfb-fix-accel-engine-hangs.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: David Miller <davem@davemloft.net>
+
+commit 969830b2fedf8336c41d6195f49d250b1e166ff8 upstream
+
+Some chips appear to have the 2D engine hang during screen redraw,
+typically in a sequence of copyarea operations. This appear to be
+solved by adding a flush of the engine destination pixel cache
+and waiting for the engine to be idle before issuing the accel
+operation. The performance impact seems to be fairly small.
+
+Here is a trace on an RV370 (PCI device ID 0x5b64), it records the
+RBBM_STATUS register, then the source x/y, destination x/y, and
+width/height used for the copy:
+
+----------------------------------------
+radeonfb_prim_copyarea: STATUS[00000140] src[210:70] dst[210:60] wh[a0:10]
+radeonfb_prim_copyarea: STATUS[00000140] src[2b8:70] dst[2b8:60] wh[88:10]
+radeonfb_prim_copyarea: STATUS[00000140] src[348:70] dst[348:60] wh[40:10]
+radeonfb_prim_copyarea: STATUS[80020140] src[390:70] dst[390:60] wh[88:10]
+radeonfb_prim_copyarea: STATUS[8002613f] src[40:80] dst[40:70] wh[28:10]
+radeonfb_prim_copyarea: STATUS[80026139] src[a8:80] dst[a8:70] wh[38:10]
+radeonfb_prim_copyarea: STATUS[80026133] src[e8:80] dst[e8:70] wh[80:10]
+radeonfb_prim_copyarea: STATUS[8002612d] src[170:80] dst[170:70] wh[30:10]
+radeonfb_prim_copyarea: STATUS[80026127] src[1a8:80] dst[1a8:70] wh[8:10]
+radeonfb_prim_copyarea: STATUS[80026121] src[1b8:80] dst[1b8:70] wh[88:10]
+radeonfb_prim_copyarea: STATUS[8002611b] src[248:80] dst[248:70] wh[68:10]
+----------------------------------------
+
+When things are going fine the copies complete before the next ROP is
+even issued, but all of a sudden the 2D unit becomes active (bit 17 in
+RBBM_STATUS) and the FIFO retry (bit 13) and FIFO pipeline busy (bit
+14) are set as well.  The FIFO begins to backup until it becomes full.
+
+What happens next is the radeon_fifo_wait() times out, and we access
+the chip illegally leading to a bus error which usually wedges the
+box.  None of this makes it to the console screen, of course :-)
+radeon_fifo_wait() should be modified to reset the accelerator when
+this timeout happens instead of programming the chip anyways.
+
+----------------------------------------
+radeonfb: FIFO Timeout !
+ERROR(0): Cheetah error trap taken afsr[0010080005000000] afar[000007f900800e40] TL1(0)
+ERROR(0): TPC[595114] TNPC[595118] O7[459788] TSTATE[11009601]
+ERROR(0): TPC<radeonfb_copyarea+0xfc/0x248>
+ERROR(0): M_SYND(0),  E_SYND(0), Privileged
+ERROR(0): Highest priority error (0000080000000000) "Bus error response from system bus"
+ERROR(0): D-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000]
+ERROR(0): D-cache data0[0000000000000000] data1[0000000000000000] data2[0000000000000000] data3[0000000000000000]
+ERROR(0): I-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000] u[0000000000000000] l[00\
+
+ERROR(0): I-cache INSN0[0000000000000000] INSN1[0000000000000000] INSN2[0000000000000000] INSN3[0000000000000000]
+ERROR(0): I-cache INSN4[0000000000000000] INSN5[0000000000000000] INSN6[0000000000000000] INSN7[0000000000000000]
+ERROR(0): E-cache idx[800e40] tag[000000000e049f4c]
+ERROR(0): E-cache data0[fffff8127d300180] data1[00000000004b5384] data2[0000000000000000] data3[0000000000000000]
+Ker:xnel panic - not syncing: Irrecoverable deferred error trap.
+----------------------------------------
+
+Another quirk is that these copyarea calls will not happen until the
+first drivers/char/vt.c:redraw_screen() occurs.  This will only happen
+if you 1) VC switch or 2) run "consolechars" or 3) unblank the screen.
+
+This seems to happen because until a redraw_screen() the screen scrolling
+method used by fbcon is not finalized yet.  I've seen this with other fb
+drivers too.
+
+So if all you do is boot straight into X you will never see this bug on
+the relevant chips.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/aty/radeon_accel.c |    8 ++++++++
+ include/video/radeon.h           |    4 ++++
+ 2 files changed, 12 insertions(+)
+
+--- a/drivers/video/aty/radeon_accel.c
++++ b/drivers/video/aty/radeon_accel.c
+@@ -55,6 +55,10 @@ static void radeonfb_prim_fillrect(struc
+       OUTREG(DP_WRITE_MSK, 0xffffffff);
+       OUTREG(DP_CNTL, (DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM));
++      radeon_fifo_wait(2);
++      OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
++      OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
++
+       radeon_fifo_wait(2);  
+       OUTREG(DST_Y_X, (region->dy << 16) | region->dx);
+       OUTREG(DST_WIDTH_HEIGHT, (region->width << 16) | region->height);
+@@ -116,6 +120,10 @@ static void radeonfb_prim_copyarea(struc
+       OUTREG(DP_CNTL, (xdir>=0 ? DST_X_LEFT_TO_RIGHT : 0)
+                       | (ydir>=0 ? DST_Y_TOP_TO_BOTTOM : 0));
++      radeon_fifo_wait(2);
++      OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
++      OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
++
+       radeon_fifo_wait(3);
+       OUTREG(SRC_Y_X, (sy << 16) | sx);
+       OUTREG(DST_Y_X, (dy << 16) | dx);
+--- a/include/video/radeon.h
++++ b/include/video/radeon.h
+@@ -741,6 +741,10 @@
+ #define SOFT_RESET_RB                            (1 <<  6)
+ #define SOFT_RESET_HDP                           (1 <<  7)
++/* WAIT_UNTIL bit constants */
++#define WAIT_DMA_GUI_IDLE                        (1 << 9)
++#define WAIT_2D_IDLECLEAN                        (1 << 16)
++
+ /* SURFACE_CNTL bit consants */
+ #define SURF_TRANSLATION_DIS                     (1 << 8)
+ #define NONSURF_AP0_SWP_16BPP                    (1 << 20)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191145.086836151@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:25 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oleg Nesterov <oleg@tv-sign.ru>,
+ Mark McLoughlin <markmc@redhat.com>,
+ Oliver Pinter <oliver.pntr@gmail.com>,
+ Roland McGrath <roland@redhat.com>,
+ Thomas Gleixner <tglx@linutronix.de>
+Subject: [patch 13/49] posix-timers: fix posix_timer_event() vs dequeue_signal() race
+Content-Disposition: inline; filename=posix-timers-fix-posix_timer_event-vs-dequeue_signal-race.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Oleg Nesterov <oleg@tv-sign.ru>
+
+commit ba661292a2bc6ddd305a212b0526e5dc22195fe7 upstream
+
+The bug was reported and analysed by Mark McLoughlin <markmc@redhat.com>,
+the patch is based on his and Roland's suggestions.
+
+posix_timer_event() always rewrites the pre-allocated siginfo before sending
+the signal. Most of the written info is the same all the time, but memset(0)
+is very wrong. If ->sigq is queued we can race with collect_signal() which
+can fail to find this siginfo looking at .si_signo, or copy_siginfo() can
+copy the wrong .si_code/si_tid/etc.
+
+In short, sys_timer_settime() can in fact stop the active timer, or the user
+can receive the siginfo with the wrong .si_xxx values.
+
+Move "memset(->info, 0)" from posix_timer_event() to alloc_posix_timer(),
+change send_sigqueue() to set .si_overrun = 0 when ->sigq is not queued.
+It would be nice to move the whole sigq->info initialization from send to
+create path, but this is not easy to do without uglifying timer_create()
+further.
+
+As Roland rightly pointed out, we need more cleanups/fixes here, see the
+"FIXME" comment in the patch. Hopefully this patch makes sense anyway, and
+it can mask the most bad implications.
+
+Reported-by: Mark McLoughlin <markmc@redhat.com>
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Cc: Mark McLoughlin <markmc@redhat.com>
+Cc: Oliver Pinter <oliver.pntr@gmail.com>
+Cc: Roland McGrath <roland@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/posix-timers.c |   17 +++++++++++++----
+ kernel/signal.c       |    1 +
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -297,14 +297,22 @@ void do_schedule_next_timer(struct sigin
+               unlock_timer(timr, flags);
+ }
+-int posix_timer_event(struct k_itimer *timr,int si_private)
++int posix_timer_event(struct k_itimer *timr, int si_private)
+ {
+-      memset(&timr->sigq->info, 0, sizeof(siginfo_t));
++      /*
++       * FIXME: if ->sigq is queued we can race with
++       * dequeue_signal()->do_schedule_next_timer().
++       *
++       * If dequeue_signal() sees the "right" value of
++       * si_sys_private it calls do_schedule_next_timer().
++       * We re-queue ->sigq and drop ->it_lock().
++       * do_schedule_next_timer() locks the timer
++       * and re-schedules it while ->sigq is pending.
++       * Not really bad, but not that we want.
++       */
+       timr->sigq->info.si_sys_private = si_private;
+-      /* Send signal to the process that owns this timer.*/
+       timr->sigq->info.si_signo = timr->it_sigev_signo;
+-      timr->sigq->info.si_errno = 0;
+       timr->sigq->info.si_code = SI_TIMER;
+       timr->sigq->info.si_tid = timr->it_id;
+       timr->sigq->info.si_value = timr->it_sigev_value;
+@@ -438,6 +446,7 @@ static struct k_itimer * alloc_posix_tim
+               kmem_cache_free(posix_timers_cache, tmr);
+               tmr = NULL;
+       }
++      memset(&tmr->sigq->info, 0, sizeof(siginfo_t));
+       return tmr;
+ }
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -1312,6 +1312,7 @@ int send_sigqueue(int sig, struct sigque
+               ret = -1;
+               goto out_err;
+       }
++      q->info.si_overrun = 0;
+       if (unlikely(!list_empty(&q->list))) {
+               /*
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191145.265164542@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:26 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oleg Nesterov <oleg@tv-sign.ru>,
+ Mark McLoughlin <markmc@redhat.com>,
+ Oliver Pinter <oliver.pntr@gmail.com>,
+ Roland McGrath <roland@redhat.com>,
+ Thomas Gleixner <tglx@linutronix.de>
+Subject: [patch 14/49] posix-timers: do_schedule_next_timer: fix the setting of ->si_overrun
+Content-Disposition: inline; filename=posix-timers-do_schedule_next_timer-fix-the-setting-of-si_overrun.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Oleg Nesterov <oleg@tv-sign.ru>
+
+commit 54da1174922cddd4be83d5a364b2e0fdd693f513 upstream
+
+do_schedule_next_timer() sets info->si_overrun = timr->it_overrun_last,
+this discards the already accumulated overruns.
+
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Cc: Mark McLoughlin <markmc@redhat.com>
+Cc: Oliver Pinter <oliver.pntr@gmail.com>
+Cc: Roland McGrath <roland@redhat.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/posix-timers.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -290,7 +290,7 @@ void do_schedule_next_timer(struct sigin
+               else
+                       schedule_next_timer(timr);
+-              info->si_overrun = timr->it_overrun_last;
++              info->si_overrun += timr->it_overrun_last;
+       }
+       if (timr)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191145.446852299@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:27 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
+Subject: [patch 15/49] mlock() fix return values
+Content-Disposition: inline; filename=mlock-fix-return-values.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
+
+commit a477097d9c37c1cf289c7f0257dffcfa42d50197 upstream
+
+Halesh says:
+
+Please find the below testcase provide to test mlock.
+
+Test Case :
+===========================
+
+#include <sys/resource.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdlib.h>
+
+int main(void)
+{
+  int fd,ret, i = 0;
+  char *addr, *addr1 = NULL;
+  unsigned int page_size;
+  struct rlimit rlim;
+
+  if (0 != geteuid())
+  {
+   printf("Execute this pgm as root\n");
+   exit(1);
+  }
+
+  /* create a file */
+  if ((fd = open("mmap_test.c",O_RDWR|O_CREAT,0755)) == -1)
+  {
+   printf("cant create test file\n");
+   exit(1);
+  }
+
+  page_size = sysconf(_SC_PAGE_SIZE);
+
+  /* set the MEMLOCK limit */
+  rlim.rlim_cur = 2000;
+  rlim.rlim_max = 2000;
+
+  if ((ret = setrlimit(RLIMIT_MEMLOCK,&rlim)) != 0)
+  {
+   printf("Cant change limit values\n");
+   exit(1);
+  }
+
+  addr = 0;
+  while (1)
+  {
+  /* map a page into memory each time*/
+  if ((addr = (char *) mmap(addr,page_size, PROT_READ |
+PROT_WRITE,MAP_SHARED,fd,0)) == MAP_FAILED)
+  {
+   printf("cant do mmap on file\n");
+   exit(1);
+  }
+
+  if (0 == i)
+    addr1 = addr;
+  i++;
+  errno = 0;
+  /* lock the mapped memory pagewise*/
+  if ((ret = mlock((char *)addr, 1500)) == -1)
+  {
+   printf("errno value is %d\n", errno);
+   printf("cant lock maped region\n");
+   exit(1);
+  }
+  addr = addr + page_size;
+ }
+}
+======================================================
+
+This testcase results in an mlock() failure with errno 14 that is EFAULT,
+but it has nowhere been specified that mlock() will return EFAULT.  When I
+tested the same on older kernels like 2.6.18, I got the correct result i.e
+errno 12 (ENOMEM).
+
+I think in source code mlock(2), setting errno ENOMEM has been missed in
+do_mlock() , on mlock_fixup() failure.
+
+SUSv3 requires the following behavior frmo mlock(2).
+
+[ENOMEM]
+    Some or all of the address range specified by the addr and
+    len arguments does not correspond to valid mapped pages
+    in the address space of the process.
+
+[EAGAIN]
+    Some or all of the memory identified by the operation could not
+    be locked when the call was made.
+
+This rule isn't so nice and slighly strange.  but many people think
+POSIX/SUS compliance is important.
+
+Reported-by: Halesh Sadashiv <halesh.sadashiv@ap.sony.com>
+Tested-by: Halesh Sadashiv <halesh.sadashiv@ap.sony.com>
+Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/memory.c |   16 +++++++++++++---
+ mm/mlock.c  |    2 --
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -2618,16 +2618,26 @@ int make_pages_present(unsigned long add
+       vma = find_vma(current->mm, addr);
+       if (!vma)
+-              return -1;
++              return -ENOMEM;
+       write = (vma->vm_flags & VM_WRITE) != 0;
+       BUG_ON(addr >= end);
+       BUG_ON(end > vma->vm_end);
+       len = DIV_ROUND_UP(end, PAGE_SIZE) - addr/PAGE_SIZE;
+       ret = get_user_pages(current, current->mm, addr,
+                       len, write, 0, NULL, NULL);
+-      if (ret < 0)
++      if (ret < 0) {
++              /*
++                 SUS require strange return value to mlock
++                  - invalid addr generate to ENOMEM.
++                  - out of memory should generate EAGAIN.
++              */
++              if (ret == -EFAULT)
++                      ret = -ENOMEM;
++              else if (ret == -ENOMEM)
++                      ret = -EAGAIN;
+               return ret;
+-      return ret == len ? 0 : -1;
++      }
++      return ret == len ? 0 : -ENOMEM;
+ }
+ #if !defined(__HAVE_ARCH_GATE_AREA)
+--- a/mm/mlock.c
++++ b/mm/mlock.c
+@@ -78,8 +78,6 @@ success:
+       mm->locked_vm -= pages;
+ out:
+-      if (ret == -ENOMEM)
+-              ret = -EAGAIN;
+       return ret;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191145.678925929@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:28 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jean Delvare <khali@linux-fr.org>,
+ Krzysztof Helt <krzysztof.h1@wp.pl>,
+ Petr Vandrovec <VANDROVE@vc.cvut.cz>
+Subject: [patch 16/49] matrox maven: fix a broken error path
+Content-Disposition: inline; filename=matrox-maven-fix-a-broken-error-path.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jean Delvare <khali@linux-fr.org>
+
+commit 5ede40f87957c6ededf9284c8339722a97b9dfb6 upstream
+
+I broke an error path with d03c21ec0be7787ff6b75dcf56c0e96209ccbfbd,
+sorry about that.
+
+The machine will crash if the i2c_attach_client() or maven_init_client()
+calls fail, although nobody has yet reported this happening.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
+Cc: Petr Vandrovec <VANDROVE@vc.cvut.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/matrox/matroxfb_maven.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/video/matrox/matroxfb_maven.c
++++ b/drivers/video/matrox/matroxfb_maven.c
+@@ -1266,7 +1266,7 @@ static int maven_detect_client(struct i2
+ ERROR4:;
+       i2c_detach_client(new_client);
+ ERROR3:;
+-      kfree(new_client);
++      kfree(data);
+ ERROR0:;
+       return err;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:45 2008
+Message-Id: <20080818191145.802414669@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:29 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Sven Wegener <sven.wegener@stealer.net>,
+ Simon Horman <horms@verge.net.au>
+Subject: [patch 17/49] ipvs: Fix possible deadlock in estimator code
+Content-Disposition: inline; filename=ipvs-fix-possible-deadlock-in-estimator-code.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Sven Wegener <sven.wegener@stealer.net>
+
+commit 8ab19ea36c5c5340ff598e4d15fc084eb65671dc upstream
+
+There is a slight chance for a deadlock in the estimator code. We can't call
+del_timer_sync() while holding our lock, as the timer might be active and
+spinning for the lock on another cpu. Work around this issue by using
+try_to_del_timer_sync() and releasing the lock. We could actually delete the
+timer outside of our lock, as the add and kill functions are only every called
+from userspace via [gs]etsockopt() and are serialized by a mutex, but better
+make this explicit.
+
+Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
+Acked-by: Simon Horman <horms@verge.net.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/ipvs/ip_vs_est.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/net/ipv4/ipvs/ip_vs_est.c
++++ b/net/ipv4/ipvs/ip_vs_est.c
+@@ -172,8 +172,11 @@ void ip_vs_kill_estimator(struct ip_vs_s
+               kfree(est);
+               killed++;
+       }
+-      if (killed && est_list == NULL)
+-              del_timer_sync(&est_timer);
++      while (killed && !est_list && try_to_del_timer_sync(&est_timer) < 0) {
++              write_unlock_bh(&est_lock);
++              cpu_relax();
++              write_lock_bh(&est_lock);
++      }
+       write_unlock_bh(&est_lock);
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:46 2008
+Message-Id: <20080818191145.979454278@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:30 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Petr Tesarik <ptesarik@suse.cz>,
+ Jens Axboe <jens.axboe@oracle.com>,
+ Jan Kara <jack@suse.cz>,
+ Borislav Petkov <petkovbb@gmail.com>,
+ Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+Subject: [patch 18/49] ide-cd: fix endianity for the error message in cdrom_read_capacity
+Content-Disposition: inline; filename=ide-cd-fix-endianity-for-the-error-message-in-cdrom_read_capacity.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Petr Tesarik <ptesarik@suse.cz>
+
+commit 938bb03d188a1e688fb0bcae49788f540193e80a uptream
+
+Aesthetic regards aside, commit e8e7b9eb11c34ee18bde8b7011af41938d1ad667
+still leaves a bug in the error message, because it uses the unconverted
+big-endian value for printk.
+
+Fix this by using a local variable in machine byte order. The result is
+correct, more readable, and also produces slightly shorter code on i386.
+
+Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
+Cc: Jens Axboe <jens.axboe@oracle.com>
+Cc: Jan Kara <jack@suse.cz>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: <stable@kernel.org>
+Acked-by: Borislav Petkov <petkovbb@gmail.com>
+[bart: __u32 -> u32]
+Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ide/ide-cd.c |   18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -1411,6 +1411,7 @@ static int cdrom_read_capacity(ide_drive
+       int stat;
+       struct request req;
++      u32 blocklen;
+       ide_cd_init_rq(drive, &req);
+@@ -1427,23 +1428,24 @@ static int cdrom_read_capacity(ide_drive
+       /*
+        * Sanity check the given block size
+        */
+-      switch (capbuf.blocklen) {
+-      case __constant_cpu_to_be32(512):
+-      case __constant_cpu_to_be32(1024):
+-      case __constant_cpu_to_be32(2048):
+-      case __constant_cpu_to_be32(4096):
++      blocklen = be32_to_cpu(capbuf.blocklen);
++      switch (blocklen) {
++      case 512:
++      case 1024:
++      case 2048:
++      case 4096:
+               break;
+       default:
+               printk(KERN_ERR "%s: weird block size %u\n",
+-                      drive->name, capbuf.blocklen);
++                      drive->name, blocklen);
+               printk(KERN_ERR "%s: default to 2kb block size\n",
+                       drive->name);
+-              capbuf.blocklen = __constant_cpu_to_be32(2048);
++              blocklen = 2048;
+               break;
+       }
+       *capacity = 1 + be32_to_cpu(capbuf.lba);
+-      *sectors_per_frame = be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
++      *sectors_per_frame = blocklen >> SECTOR_BITS;
+       return 0;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:46 2008
+Message-Id: <20080818191146.148478623@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:31 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ David Howells <dhowells@redhat.com>,
+ Gunter Kukkukk <linux@kukkukk.com>,
+ Steve French <sfrench@us.ibm.com>
+Subject: [patch 19/49] CIFS: mount of IPC$ breaks with iget patch
+Content-Disposition: inline; filename=cifs-mount-of-ipc-breaks-with-iget-patch.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Steve French <sfrench@us.ibm.com>
+
+commit ad661334b8ae421154b121ee6ad3b56807adbf11 upstream
+
+In looking at network named pipe support on cifs, I noticed that
+Dave Howell's iget patch:
+
+    iget: stop CIFS from using iget() and read_inode()
+
+broke mounts to IPC$ (the interprocess communication share), and don't
+handle the error case (when getting info on the root inode fails).
+
+Thanks to Gunter who noted a typo in a debug line in the original
+version of this patch.
+
+CC: David Howells <dhowells@redhat.com>
+CC: Gunter Kukkukk <linux@kukkukk.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/inode.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/cifs/inode.c
++++ b/fs/cifs/inode.c
+@@ -639,6 +639,7 @@ struct inode *cifs_iget(struct super_blo
+               inode->i_fop = &simple_dir_operations;
+               inode->i_uid = cifs_sb->mnt_uid;
+               inode->i_gid = cifs_sb->mnt_gid;
++      } else if (rc) {
+               _FreeXid(xid);
+               iget_failed(inode);
+               return ERR_PTR(rc);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:46 2008
+Message-Id: <20080818191146.318196491@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:32 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Steve French <sfrench@us.ibm.com>
+Subject: [patch 20/49] CIFS: if get root inode fails during mount, cleanup tree connection
+Content-Disposition: inline; filename=cifs-if-get-root-inode-fails-during-mount-cleanup-tree-connection.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Steve French <sfrench@us.ibm.com>
+
+commit 2c731afb0d4ba16018b400c75665fbdb8feb2175 upstream
+
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/cifsfs.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/cifs/cifsfs.c
++++ b/fs/cifs/cifsfs.c
+@@ -175,6 +175,8 @@ out_no_root:
+       if (inode)
+               iput(inode);
++      cifs_umount(sb, cifs_sb);
++
+ out_mount_failed:
+       if (cifs_sb) {
+ #ifdef CONFIG_CIFS_DFS_UPCALL
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:46 2008
+Message-Id: <20080818191146.495992273@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:33 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Carlos Corbacho <carlos@strangeworlds.co.uk>,
+ Andi Kleen <ak@linux.intel.com>
+Subject: [patch 21/49] acer-wmi: Fix wireless and bluetooth on early AMW0 v2 laptops
+Content-Disposition: inline; filename=acer-wmi-fix-wireless-and-bluetooth-on-early-amw0-v2-laptops.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Carlos Corbacho <carlos@strangeworlds.co.uk>
+
+commit 5c742b45dd5fbbb6cf74d3378341704f4b23c5e8 upstream
+
+In the old acer_acpi, I discovered that on some of the newer AMW0 laptops
+that supported the WMID methods, they don't work properly for setting the
+wireless and bluetooth values.
+
+So for the AMW0 V2 laptops, we want to use both the 'old' AMW0 and the
+'new' WMID methods for setting wireless & bluetooth to guarantee we always
+enable it.
+
+This was fixed in acer_acpi some time ago, but I forgot to port the patch
+over to acer-wmi when it was merged.
+
+(Without this patch, early AMW0 V2 laptops such as the Aspire 5040 won't
+work with acer-wmi, where-as they did with the old acer_acpi).
+
+AK: fix compilation
+
+Signed-off-by: Carlos Corbacho <carlos@strangeworlds.co.uk>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/acer-wmi.c |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/drivers/misc/acer-wmi.c
++++ b/drivers/misc/acer-wmi.c
+@@ -742,11 +742,30 @@ static acpi_status get_u32(u32 *value, u
+ static acpi_status set_u32(u32 value, u32 cap)
+ {
++      acpi_status status;
++
+       if (interface->capability & cap) {
+               switch (interface->type) {
+               case ACER_AMW0:
+                       return AMW0_set_u32(value, cap, interface);
+               case ACER_AMW0_V2:
++                      if (cap == ACER_CAP_MAILLED)
++                              return AMW0_set_u32(value, cap, interface);
++
++                      /*
++                       * On some models, some WMID methods don't toggle
++                       * properly. For those cases, we want to run the AMW0
++                       * method afterwards to be certain we've really toggled
++                       * the device state.
++                       */
++                      if (cap == ACER_CAP_WIRELESS ||
++                              cap == ACER_CAP_BLUETOOTH) {
++                              status = WMID_set_u32(value, cap, interface);
++                              if (ACPI_FAILURE(status))
++                                      return status;
++
++                              return AMW0_set_u32(value, cap, interface);
++                      }
+               case ACER_WMID:
+                       return WMID_set_u32(value, cap, interface);
+               default:
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:46 2008
+Message-Id: <20080818191146.682856246@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:34 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eugene Teo <eugeneteo@kernel.sg>,
+ Arnaldo Carvalho de Melo <acme@redhat.com>,
+ Gerrit Renker <gerrit@erg.abdn.ac.uk>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 22/49] dccp: change L/R must have at least one byte in the dccpsf_val field
+Content-Disposition: inline; filename=dccp-change-l-r-must-have-at-least-one-byte-in-the-dccpsf_val-field.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Arnaldo Carvalho de Melo <acme@redhat.com>
+
+commit 3e8a0a559c66ee9e7468195691a56fefc3589740 upstream
+
+Thanks to Eugene Teo for reporting this problem.
+
+Signed-off-by: Eugene Teo <eugeneteo@kernel.sg>
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/dccp/proto.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/net/dccp/proto.c
++++ b/net/dccp/proto.c
+@@ -477,6 +477,11 @@ static int dccp_setsockopt_change(struct
+       if (copy_from_user(&opt, optval, sizeof(opt)))
+               return -EFAULT;
++      /*
++       * rfc4340: 6.1. Change Options
++       */
++      if (opt.dccpsf_len < 1)
++              return -EINVAL;
+       val = kmalloc(opt.dccpsf_len, GFP_KERNEL);
+       if (!val)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191146.871890677@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:35 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stephen Hemminger <shemminger@vyatta.com>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 23/49] random32: seeding improvement
+Content-Disposition: inline; filename=random32-seeding-improvement.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Stephen Hemminger <shemminger@vyatta.com>
+
+[ Upstream commit 697f8d0348a652593d195a13dd1067d9df911a82 ]
+
+The rationale is:
+   * use u32 consistently
+   * no need to do LCG on values from (better) get_random_bytes
+   * use more data from get_random_bytes for secondary seeding
+   * don't reduce state space on srandom32()
+   * enforce state variable initialization restrictions
+
+Note: the second paper has a version of random32() with even longer period
+and a version of random64() if needed.
+
+Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Cc: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ lib/random32.c |   48 +++++++++++++++++++++++++++---------------------
+ 1 file changed, 27 insertions(+), 21 deletions(-)
+
+--- a/lib/random32.c
++++ b/lib/random32.c
+@@ -56,23 +56,12 @@ static u32 __random32(struct rnd_state *
+       return (state->s1 ^ state->s2 ^ state->s3);
+ }
+-static void __set_random32(struct rnd_state *state, unsigned long s)
++/*
++ * Handle minimum values for seeds
++ */
++static inline u32 __seed(u32 x, u32 m)
+ {
+-      if (s == 0)
+-              s = 1;      /* default seed is 1 */
+-
+-#define LCG(n) (69069 * n)
+-      state->s1 = LCG(s);
+-      state->s2 = LCG(state->s1);
+-      state->s3 = LCG(state->s2);
+-
+-      /* "warm it up" */
+-      __random32(state);
+-      __random32(state);
+-      __random32(state);
+-      __random32(state);
+-      __random32(state);
+-      __random32(state);
++      return (x < m) ? x + m : x;
+ }
+ /**
+@@ -107,7 +96,7 @@ void srandom32(u32 entropy)
+        */
+       for_each_possible_cpu (i) {
+               struct rnd_state *state = &per_cpu(net_rand_state, i);
+-              __set_random32(state, state->s1 ^ entropy);
++              state->s1 = __seed(state->s1 ^ entropy, 1);
+       }
+ }
+ EXPORT_SYMBOL(srandom32);
+@@ -122,7 +111,19 @@ static int __init random32_init(void)
+       for_each_possible_cpu(i) {
+               struct rnd_state *state = &per_cpu(net_rand_state,i);
+-              __set_random32(state, i + jiffies);
++
++#define LCG(x)        ((x) * 69069)   /* super-duper LCG */
++              state->s1 = __seed(LCG(i + jiffies), 1);
++              state->s2 = __seed(LCG(state->s1), 7);
++              state->s3 = __seed(LCG(state->s2), 15);
++
++              /* "warm it up" */
++              __random32(state);
++              __random32(state);
++              __random32(state);
++              __random32(state);
++              __random32(state);
++              __random32(state);
+       }
+       return 0;
+ }
+@@ -135,13 +136,18 @@ core_initcall(random32_init);
+ static int __init random32_reseed(void)
+ {
+       int i;
+-      unsigned long seed;
+       for_each_possible_cpu(i) {
+               struct rnd_state *state = &per_cpu(net_rand_state,i);
++              u32 seeds[3];
++
++              get_random_bytes(&seeds, sizeof(seeds));
++              state->s1 = __seed(seeds[0], 1);
++              state->s2 = __seed(seeds[1], 7);
++              state->s3 = __seed(seeds[2], 15);
+-              get_random_bytes(&seed, sizeof(seed));
+-              __set_random32(state, seed);
++              /* mix it in */
++              __random32(state);
+       }
+       return 0;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191147.059765742@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:36 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Wei Yongjun <yjwei@cn.fujitsu.com>,
+ Herbert Xu <herbert@gondor.apana.org.au>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 24/49] ipv6: Fix ip6_xmit to send fragments if ipfragok is true
+Content-Disposition: inline; filename=ipv6-fix-ip6_xmit-to-send-fragments-if-ipfragok-is-true.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Wei Yongjun <yjwei@cn.fujitsu.com>
+
+[ Upstream commit 77e2f14f71d68d05945f1d30ca55b5194d6ab1ce ]
+
+SCTP used ip6_xmit() to send fragments after received ICMP packet too
+big message. But while send packet used ip6_xmit, the skb->local_df is
+not initialized. So when skb if enter ip6_fragment(), the following
+code will discard the skb.
+
+ip6_fragment(...)
+{
+    if (!skb->local_df) {
+        ...
+        return -EMSGSIZE;
+    }
+    ...
+}
+
+SCTP do the following step:
+1. send packet ip6_xmit(skb, ipfragok=0)
+2. received ICMP packet too big message
+3. if PMTUD_ENABLE: ip6_xmit(skb, ipfragok=1)
+
+This patch fixed the problem by set local_df if ipfragok is true.
+
+Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
+Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/ip6_output.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/net/ipv6/ip6_output.c
++++ b/net/ipv6/ip6_output.c
+@@ -229,6 +229,10 @@ int ip6_xmit(struct sock *sk, struct sk_
+       skb_reset_network_header(skb);
+       hdr = ipv6_hdr(skb);
++      /* Allow local fragmentation. */
++      if (ipfragok)
++              skb->local_df = 1;
++
+       /*
+        *      Fill in the IPv6 header
+        */
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191147.245123449@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:37 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mikael Pettersson <mikpe@it.uu.se>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 25/49] sparc64: FUTEX_OP_ANDN fix
+Content-Disposition: inline; filename=sparc64-futex_op_andn-fix.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Mikael Pettersson <mikpe@it.uu.se>
+
+[ Upstream commit d72609e17fd93bb2f7e0f7e1bdc70b6d20e43843 ]
+
+Correct sparc64's implementation of FUTEX_OP_ANDN to do a
+bitwise negate of the oparg parameter before applying the
+AND operation. All other archs that support FUTEX_OP_ANDN
+either negate oparg explicitly (frv, ia64, mips, sh, x86),
+or do so indirectly by using an and-not instruction (powerpc).
+Since sparc64 has and-not, I chose to use that solution.
+
+I've not found any use of FUTEX_OP_ANDN in glibc so the
+impact of this bug is probably minor. But other user-space
+components may try to use it so it should still get fixed.
+
+Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-sparc64/futex.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/asm-sparc64/futex.h
++++ b/include/asm-sparc64/futex.h
+@@ -59,7 +59,7 @@ static inline int futex_atomic_op_inuser
+               __futex_cas_op("or\t%2, %4, %1", ret, oldval, uaddr, oparg);
+               break;
+       case FUTEX_OP_ANDN:
+-              __futex_cas_op("and\t%2, %4, %1", ret, oldval, uaddr, oparg);
++              __futex_cas_op("andn\t%2, %4, %1", ret, oldval, uaddr, oparg);
+               break;
+       case FUTEX_OP_XOR:
+               __futex_cas_op("xor\t%2, %4, %1", ret, oldval, uaddr, oparg);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191147.435503371@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:38 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 26/49] sparc64: Do not clobber %g7 in setcontext() trap.
+Content-Disposition: inline; filename=sparc64-do-not-clobber-g7-in-setcontext-trap.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit 0a4949c4414af2eb91414bcd8e2a8ac3706f7dde ]
+
+That's the userland thread register, so we should never try to change
+it like this.
+
+Based upon glibc bug nptl/6577 and suggestions by Jakub Jelinek.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/signal.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/sparc64/kernel/signal.c
++++ b/arch/sparc64/kernel/signal.c
+@@ -2,7 +2,7 @@
+  *  arch/sparc64/kernel/signal.c
+  *
+  *  Copyright (C) 1991, 1992  Linus Torvalds
+- *  Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
++ *  Copyright (C) 1995, 2008 David S. Miller (davem@davemloft.net)
+  *  Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
+  *  Copyright (C) 1997 Eddie C. Dost   (ecd@skynet.be)
+  *  Copyright (C) 1997,1998 Jakub Jelinek   (jj@sunsite.mff.cuni.cz)
+@@ -90,7 +90,9 @@ asmlinkage void sparc64_set_context(stru
+       err |= __get_user(regs->u_regs[UREG_G4], (&(*grp)[MC_G4]));
+       err |= __get_user(regs->u_regs[UREG_G5], (&(*grp)[MC_G5]));
+       err |= __get_user(regs->u_regs[UREG_G6], (&(*grp)[MC_G6]));
+-      err |= __get_user(regs->u_regs[UREG_G7], (&(*grp)[MC_G7]));
++
++      /* Skip %g7 as that's the thread register in userspace.  */
++
+       err |= __get_user(regs->u_regs[UREG_I0], (&(*grp)[MC_O0]));
+       err |= __get_user(regs->u_regs[UREG_I1], (&(*grp)[MC_O1]));
+       err |= __get_user(regs->u_regs[UREG_I2], (&(*grp)[MC_O2]));
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191147.629713878@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:39 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Jeff Dike <jdike@linux.intel.com>,
+ WANG Cong <xiyou.wangcong@gmail.com>
+Subject: [patch 27/49] uml: fix build when SLOB is enabled
+Content-Disposition: inline; filename=uml-fix-build-when-slob-is-enabled.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 43f5b3085fdd27c4edf535d938b2cb0ccead4f75 upstream
+
+Reintroduce uml_kmalloc for the benefit of UML libc code.  The
+previous tactic of declaring __kmalloc so it could be called directly
+from the libc side of the house turned out to be getting too intimate
+with slab, and it doesn't work with slob.
+
+So, the uml_kmalloc wrapper is back.  It calls kmalloc or whatever
+that translates into, and libc code calls it.
+
+kfree is left alone since that still works, leaving a somewhat
+inconsistent API.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Cc: WANG Cong <xiyou.wangcong@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/drivers/chan_user.c              |    1 +
+ arch/um/drivers/cow_sys.h                |    2 +-
+ arch/um/drivers/daemon_user.c            |    4 ++--
+ arch/um/drivers/fd.c                     |    2 +-
+ arch/um/drivers/mcast_user.c             |    3 ++-
+ arch/um/drivers/net_user.c               |    2 +-
+ arch/um/drivers/port_user.c              |    2 +-
+ arch/um/drivers/pty.c                    |    2 +-
+ arch/um/drivers/slip_user.c              |    2 +-
+ arch/um/drivers/tty.c                    |    2 +-
+ arch/um/drivers/xterm.c                  |    2 +-
+ arch/um/include/um_malloc.h              |    9 +++------
+ arch/um/kernel/mem.c                     |    5 +++++
+ arch/um/os-Linux/drivers/ethertap_user.c |    4 ++--
+ arch/um/os-Linux/helper.c                |    4 ++--
+ arch/um/os-Linux/main.c                  |    2 +-
+ arch/um/os-Linux/sigio.c                 |    4 ++--
+ 17 files changed, 28 insertions(+), 24 deletions(-)
+
+--- a/arch/um/drivers/chan_user.c
++++ b/arch/um/drivers/chan_user.c
+@@ -11,6 +11,7 @@
+ #include <termios.h>
+ #include <sys/ioctl.h>
+ #include "chan_user.h"
++#include "kern_constants.h"
+ #include "os.h"
+ #include "um_malloc.h"
+ #include "user.h"
+--- a/arch/um/drivers/cow_sys.h
++++ b/arch/um/drivers/cow_sys.h
+@@ -8,7 +8,7 @@
+ static inline void *cow_malloc(int size)
+ {
+-      return kmalloc(size, UM_GFP_KERNEL);
++      return uml_kmalloc(size, UM_GFP_KERNEL);
+ }
+ static inline void cow_free(void *ptr)
+--- a/arch/um/drivers/daemon_user.c
++++ b/arch/um/drivers/daemon_user.c
+@@ -34,7 +34,7 @@ static struct sockaddr_un *new_addr(void
+ {
+       struct sockaddr_un *sun;
+-      sun = kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
++      sun = uml_kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
+       if (sun == NULL) {
+               printk(UM_KERN_ERR "new_addr: allocation of sockaddr_un "
+                      "failed\n");
+@@ -83,7 +83,7 @@ static int connect_to_switch(struct daem
+               goto out_close;
+       }
+-      sun = kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
++      sun = uml_kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
+       if (sun == NULL) {
+               printk(UM_KERN_ERR "new_addr: allocation of sockaddr_un "
+                      "failed\n");
+--- a/arch/um/drivers/fd.c
++++ b/arch/um/drivers/fd.c
+@@ -40,7 +40,7 @@ static void *fd_init(char *str, int devi
+               return NULL;
+       }
+-      data = kmalloc(sizeof(*data), UM_GFP_KERNEL);
++      data = uml_kmalloc(sizeof(*data), UM_GFP_KERNEL);
+       if (data == NULL)
+               return NULL;
+--- a/arch/um/drivers/mcast_user.c
++++ b/arch/um/drivers/mcast_user.c
+@@ -15,6 +15,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+ #include <netinet/in.h>
++#include "kern_constants.h"
+ #include "mcast.h"
+ #include "net_user.h"
+ #include "um_malloc.h"
+@@ -24,7 +25,7 @@ static struct sockaddr_in *new_addr(char
+ {
+       struct sockaddr_in *sin;
+-      sin = kmalloc(sizeof(struct sockaddr_in), UM_GFP_KERNEL);
++      sin = uml_kmalloc(sizeof(struct sockaddr_in), UM_GFP_KERNEL);
+       if (sin == NULL) {
+               printk(UM_KERN_ERR "new_addr: allocation of sockaddr_in "
+                      "failed\n");
+--- a/arch/um/drivers/net_user.c
++++ b/arch/um/drivers/net_user.c
+@@ -222,7 +222,7 @@ static void change(char *dev, char *what
+               netmask[2], netmask[3]);
+       output_len = UM_KERN_PAGE_SIZE;
+-      output = kmalloc(output_len, UM_GFP_KERNEL);
++      output = uml_kmalloc(output_len, UM_GFP_KERNEL);
+       if (output == NULL)
+               printk(UM_KERN_ERR "change : failed to allocate output "
+                      "buffer\n");
+--- a/arch/um/drivers/port_user.c
++++ b/arch/um/drivers/port_user.c
+@@ -47,7 +47,7 @@ static void *port_init(char *str, int de
+       if (kern_data == NULL)
+               return NULL;
+-      data = kmalloc(sizeof(*data), UM_GFP_KERNEL);
++      data = uml_kmalloc(sizeof(*data), UM_GFP_KERNEL);
+       if (data == NULL)
+               goto err;
+--- a/arch/um/drivers/pty.c
++++ b/arch/um/drivers/pty.c
+@@ -29,7 +29,7 @@ static void *pty_chan_init(char *str, in
+ {
+       struct pty_chan *data;
+-      data = kmalloc(sizeof(*data), UM_GFP_KERNEL);
++      data = uml_kmalloc(sizeof(*data), UM_GFP_KERNEL);
+       if (data == NULL)
+               return NULL;
+--- a/arch/um/drivers/slip_user.c
++++ b/arch/um/drivers/slip_user.c
+@@ -96,7 +96,7 @@ static int slip_tramp(char **argv, int f
+       pid = err;
+       output_len = UM_KERN_PAGE_SIZE;
+-      output = kmalloc(output_len, UM_GFP_KERNEL);
++      output = uml_kmalloc(output_len, UM_GFP_KERNEL);
+       if (output == NULL) {
+               printk(UM_KERN_ERR "slip_tramp : failed to allocate output "
+                      "buffer\n");
+--- a/arch/um/drivers/tty.c
++++ b/arch/um/drivers/tty.c
+@@ -29,7 +29,7 @@ static void *tty_chan_init(char *str, in
+       }
+       str++;
+-      data = kmalloc(sizeof(*data), UM_GFP_KERNEL);
++      data = uml_kmalloc(sizeof(*data), UM_GFP_KERNEL);
+       if (data == NULL)
+               return NULL;
+       *data = ((struct tty_chan) { .dev       = str,
+--- a/arch/um/drivers/xterm.c
++++ b/arch/um/drivers/xterm.c
+@@ -30,7 +30,7 @@ static void *xterm_init(char *str, int d
+ {
+       struct xterm_chan *data;
+-      data = kmalloc(sizeof(*data), UM_GFP_KERNEL);
++      data = uml_kmalloc(sizeof(*data), UM_GFP_KERNEL);
+       if (data == NULL)
+               return NULL;
+       *data = ((struct xterm_chan) { .pid             = -1,
+--- a/arch/um/include/um_malloc.h
++++ b/arch/um/include/um_malloc.h
+@@ -8,15 +8,12 @@
+ #include "kern_constants.h"
+-extern void *__kmalloc(int size, int flags);
+-static inline void *kmalloc(int size, int flags)
+-{
+-      return __kmalloc(size, flags);
+-}
+-
++extern void *uml_kmalloc(int size, int flags);
+ extern void kfree(const void *ptr);
+ extern void *vmalloc(unsigned long size);
+ extern void vfree(void *ptr);
+ #endif /* __UM_MALLOC_H__ */
++
++
+--- a/arch/um/kernel/mem.c
++++ b/arch/um/kernel/mem.c
+@@ -375,3 +375,8 @@ pmd_t *pmd_alloc_one(struct mm_struct *m
+       return pmd;
+ }
+ #endif
++
++void *uml_kmalloc(int size, int flags)
++{
++      return kmalloc(size, flags);
++}
+--- a/arch/um/os-Linux/drivers/ethertap_user.c
++++ b/arch/um/os-Linux/drivers/ethertap_user.c
+@@ -52,7 +52,7 @@ static void etap_change(int op, unsigned
+               return;
+       }
+-      output = kmalloc(UM_KERN_PAGE_SIZE, UM_GFP_KERNEL);
++      output = uml_kmalloc(UM_KERN_PAGE_SIZE, UM_GFP_KERNEL);
+       if (output == NULL)
+               printk(UM_KERN_ERR "etap_change : Failed to allocate output "
+                      "buffer\n");
+@@ -165,7 +165,7 @@ static int etap_open(void *data)
+       err = etap_tramp(pri->dev_name, pri->gate_addr, control_fds[0],
+                        control_fds[1], data_fds[0], data_fds[1]);
+       output_len = UM_KERN_PAGE_SIZE;
+-      output = kmalloc(output_len, UM_GFP_KERNEL);
++      output = uml_kmalloc(output_len, UM_GFP_KERNEL);
+       read_output(control_fds[0], output, output_len);
+       if (output == NULL)
+--- a/arch/um/os-Linux/helper.c
++++ b/arch/um/os-Linux/helper.c
+@@ -70,8 +70,8 @@ int run_helper(void (*pre_exec)(void *),
+       data.pre_data = pre_data;
+       data.argv = argv;
+       data.fd = fds[1];
+-      data.buf = __cant_sleep() ? kmalloc(PATH_MAX, UM_GFP_ATOMIC) :
+-                                      kmalloc(PATH_MAX, UM_GFP_KERNEL);
++      data.buf = __cant_sleep() ? uml_kmalloc(PATH_MAX, UM_GFP_ATOMIC) :
++                                      uml_kmalloc(PATH_MAX, UM_GFP_KERNEL);
+       pid = clone(helper_child, (void *) sp, CLONE_VM, &data);
+       if (pid < 0) {
+               ret = -errno;
+--- a/arch/um/os-Linux/main.c
++++ b/arch/um/os-Linux/main.c
+@@ -199,7 +199,7 @@ void *__wrap_malloc(int size)
+               return __real_malloc(size);
+       else if (size <= UM_KERN_PAGE_SIZE)
+               /* finding contiguous pages can be hard*/
+-              ret = kmalloc(size, UM_GFP_KERNEL);
++              ret = uml_kmalloc(size, UM_GFP_KERNEL);
+       else ret = vmalloc(size);
+       /*
+--- a/arch/um/os-Linux/sigio.c
++++ b/arch/um/os-Linux/sigio.c
+@@ -109,7 +109,7 @@ static int need_poll(struct pollfds *pol
+       if (n <= polls->size)
+               return 0;
+-      new = kmalloc(n * sizeof(struct pollfd), UM_GFP_ATOMIC);
++      new = uml_kmalloc(n * sizeof(struct pollfd), UM_GFP_ATOMIC);
+       if (new == NULL) {
+               printk(UM_KERN_ERR "need_poll : failed to allocate new "
+                      "pollfds\n");
+@@ -243,7 +243,7 @@ static struct pollfd *setup_initial_poll
+ {
+       struct pollfd *p;
+-      p = kmalloc(sizeof(struct pollfd), UM_GFP_KERNEL);
++      p = uml_kmalloc(sizeof(struct pollfd), UM_GFP_KERNEL);
+       if (p == NULL) {
+               printk(UM_KERN_ERR "setup_initial_poll : failed to allocate "
+                      "poll\n");
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:47 2008
+Message-Id: <20080818191147.810970922@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:40 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Jeff Dike <jdike@linux.intel.com>,
+ WANG Cong <xiyou.wangcong@gmail.com>
+Subject: [patch 28/49] uml: fix bad NTP interaction with clock
+Content-Disposition: inline; filename=uml-fix-bad-ntp-interaction-with-clock.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit cfd28f6695d0fc047478480791a21bdd4967f98e upstream
+
+UML's supposed nanosecond clock interacts badly with NTP when NTP
+decides that the clock has drifted ahead and needs to be slowed down.
+Slowing down the clock is done by decrementing the cycle-to-nanosecond
+multiplier, which is 1.  Decrementing that gives you 0 and time is
+stopped.
+
+This is fixed by switching to a microsecond clock, with a multiplier
+of 1000.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Cc: WANG Cong <xiyou.wangcong@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/kernel/time.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/um/kernel/time.c
++++ b/arch/um/kernel/time.c
+@@ -74,7 +74,7 @@ static irqreturn_t um_timer(int irq, voi
+ static cycle_t itimer_read(void)
+ {
+-      return os_nsecs();
++      return os_nsecs() / 1000;
+ }
+ static struct clocksource itimer_clocksource = {
+@@ -82,7 +82,7 @@ static struct clocksource itimer_clockso
+       .rating         = 300,
+       .read           = itimer_read,
+       .mask           = CLOCKSOURCE_MASK(64),
+-      .mult           = 1,
++      .mult           = 1000,
+       .shift          = 0,
+       .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
+ };
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:48 2008
+Message-Id: <20080818191147.978875502@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:41 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ "Christopher S. Aker" <caker@theshore.net>,
+ Jeff Dike <jdike@linux.intel.com>,
+ WANG Cong <xiyou.wangcong@gmail.com>
+Subject: [patch 29/49] uml: physical memory shouldnt include initial stack
+Content-Disposition: inline; filename=uml-physical-memory-shouldn-t-include-initial-stack.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 60a2988aea701a6424809a5432bf068667aac177 upstream
+
+The top of physical memory should be below the initial process stack, not the
+top of the address space, at least for as long as the stack isn't known to the
+kernel VM system and appropriately reserved.
+
+Cc: "Christopher S. Aker" <caker@theshore.net>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Cc: WANG Cong <xiyou.wangcong@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/kernel/um_arch.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/arch/um/kernel/um_arch.c
++++ b/arch/um/kernel/um_arch.c
+@@ -259,6 +259,7 @@ int __init linux_main(int argc, char **a
+       unsigned long avail, diff;
+       unsigned long virtmem_size, max_physmem;
+       unsigned int i, add;
++      unsigned long stack;
+       char * mode;
+       for (i = 1; i < argc; i++) {
+@@ -347,7 +348,9 @@ int __init linux_main(int argc, char **a
+       }
+       virtmem_size = physmem_size;
+-      avail = TASK_SIZE - start_vm;
++      stack = (unsigned long) argv;
++      stack &= ~(1024 * 1024 - 1);
++      avail = stack - start_vm;
+       if (physmem_size > avail)
+               virtmem_size = avail;
+       end_vm = start_vm + virtmem_size;
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:48 2008
+Message-Id: <20080818191148.228822773@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:42 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Nix <nix@esperi.org.uk>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 30/49] uml: track and make up lost ticks
+Content-Disposition: inline; filename=uml-track-and-make-up-lost-ticks.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit fe2cc53ee013a4d4d0317d418e7019fe6533a5a8 upstream
+
+Alarm delivery could be noticably late in the !CONFIG_NOHZ case because lost
+ticks weren't being taken into account.  This is now treated more carefully,
+with the time between ticks being calculated and the appropriate number of
+ticks delivered to the timekeeping system.
+
+Cc: Nix <nix@esperi.org.uk>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/include/process.h |    4 +--
+ arch/um/os-Linux/signal.c |    1 
+ arch/um/os-Linux/time.c   |   54 ++++++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 53 insertions(+), 6 deletions(-)
+
+--- a/arch/um/include/process.h
++++ b/arch/um/include/process.h
+@@ -8,8 +8,8 @@
+ #include <signal.h>
+-extern void sig_handler(int sig, struct sigcontext sc);
+-extern void alarm_handler(int sig, struct sigcontext sc);
++extern void sig_handler(int sig, struct sigcontext *sc);
++extern void alarm_handler(int sig, struct sigcontext *sc);
+ #endif
+--- a/arch/um/os-Linux/signal.c
++++ b/arch/um/os-Linux/signal.c
+@@ -12,6 +12,7 @@
+ #include "as-layout.h"
+ #include "kern_util.h"
+ #include "os.h"
++#include "process.h"
+ #include "sysdep/barrier.h"
+ #include "sysdep/sigcontext.h"
+ #include "user.h"
+--- a/arch/um/os-Linux/time.c
++++ b/arch/um/os-Linux/time.c
+@@ -9,7 +9,9 @@
+ #include <time.h>
+ #include <sys/time.h>
+ #include "kern_constants.h"
++#include "kern_util.h"
+ #include "os.h"
++#include "process.h"
+ #include "user.h"
+ int set_interval(void)
+@@ -58,12 +60,17 @@ static inline long long timeval_to_ns(co
+ long long disable_timer(void)
+ {
+       struct itimerval time = ((struct itimerval) { { 0, 0 }, { 0, 0 } });
++      int remain, max = UM_NSEC_PER_SEC / UM_HZ;
+       if (setitimer(ITIMER_VIRTUAL, &time, &time) < 0)
+               printk(UM_KERN_ERR "disable_timer - setitimer failed, "
+                      "errno = %d\n", errno);
+-      return timeval_to_ns(&time.it_value);
++      remain = timeval_to_ns(&time.it_value);
++      if (remain > max)
++              remain = max;
++
++      return remain;
+ }
+ long long os_nsecs(void)
+@@ -79,7 +86,44 @@ static int after_sleep_interval(struct t
+ {
+       return 0;
+ }
++
++static void deliver_alarm(void)
++{
++      alarm_handler(SIGVTALRM, NULL);
++}
++
++static unsigned long long sleep_time(unsigned long long nsecs)
++{
++      return nsecs;
++}
++
+ #else
++unsigned long long last_tick;
++unsigned long long skew;
++
++static void deliver_alarm(void)
++{
++      unsigned long long this_tick = os_nsecs();
++      int one_tick = UM_NSEC_PER_SEC / UM_HZ;
++
++      if (last_tick == 0)
++              last_tick = this_tick - one_tick;
++
++      skew += this_tick - last_tick;
++
++      while (skew >= one_tick) {
++              alarm_handler(SIGVTALRM, NULL);
++              skew -= one_tick;
++      }
++
++      last_tick = this_tick;
++}
++
++static unsigned long long sleep_time(unsigned long long nsecs)
++{
++      return nsecs > skew ? nsecs - skew : 0;
++}
++
+ static inline long long timespec_to_us(const struct timespec *ts)
+ {
+       return ((long long) ts->tv_sec * UM_USEC_PER_SEC) +
+@@ -102,6 +146,8 @@ static int after_sleep_interval(struct t
+        */
+       if (start_usecs > usec)
+               start_usecs = usec;
++
++      start_usecs -= skew / UM_NSEC_PER_USEC;
+       tv = ((struct timeval) { .tv_sec  = start_usecs / UM_USEC_PER_SEC,
+                                .tv_usec = start_usecs % UM_USEC_PER_SEC });
+       interval = ((struct itimerval) { { 0, usec }, tv });
+@@ -113,8 +159,6 @@ static int after_sleep_interval(struct t
+ }
+ #endif
+-extern void alarm_handler(int sig, struct sigcontext *sc);
+-
+ void idle_sleep(unsigned long long nsecs)
+ {
+       struct timespec ts;
+@@ -126,10 +170,12 @@ void idle_sleep(unsigned long long nsecs
+        */
+       if (nsecs == 0)
+               nsecs = UM_NSEC_PER_SEC / UM_HZ;
++
++      nsecs = sleep_time(nsecs);
+       ts = ((struct timespec) { .tv_sec       = nsecs / UM_NSEC_PER_SEC,
+                                 .tv_nsec      = nsecs % UM_NSEC_PER_SEC });
+       if (nanosleep(&ts, &ts) == 0)
+-              alarm_handler(SIGVTALRM, NULL);
++              deliver_alarm();
+       after_sleep_interval(&ts);
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:48 2008
+Message-Id: <20080818191148.425274417@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:43 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Al Viro <viro@zeniv.linux.org.uk>,
+ Jeff Dike <jdike@addtoit.com>
+Subject: [patch 31/49] uml: missed kmalloc() in pcap_user.c
+Content-Disposition: inline; filename=uml-missed-kmalloc-in-pcap_user.c.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Al Viro <viro@ftp.linux.org.uk>
+
+commit 296cd66f7f6e130fe08e6880ecb13c3fc615a8db upstream
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Acked-by: Jeff Dike <jdike@addtoit.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/drivers/pcap_user.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/um/drivers/pcap_user.c
++++ b/arch/um/drivers/pcap_user.c
+@@ -50,7 +50,7 @@ static int pcap_open(void *data)
+                       return -EIO;
+               }
+-              pri->compiled = kmalloc(sizeof(struct bpf_program),
++              pri->compiled = uml_kmalloc(sizeof(struct bpf_program),
+                                       UM_GFP_KERNEL);
+               if (pri->compiled == NULL) {
+                       printk(UM_KERN_ERR "pcap_open : kmalloc failed\n");
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:48 2008
+Message-Id: <20080818191148.519696893@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:44 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Nix <nix@esperi.org.uk>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 32/49] uml: deal with host time going backwards
+Content-Disposition: inline; filename=uml-deal-with-host-time-going-backwards.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 06e1e4ffbd1932e288839b3140cda6b8141eb684 upstream
+
+Protection against the host's time going backwards (eg, ntp activity on
+the host) by keeping track of the time at the last tick and if it's
+greater than the current time, keep time stopped until the host catches
+up.
+
+Cc: Nix <nix@esperi.org.uk>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/os-Linux/time.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/arch/um/os-Linux/time.c
++++ b/arch/um/os-Linux/time.c
+@@ -106,6 +106,10 @@ static void deliver_alarm(void)
+       unsigned long long this_tick = os_nsecs();
+       int one_tick = UM_NSEC_PER_SEC / UM_HZ;
++      /* Protection against the host's time going backwards */
++      if ((last_tick != 0) && (this_tick < last_tick))
++              this_tick = last_tick;
++
+       if (last_tick == 0)
+               last_tick = this_tick - one_tick;
+@@ -148,6 +152,9 @@ static int after_sleep_interval(struct t
+               start_usecs = usec;
+       start_usecs -= skew / UM_NSEC_PER_USEC;
++      if (start_usecs < 0)
++              start_usecs = 0;
++
+       tv = ((struct timeval) { .tv_sec  = start_usecs / UM_USEC_PER_SEC,
+                                .tv_usec = start_usecs % UM_USEC_PER_SEC });
+       interval = ((struct itimerval) { { 0, usec }, tv });
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:48 2008
+Message-Id: <20080818191148.707725539@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:45 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Tom Spink <tspink@gmail.com>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 33/49] uml: deal with inaccessible address space start
+Content-Disposition: inline; filename=uml-deal-with-inaccessible-address-space-start.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tom Spink <tspink@gmail.com>
+
+commit 40fb16a360d9c6459afee91dc793c1e3374feb94 upstream
+
+This patch makes os_get_task_size locate the bottom of the address space,
+as well as the top.  This is for systems which put a lower limit on mmap
+addresses.  It works by manually scanning pages from zero onwards until a
+valid page is found.
+
+Because the bottom of the address space may not be zero, it's not
+sufficient to assume the top of the address space is the size of the
+address space.  The size is the difference between the top address and
+bottom address.
+
+[jdike@addtoit.com: changed the name to reflect that this function is
+supposed to return the top of the process address space, not its size and
+changed the return value to reflect that.  Also some minor formatting
+changes]
+
+Signed-off-by: Tom Spink <tspink@gmail.com>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/include/os.h                    |    2 -
+ arch/um/kernel/um_arch.c                |    2 -
+ arch/um/os-Linux/sys-i386/task_size.c   |   38 ++++++++++++++++++++++++--------
+ arch/um/os-Linux/sys-x86_64/task_size.c |    2 -
+ 4 files changed, 32 insertions(+), 12 deletions(-)
+
+--- a/arch/um/include/os.h
++++ b/arch/um/include/os.h
+@@ -298,6 +298,6 @@ extern int os_arch_prctl(int pid, int co
+ extern int get_pty(void);
+ /* sys-$ARCH/task_size.c */
+-extern unsigned long os_get_task_size(void);
++extern unsigned long os_get_top_address(void);
+ #endif
+--- a/arch/um/kernel/um_arch.c
++++ b/arch/um/kernel/um_arch.c
+@@ -273,7 +273,7 @@ int __init linux_main(int argc, char **a
+       if (have_root == 0)
+               add_arg(DEFAULT_COMMAND_LINE);
+-      host_task_size = os_get_task_size();
++      host_task_size = os_get_top_address();
+       /*
+        * TASK_SIZE needs to be PGDIR_SIZE aligned or else exit_mmap craps
+        * out
+--- a/arch/um/os-Linux/sys-i386/task_size.c
++++ b/arch/um/os-Linux/sys-i386/task_size.c
+@@ -63,7 +63,7 @@ static int page_ok(unsigned long page)
+       return ok;
+ }
+-unsigned long os_get_task_size(void)
++unsigned long os_get_top_address(void)
+ {
+       struct sigaction sa, old;
+       unsigned long bottom = 0;
+@@ -76,9 +76,9 @@ unsigned long os_get_task_size(void)
+        * hosts, but shouldn't hurt otherwise.
+        */
+       unsigned long top = 0xffffd000 >> UM_KERN_PAGE_SHIFT;
+-      unsigned long test;
++      unsigned long test, original;
+-      printf("Locating the top of the address space ... ");
++      printf("Locating the bottom of the address space ... ");
+       fflush(stdout);
+       /*
+@@ -88,14 +88,32 @@ unsigned long os_get_task_size(void)
+       sa.sa_handler = segfault;
+       sigemptyset(&sa.sa_mask);
+       sa.sa_flags = SA_NODEFER;
+-      sigaction(SIGSEGV, &sa, &old);
++      if (sigaction(SIGSEGV, &sa, &old)) {
++              perror("os_get_top_address");
++              exit(1);
++      }
+-      if (!page_ok(bottom)) {
+-              fprintf(stderr, "Address 0x%x no good?\n",
+-                      bottom << UM_KERN_PAGE_SHIFT);
++      /* Manually scan the address space, bottom-up, until we find
++       * the first valid page (or run out of them).
++       */
++      for (bottom = 0; bottom < top; bottom++) {
++              if (page_ok(bottom))
++                      break;
++      }
++
++      /* If we've got this far, we ran out of pages. */
++      if (bottom == top) {
++              fprintf(stderr, "Unable to determine bottom of address "
++                      "space.\n");
+               exit(1);
+       }
++      printf("0x%x\n", bottom << UM_KERN_PAGE_SHIFT);
++      printf("Locating the top of the address space ... ");
++      fflush(stdout);
++
++      original = bottom;
++
+       /* This could happen with a 4G/4G split */
+       if (page_ok(top))
+               goto out;
+@@ -110,8 +128,10 @@ unsigned long os_get_task_size(void)
+ out:
+       /* Restore the old SIGSEGV handling */
+-      sigaction(SIGSEGV, &old, NULL);
+-
++      if (sigaction(SIGSEGV, &old, NULL)) {
++              perror("os_get_top_address");
++              exit(1);
++      }
+       top <<= UM_KERN_PAGE_SHIFT;
+       printf("0x%x\n", top);
+       fflush(stdout);
+--- a/arch/um/os-Linux/sys-x86_64/task_size.c
++++ b/arch/um/os-Linux/sys-x86_64/task_size.c
+@@ -1,4 +1,4 @@
+-unsigned long os_get_task_size(unsigned long shift)
++unsigned long os_get_top_address(unsigned long shift)
+ {
+       /* The old value of CONFIG_TOP_ADDR */
+       return 0x7fc0000000;
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:49 2008
+Message-Id: <20080818191148.933773682@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:46 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Al Viro <viro@zeniv.linux.org.uk>,
+ Jeff Dike <jdike@addtoit.com>
+Subject: [patch 34/49] uml: missing export of csum_partial() on uml/amd64
+Content-Disposition: inline; filename=uml-missing-export-of-csum_partial-on-uml-amd64.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Al Viro <viro@ftp.linux.org.uk>
+
+commit 3e3b48e5198544dd90e27265a70c1a834139e025 upstream
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Cc: Jeff Dike <jdike@addtoit.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/sys-x86_64/ksyms.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/um/sys-x86_64/ksyms.c
++++ b/arch/um/sys-x86_64/ksyms.c
+@@ -14,3 +14,4 @@ EXPORT_SYMBOL(__up_wakeup);
+ /*XXX: we need them because they would be exported by x86_64 */
+ EXPORT_SYMBOL(__memcpy);
++EXPORT_SYMBOL(csum_partial);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:49 2008
+Message-Id: <20080818191149.050689170@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:47 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Gabriel C <nix.or.die@googlemail.com>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 35/49] uml: memcpy export needs to follow host declaration
+Content-Disposition: inline; filename=uml-memcpy-export-needs-to-follow-host-declaration.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 8bfd04b974689f700bbd053ad6e66b0a95fb80c9 upstream
+
+x86_64 defines either memcpy or __memcpy depending on the gcc version, and
+it looks like UML needs to follow that in its exporting.
+
+Cc: Gabriel C <nix.or.die@googlemail.com>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/sys-x86_64/ksyms.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/um/sys-x86_64/ksyms.c
++++ b/arch/um/sys-x86_64/ksyms.c
+@@ -13,5 +13,9 @@ EXPORT_SYMBOL(__down_failed_trylock);
+ EXPORT_SYMBOL(__up_wakeup);
+ /*XXX: we need them because they would be exported by x86_64 */
++#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4
++EXPORT_SYMBOL(memcpy);
++#else
+ EXPORT_SYMBOL(__memcpy);
++#endif
+ EXPORT_SYMBOL(csum_partial);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:49 2008
+Message-Id: <20080818191149.236036469@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:48 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Benedict Verheyen <benedict.verheyen@gmail.com>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 36/49] uml: stub needs to tolerate SIGWINCH
+Content-Disposition: inline; filename=uml-stub-needs-to-tolerate-sigwinch.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 3d5ede6f776bdb1483bcd086f79c3bf41fed3865 upstream
+
+We lost the marking of SIGWINCH as being OK to receive during stub
+execution, causing a panic should that happen.
+
+Cc: Benedict Verheyen <benedict.verheyen@gmail.com>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/os-Linux/skas/process.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/um/os-Linux/skas/process.c
++++ b/arch/um/os-Linux/skas/process.c
+@@ -55,7 +55,7 @@ static int ptrace_dump_regs(int pid)
+  * Signals that are OK to receive in the stub - we'll just continue it.
+  * SIGWINCH will happen when UML is inside a detached screen.
+  */
+-#define STUB_SIG_MASK (1 << SIGVTALRM)
++#define STUB_SIG_MASK ((1 << SIGVTALRM) | (1 << SIGWINCH))
+ /* Signals that the stub will finish with - anything else is an error */
+ #define STUB_DONE_MASK (1 << SIGTRAP)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:49 2008
+Message-Id: <20080818191149.409806947@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:49 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 37/49] uml: work around broken host PTRACE_SYSEMU
+Content-Disposition: inline; filename=uml-work-around-broken-host-ptrace_sysemu.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit f1ef9167ca4494a8c6d71d0031c73e9c8841eadd upstream
+
+Fedora broke PTRACE_SYSEMU again, and UML crashes as a result when it
+doesn't need to.  This patch makes the PTRACE_SYSEMU check fail gracefully
+and makes UML fall back to PTRACE_SYSCALL.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/os-Linux/start_up.c |   25 ++++++++++++++++---------
+ 1 file changed, 16 insertions(+), 9 deletions(-)
+
+--- a/arch/um/os-Linux/start_up.c
++++ b/arch/um/os-Linux/start_up.c
+@@ -122,8 +122,10 @@ static int stop_ptraced_child(int pid, i
+ {
+       int status, n, ret = 0;
+-      if (ptrace(PTRACE_CONT, pid, 0, 0) < 0)
+-              fatal_perror("stop_ptraced_child : ptrace failed");
++      if (ptrace(PTRACE_CONT, pid, 0, 0) < 0) {
++              perror("stop_ptraced_child : ptrace failed");
++              return -1;
++      }
+       CATCH_EINTR(n = waitpid(pid, &status, 0));
+       if (!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) {
+               int exit_with = WEXITSTATUS(status);
+@@ -203,7 +205,7 @@ static void __init check_sysemu(void)
+       if (n < 0)
+               fatal_perror("check_sysemu : wait failed");
+       if (!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP))
+-              fatal("check_sysemu : expected SIGTRAP, got status = %d",
++              fatal("check_sysemu : expected SIGTRAP, got status = %d\n",
+                     status);
+       if (ptrace(PTRACE_GETREGS, pid, 0, regs) < 0)
+@@ -245,9 +247,11 @@ static void __init check_sysemu(void)
+               if (WIFSTOPPED(status) &&
+                   (WSTOPSIG(status) == (SIGTRAP|0x80))) {
+-                      if (!count)
+-                              fatal("check_ptrace : SYSEMU_SINGLESTEP "
+-                                    "doesn't singlestep");
++                      if (!count) {
++                              non_fatal("check_ptrace : SYSEMU_SINGLESTEP "
++                                        "doesn't singlestep");
++                              goto fail;
++                      }
+                       n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET,
+                                  os_getpid());
+                       if (n < 0)
+@@ -257,9 +261,12 @@ static void __init check_sysemu(void)
+               }
+               else if (WIFSTOPPED(status) && (WSTOPSIG(status) == SIGTRAP))
+                       count++;
+-              else
+-                      fatal("check_ptrace : expected SIGTRAP or "
+-                            "(SIGTRAP | 0x80), got status = %d", status);
++              else {
++                      non_fatal("check_ptrace : expected SIGTRAP or "
++                                "(SIGTRAP | 0x80), got status = %d\n",
++                                status);
++                      goto fail;
++              }
+       }
+       if (stop_ptraced_child(pid, 0, 0) < 0)
+               goto fail_stopped;
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:49 2008
+Message-Id: <20080818191149.593532952@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:50 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Jeff Dike <jdike@linux.intel.com>,
+ Benny Halevy <bhalevy@panasas.com>,
+ Adrian Bunk <bunk@kernel.org>,
+ Ingo Molnar <mingo@elte.hu>,
+ Ulrich Drepper <drepper@redhat.com>
+Subject: [patch 38/49] uml: fix gcc ICEs and unresolved externs
+Content-Disposition: inline; filename=uml-fix-gcc-ices-and-unresolved-externs.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 4f81c5350b44bcc501ab6f8a089b16d064b4d2f6 upstream
+
+There are various constraints on the use of unit-at-a-time:
+ - i386 uses no-unit-at-a-time for pre-4.0 (not 4.3)
+ - x86_64 uses unit-at-a-time always
+
+Uli reported a crash on x86_64 with gcc 4.1.2 with unit-at-a-time,
+resulting in commit c0a18111e571138747a98af18b3a2124df56a0d1
+
+Ingo reported a gcc internal error with gcc 4.3 with no-unit-at-a-timem,
+resulting in 22eecde2f9034764a3fd095eecfa3adfb8ec9a98
+
+Benny Halevy is seeing extern inlines not resolved with gcc 4.3 with
+no-unit-at-a-time
+
+This patch reintroduces unit-at-a-time for gcc >= 4.0, bringing back the
+possibility of Uli's crash.  If that happens, we'll debug it.
+
+I started seeing both the internal compiler errors and unresolved
+inlines on Fedora 9.  This patch fixes both problems, without so far
+reintroducing the crash reported by Uli.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Cc: Benny Halevy <bhalevy@panasas.com>
+Cc: Adrian Bunk <bunk@kernel.org>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Ulrich Drepper <drepper@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/Makefile        |    1 -
+ arch/um/Makefile-i386   |    7 +++++++
+ arch/um/Makefile-x86_64 |    3 +++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+--- a/arch/um/Makefile
++++ b/arch/um/Makefile
+@@ -77,7 +77,6 @@ include $(srctree)/$(ARCH_DIR)/Makefile-
+ KERNEL_DEFINES = $(strip -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask \
+                        -Dmktime=kernel_mktime $(ARCH_KERNEL_DEFINES))
+ KBUILD_CFLAGS += $(KERNEL_DEFINES)
+-KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time,)
+ PHONY += linux
+--- a/arch/um/Makefile-i386
++++ b/arch/um/Makefile-i386
+@@ -32,4 +32,11 @@ cflags-y += $(call cc-option,-mpreferred
+ # an unresolved reference.
+ cflags-y += -ffreestanding
++# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
++# a lot more stack due to the lack of sharing of stacklots.  Also, gcc
++# 4.3.0 needs -funit-at-a-time for extern inline functions.
++KBUILD_CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then \
++                      echo $(call cc-option,-fno-unit-at-a-time); \
++                      else echo $(call cc-option,-funit-at-a-time); fi ;)
++
+ KBUILD_CFLAGS += $(cflags-y)
+--- a/arch/um/Makefile-x86_64
++++ b/arch/um/Makefile-x86_64
+@@ -21,3 +21,6 @@ HEADER_ARCH := x86
+ LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64
+ LINK-y += -m64
++
++# Do unit-at-a-time unconditionally on x86_64, following the host
++KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:50 2008
+Message-Id: <20080818191149.838656704@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:51 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 39/49] uml: Fix boot crash
+Content-Disposition: inline; filename=uml-fix-boot-crash.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jeff Dike <jdike@addtoit.com>
+
+commit 7c1fed03b9fa32d4323d5caa6a9c7dcdd7eba767 upstream
+
+My copying of linux/init.h didn't go far enough.  The definition of
+__used singled out gcc minor version 3, but didn't care what the major
+version was.  This broke when unit-at-a-time was added and gcc started
+throwing out initcalls.
+
+This results in an early boot crash when ptrace tries to initialize a
+process with an empty, uninitialized register set.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/include/init.h |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/um/include/init.h
++++ b/arch/um/include/init.h
+@@ -45,6 +45,8 @@ typedef void (*exitcall_t)(void);
+ # define __section(S) __attribute__ ((__section__(#S)))
+ #endif
++#if __GNUC__ == 3
++
+ #if __GNUC_MINOR__ >= 3
+ # define __used                       __attribute__((__used__))
+ #else
+@@ -52,6 +54,12 @@ typedef void (*exitcall_t)(void);
+ #endif
+ #else
++#if __GNUC__ == 4
++# define __used                       __attribute__((__used__))
++#endif
++#endif
++
++#else
+ #include <linux/compiler.h>
+ #endif
+ /* These are for everybody (although not all archs will actually
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:50 2008
+Message-Id: <20080818191150.093828870@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:52 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ uml-devel <user-mode-linux-devel@lists.sourceforge.net>,
+ Ingo Molnar <mingo@elte.hu>,
+ Jeff Dike <jdike@linux.intel.com>
+Subject: [patch 40/49] uml: PATH_MAX needs limits.h
+Content-Disposition: inline; filename=uml-path_max-needs-limits.h.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Ingo Molnar <mingo@elte.hu>
+
+commit b6d8adf477439e7086224bc9674c6b6638780783 upstream.
+
+Include limits.h to get a definition of PATH_MAX.
+
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/os-Linux/helper.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/um/os-Linux/helper.c
++++ b/arch/um/os-Linux/helper.c
+@@ -7,6 +7,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+ #include <sched.h>
++#include <linux/limits.h>
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include "kern_constants.h"
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:50 2008
+Message-Id: <20080818191150.271458849@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:53 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Benjamin Herrenschmidt <benh@kernel.crashing.org>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 41/49] radeon: misc corrections
+Content-Disposition: inline; filename=radeon-misc-corrections.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: David Miller <davem@davemloft.net>
+
+Commit efc491814308f89d5ef6c4fe19ae4552a67d4132 upstream
+
+radeon: misc corrections
+
+I have a new PCI-E radeon RV380 series card (PCI device ID 5b64) that
+hangs in my sparc64 boxes when the init scripts set the font.  The problem
+goes away if I disable acceleration.
+
+I haven't figured out that bug yet, but along the way I found some
+corrections to make based upon some auditing.
+
+1) The RB2D_DC_FLUSH_ALL value used by the kernel fb driver
+   and the XORG video driver differ.  I've made the kernel
+   match what XORG is using.
+
+2) In radeonfb_engine_reset() we have top-level code structure
+   that roughly looks like:
+
+       if (family is 300, 350, or V350)
+               do this;
+       else
+               do that;
+       ...
+       if (family is NOT 300, OR
+           family is NOT 350, OR
+           family is NOT V350)
+               do another thing;
+
+   this last conditional makes no sense, is always true,
+   and obviously was likely meant to be "family is NOT
+   300, 350, or V350".  So I've made the code match the
+   intent.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Tested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/aty/radeon_accel.c |    4 ++--
+ include/video/radeon.h           |    5 +++--
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+--- a/drivers/video/aty/radeon_accel.c
++++ b/drivers/video/aty/radeon_accel.c
+@@ -249,8 +249,8 @@ void radeonfb_engine_reset(struct radeon
+       INREG(HOST_PATH_CNTL);
+       OUTREG(HOST_PATH_CNTL, host_path_cntl);
+-      if (rinfo->family != CHIP_FAMILY_R300 ||
+-          rinfo->family != CHIP_FAMILY_R350 ||
++      if (rinfo->family != CHIP_FAMILY_R300 &&
++          rinfo->family != CHIP_FAMILY_R350 &&
+           rinfo->family != CHIP_FAMILY_RV350)
+               OUTREG(RBBM_SOFT_RESET, rbbm_soft_reset);
+--- a/include/video/radeon.h
++++ b/include/video/radeon.h
+@@ -527,8 +527,9 @@
+ /* DSTCACHE_CTLSTAT bit constants */
+-#define RB2D_DC_FLUSH                            (3 << 0)
+-#define RB2D_DC_FLUSH_ALL                        0xf
++#define RB2D_DC_FLUSH_2D                         (1 << 0)
++#define RB2D_DC_FREE_2D                                  (1 << 2)
++#define RB2D_DC_FLUSH_ALL                        (RB2D_DC_FLUSH_2D | RB2D_DC_FREE_2D)
+ #define RB2D_DC_BUSY                             (1 << 31)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:50 2008
+Message-Id: <20080818191150.541246699@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:54 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Marcus Sundberg <marcus@ingate.com>,
+ Francois Romieu <romieu@fr.zoreil.com>,
+ Karsten Keil <kkeil@suse.de>
+Subject: [patch 42/49] r8169: avoid thrashing PCI conf space above RTL_GIGA_MAC_VER_06
+Content-Disposition: inline; filename=r8169-avoid-thrashing-pci-conf-space-above-rtl_giga_mac_ver_06.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Marcus Sundberg <marcus@ingate.com>
+
+commit 77332894c21165404496c56763d7df6c15c4bb09 upstream
+
+The magic write to register 0x82 will often cause PCI config space on
+my 8168 (PCI ID 10ec:8168, revision 2. mounted in an LG P300 laptop)
+to be filled with ones during driver load, and thus breaking NIC
+operation until reboot. If it does not happen on first driver load it
+can easily be reproduced by unloading and loading the driver a few
+times.
+
+The magic write was added long ago by this commit:
+
+Author: François Romieu <romieu@fr.zoreil.com>
+Date:   Sat Jan 10 06:00:46 2004 -0500
+
+     [netdrvr r8169] Merge of changes done by Realtek to rtl8169_init_one():
+     - phy capability settings allows lower or equal capability as suggested
+       in Realtek's changes;
+     - I/O voodoo;
+     - no need to s/mdio_write/RTL8169_WRITE_GMII_REG/;
+     - s/rtl8169_hw_PHY_config/rtl8169_hw_phy_config/;
+     - rtl8169_hw_phy_config(): ad-hoc struct "phy_magic" to limit duplication
+       of code (yep, the u16 -> int conversions should work as expected);
+     - variable renames and whitepace changes ignored.
+
+As the 8168 wasn't supported by that version this patch simply removes
+the bogus write from mac versions <= RTL_GIGA_MAC_VER_06.
+
+[The change above makes sense for the 8101/8102 too -- Ueimor]
+
+Signed-off-by: Marcus Sundberg <marcus@ingate.com>
+Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
+Cc: Karsten Keil <kkeil@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/r8169.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -1438,8 +1438,10 @@ static void rtl8169_init_phy(struct net_
+       rtl_hw_phy_config(dev);
+-      dprintk("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
+-      RTL_W8(0x82, 0x01);
++      if (tp->mac_version <= RTL_GIGA_MAC_VER_06) {
++              dprintk("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
++              RTL_W8(0x82, 0x01);
++      }
+       pci_write_config_byte(tp->pci_dev, PCI_LATENCY_TIMER, 0x40);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:50 2008
+Message-Id: <20080818191150.798675087@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:55 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ David Howells <dhowells@redhat.com>,
+ Patrick McHardy <kaber@trash.net>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 43/49] netfilter: nf_nat_snmp_basic: fix a range check in NAT for SNMP
+Content-Disposition: inline; filename=netfilter-nf_nat_snmp_basic-fix-a-range-check-in-nat-for-snmp.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: David Howells <dhowells@redhat.com>
+
+commit 252815b0cfe711001eff0327872209986b36d490 upstream
+
+Fix a range check in netfilter IP NAT for SNMP to always use a big enough size
+variable that the compiler won't moan about comparing it to ULONG_MAX/8 on a
+64-bit platform.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Eugene Teo <eteo@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/netfilter/nf_nat_snmp_basic.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
++++ b/net/ipv4/netfilter/nf_nat_snmp_basic.c
+@@ -438,8 +438,8 @@ static unsigned char asn1_oid_decode(str
+                                    unsigned int *len)
+ {
+       unsigned long subid;
+-      unsigned int  size;
+       unsigned long *optr;
++      size_t size;
+       size = eoc - ctx->pointer + 1;
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:51 2008
+Message-Id: <20080818191151.001487176@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:56 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Jean Delvare <khali@linux-fr.org>
+Subject: [patch 44/49] i2c: Fix NULL pointer dereference in i2c_new_probed_device
+Content-Disposition: inline; filename=i2c-fix-null-pointer-dereference-in-i2c_new_probed_device.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+Already in Linus' tree:
+http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b25b791b13aaa336b56c4f9bd417ff126363f80b
+
+Fix a NULL pointer dereference that happened when calling
+i2c_new_probed_device on one of the addresses for which we use byte
+reads instead of quick write for detection purpose (that is: 0x30-0x37
+and 0x50-0x5f).
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/i2c/i2c-core.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/i2c/i2c-core.c
++++ b/drivers/i2c/i2c-core.c
+@@ -1173,9 +1173,11 @@ i2c_new_probed_device(struct i2c_adapter
+               if ((addr_list[i] & ~0x07) == 0x30
+                || (addr_list[i] & ~0x0f) == 0x50
+                || !i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK)) {
++                      union i2c_smbus_data data;
++
+                       if (i2c_smbus_xfer(adap, addr_list[i], 0,
+                                          I2C_SMBUS_READ, 0,
+-                                         I2C_SMBUS_BYTE, NULL) >= 0)
++                                         I2C_SMBUS_BYTE, &data) >= 0)
+                               break;
+               } else {
+                       if (i2c_smbus_xfer(adap, addr_list[i], 0,
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:51 2008
+Message-Id: <20080818191151.220219934@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:57 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Steve French <sfrench@us.ibm.com>
+Subject: [patch 45/49] CIFS: Fix compiler warning on 64-bit
+Content-Disposition: inline; filename=cifs-fix-compiler-warning-on-64-bit.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jan Beulich <jbeulich@novell.com>
+
+commit 04e1e0cccade330ab3715ce59234f7e3b087e246 upstream.
+
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Cc: Eugene Teo <eteo@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/asn1.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/cifs/asn1.c
++++ b/fs/cifs/asn1.c
+@@ -400,7 +400,7 @@ asn1_oid_decode(struct asn1_ctx *ctx,
+       size = eoc - ctx->pointer + 1;
+       /* first subid actually encodes first two subids */
+-      if (size < 2 || size > ULONG_MAX/sizeof(unsigned long))
++      if (size < 2 || size > UINT_MAX/sizeof(unsigned long))
+               return 0;
+       *oid = kmalloc(size * sizeof(unsigned long), GFP_ATOMIC);
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:51 2008
+Message-Id: <20080818191151.441343219@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:58 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Beulich <jbeulich@novell.com>,
+ Nick Piggin <npiggin@suse.de>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 46/49] x86: fix spin_is_contended()
+Content-Disposition: inline; filename=x86-fix-spin_is_contended.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jan Beulich <jbeulich@novell.com>
+
+commit 7bc069c6bc4ede519a7116be1b9e149a1dbf787a upstream
+
+The masked difference is what needs to be compared against 1, rather
+than the difference of masked values (which can be negative).
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Acked-by: Nick Piggin <npiggin@suse.de>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-x86/spinlock.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/include/asm-x86/spinlock.h
++++ b/include/asm-x86/spinlock.h
+@@ -75,7 +75,7 @@ static inline int __raw_spin_is_contende
+ {
+       int tmp = *(volatile signed int *)(&(lock)->slock);
+-      return (((tmp >> 8) & 0xff) - (tmp & 0xff)) > 1;
++      return (((tmp >> 8) - tmp) & 0xff) > 1;
+ }
+ static inline void __raw_spin_lock(raw_spinlock_t *lock)
+@@ -141,7 +141,7 @@ static inline int __raw_spin_is_contende
+ {
+       int tmp = *(volatile signed int *)(&(lock)->slock);
+-      return (((tmp >> 16) & 0xffff) - (tmp & 0xffff)) > 1;
++      return (((tmp >> 16) - tmp) & 0xffff) > 1;
+ }
+ static inline void __raw_spin_lock(raw_spinlock_t *lock)
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:52 2008
+Message-Id: <20080818191151.924481859@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:10:59 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Joerg Roedel <joro@8bytes.org>,
+ "H. Peter Anvin" <hpa@zytor.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 47/49] x86: fix setup code crashes on my old 486 box
+Content-Disposition: inline; filename=x86-fix-setup-code-crashes-on-my-old-486-box.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Joerg Roedel <joro@8bytes.org>
+
+commit 7b27718bdb1b70166383dec91391df5534d449ee upstream
+
+yesterday I tried to reactivate my old 486 box and wanted to install a
+current Linux with latest kernel on it. But it turned out that the
+latest kernel does not boot because the machine crashes early in the
+setup code.
+
+After some debugging it turned out that the problem is the query_ist()
+function. If this interrupt with that function is called the machine
+simply locks up. It looks like a BIOS bug. Looking for a workaround for
+this problem I wrote the attached patch. It checks for the CPUID
+instruction and if it is not implemented it does not call the speedstep
+BIOS function. As far as I know speedstep should be available since some
+Pentium earliest.
+
+Alan Cox observed that it's available since the Pentium II, so cpuid
+levels 4 and 5 can be excluded altogether.
+
+H. Peter Anvin cleaned up the code some more:
+
+> Right in concept, but I dislike the implementation (duplication of the
+> CPU detect code we already have).  Could you try this patch and see if
+> it works for you?
+
+which, with a small modification to fix a build error with it the
+resulting kernel boots on my machine.
+
+Signed-off-by: Joerg Roedel <joro@8bytes.org>
+Signed-off-by: "H. Peter Anvin" <hpa@zytor.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/boot/boot.h     |    8 ++++++++
+ arch/x86/boot/cpucheck.c |    8 +-------
+ arch/x86/boot/main.c     |    4 ++++
+ 3 files changed, 13 insertions(+), 7 deletions(-)
+
+--- a/arch/x86/boot/boot.h
++++ b/arch/x86/boot/boot.h
+@@ -27,6 +27,8 @@
+ #include <asm/boot.h>
+ #include <asm/setup.h>
++#define NCAPINTS   8
++
+ /* Useful macros */
+ #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
+@@ -244,6 +246,12 @@ int cmdline_find_option(const char *opti
+ int cmdline_find_option_bool(const char *option);
+ /* cpu.c, cpucheck.c */
++struct cpu_features {
++      int level;              /* Family, or 64 for x86-64 */
++      int model;
++      u32 flags[NCAPINTS];
++};
++extern struct cpu_features cpu;
+ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr);
+ int validate_cpu(void);
+--- a/arch/x86/boot/cpucheck.c
++++ b/arch/x86/boot/cpucheck.c
+@@ -32,13 +32,7 @@
+ #include <asm/required-features.h>
+ #include <asm/msr-index.h>
+-struct cpu_features {
+-      int level;              /* Family, or 64 for x86-64 */
+-      int model;
+-      u32 flags[NCAPINTS];
+-};
+-
+-static struct cpu_features cpu;
++struct cpu_features cpu;
+ static u32 cpu_vendor[3];
+ static u32 err_flags[NCAPINTS];
+--- a/arch/x86/boot/main.c
++++ b/arch/x86/boot/main.c
+@@ -75,6 +75,10 @@ static void keyboard_set_repeat(void)
+  */
+ static void query_ist(void)
+ {
++      /* Some 486 BIOSes apparently crash on this call */
++      if (cpu.level < 6)
++              return;
++
+       asm("int $0x15"
+           : "=a" (boot_params.ist_info.signature),
+             "=b" (boot_params.ist_info.command),
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:52 2008
+Message-Id: <20080818191152.201425995@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:11:00 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Seokmann Ju <seokmann.ju@qlogic.com>,
+ Andrew Vasquez <andrew.vasquez@qlogic.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 48/49] qla2xxx: Add dev_loss_tmo_callbk/terminate_rport_io callback support.
+Content-Disposition: inline; filename=qla2xxx-add-dev_loss_tmo_callbk-terminate_rport_io-callback-support.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Seokmann Ju <seokmann.ju@qlogic.com>
+
+[ Upstream commit 5f3a9a207f1fccde476dd31b4c63ead2967d934f ]
+
+Signed-off-by: Seokmann Ju <seokmann.ju@qlogic.com>
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_attr.c |   31 +++++++++++++++++++++++
+ drivers/scsi/qla2xxx/qla_def.h  |    1 
+ drivers/scsi/qla2xxx/qla_gbl.h  |    2 +
+ drivers/scsi/qla2xxx/qla_init.c |   16 +++---------
+ drivers/scsi/qla2xxx/qla_os.c   |   53 ++++++++++++++++++++++++++++++----------
+ 5 files changed, 78 insertions(+), 25 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_attr.c
++++ b/drivers/scsi/qla2xxx/qla_attr.c
+@@ -969,6 +969,33 @@ qla2x00_set_rport_loss_tmo(struct fc_rpo
+       rport->dev_loss_tmo = ha->port_down_retry_count + 5;
+ }
++static void
++qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
++{
++      struct Scsi_Host *host = rport_to_shost(rport);
++      fc_port_t *fcport = *(fc_port_t **)rport->dd_data;
++
++      qla2x00_abort_fcport_cmds(fcport);
++
++      /*
++       * Transport has effectively 'deleted' the rport, clear
++       * all local references.
++       */
++      spin_lock_irq(host->host_lock);
++      fcport->rport = NULL;
++      *((fc_port_t **)rport->dd_data) = NULL;
++      spin_unlock_irq(host->host_lock);
++}
++
++static void
++qla2x00_terminate_rport_io(struct fc_rport *rport)
++{
++      fc_port_t *fcport = *(fc_port_t **)rport->dd_data;
++
++      qla2x00_abort_fcport_cmds(fcport);
++      scsi_target_unblock(&rport->dev);
++}
++
+ static int
+ qla2x00_issue_lip(struct Scsi_Host *shost)
+ {
+@@ -1227,6 +1254,8 @@ struct fc_function_template qla2xxx_tran
+       .show_rport_dev_loss_tmo = 1,
+       .issue_fc_host_lip = qla2x00_issue_lip,
++      .dev_loss_tmo_callbk = qla2x00_dev_loss_tmo_callbk,
++      .terminate_rport_io = qla2x00_terminate_rport_io,
+       .get_fc_host_stats = qla2x00_get_fc_host_stats,
+       .vport_create = qla24xx_vport_create,
+@@ -1270,6 +1299,8 @@ struct fc_function_template qla2xxx_tran
+       .show_rport_dev_loss_tmo = 1,
+       .issue_fc_host_lip = qla2x00_issue_lip,
++      .dev_loss_tmo_callbk = qla2x00_dev_loss_tmo_callbk,
++      .terminate_rport_io = qla2x00_terminate_rport_io,
+       .get_fc_host_stats = qla2x00_get_fc_host_stats,
+ };
+--- a/drivers/scsi/qla2xxx/qla_def.h
++++ b/drivers/scsi/qla2xxx/qla_def.h
+@@ -1548,7 +1548,6 @@ typedef struct fc_port {
+       int login_retry;
+       atomic_t port_down_timer;
+-      spinlock_t rport_lock;
+       struct fc_rport *rport, *drport;
+       u32 supported_classes;
+--- a/drivers/scsi/qla2xxx/qla_gbl.h
++++ b/drivers/scsi/qla2xxx/qla_gbl.h
+@@ -68,6 +68,8 @@ extern int num_hosts;
+ extern int qla2x00_loop_reset(scsi_qla_host_t *);
+ extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
++extern void qla2x00_abort_fcport_cmds(fc_port_t *);
++
+ /*
+  * Global Functions in qla_mid.c source file.
+  */
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -1827,12 +1827,11 @@ qla2x00_rport_del(void *data)
+ {
+       fc_port_t *fcport = data;
+       struct fc_rport *rport;
+-      unsigned long flags;
+-      spin_lock_irqsave(&fcport->rport_lock, flags);
++      spin_lock_irq(fcport->ha->host->host_lock);
+       rport = fcport->drport;
+       fcport->drport = NULL;
+-      spin_unlock_irqrestore(&fcport->rport_lock, flags);
++      spin_unlock_irq(fcport->ha->host->host_lock);
+       if (rport)
+               fc_remote_port_delete(rport);
+ }
+@@ -1861,7 +1860,6 @@ qla2x00_alloc_fcport(scsi_qla_host_t *ha
+       atomic_set(&fcport->state, FCS_UNCONFIGURED);
+       fcport->flags = FCF_RLC_SUPPORT;
+       fcport->supported_classes = FC_COS_UNSPECIFIED;
+-      spin_lock_init(&fcport->rport_lock);
+       return fcport;
+ }
+@@ -2220,28 +2218,24 @@ qla2x00_reg_remote_port(scsi_qla_host_t 
+ {
+       struct fc_rport_identifiers rport_ids;
+       struct fc_rport *rport;
+-      unsigned long flags;
+       if (fcport->drport)
+               qla2x00_rport_del(fcport);
+-      if (fcport->rport)
+-              return;
+       rport_ids.node_name = wwn_to_u64(fcport->node_name);
+       rport_ids.port_name = wwn_to_u64(fcport->port_name);
+       rport_ids.port_id = fcport->d_id.b.domain << 16 |
+           fcport->d_id.b.area << 8 | fcport->d_id.b.al_pa;
+       rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
+-      rport = fc_remote_port_add(ha->host, 0, &rport_ids);
++      fcport->rport = rport = fc_remote_port_add(ha->host, 0, &rport_ids);
+       if (!rport) {
+               qla_printk(KERN_WARNING, ha,
+                   "Unable to allocate fc remote port!\n");
+               return;
+       }
+-      spin_lock_irqsave(&fcport->rport_lock, flags);
+-      fcport->rport = rport;
++      spin_lock_irq(fcport->ha->host->host_lock);
+       *((fc_port_t **)rport->dd_data) = fcport;
+-      spin_unlock_irqrestore(&fcport->rport_lock, flags);
++      spin_unlock_irq(fcport->ha->host->host_lock);
+       rport->supported_classes = fcport->supported_classes;
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -386,7 +386,7 @@ qla2x00_queuecommand(struct scsi_cmnd *c
+       }
+       /* Close window on fcport/rport state-transitioning. */
+-      if (!*(fc_port_t **)rport->dd_data) {
++      if (fcport->drport) {
+               cmd->result = DID_IMM_RETRY << 16;
+               goto qc_fail_command;
+       }
+@@ -453,7 +453,7 @@ qla24xx_queuecommand(struct scsi_cmnd *c
+       }
+       /* Close window on fcport/rport state-transitioning. */
+-      if (!*(fc_port_t **)rport->dd_data) {
++      if (fcport->drport) {
+               cmd->result = DID_IMM_RETRY << 16;
+               goto qc24_fail_command;
+       }
+@@ -617,6 +617,40 @@ qla2x00_wait_for_loop_ready(scsi_qla_hos
+       return (return_status);
+ }
++void
++qla2x00_abort_fcport_cmds(fc_port_t *fcport)
++{
++      int cnt;
++      unsigned long flags;
++      srb_t *sp;
++      scsi_qla_host_t *ha = fcport->ha;
++      scsi_qla_host_t *pha = to_qla_parent(ha);
++
++      spin_lock_irqsave(&pha->hardware_lock, flags);
++      for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
++              sp = pha->outstanding_cmds[cnt];
++              if (!sp)
++                      continue;
++              if (sp->fcport != fcport)
++                      continue;
++
++              spin_unlock_irqrestore(&pha->hardware_lock, flags);
++              if (ha->isp_ops->abort_command(ha, sp)) {
++                      DEBUG2(qla_printk(KERN_WARNING, ha,
++                          "Abort failed --  %lx\n", sp->cmd->serial_number));
++              } else {
++                      if (qla2x00_eh_wait_on_command(ha, sp->cmd) !=
++                          QLA_SUCCESS)
++                              DEBUG2(qla_printk(KERN_WARNING, ha,
++                                  "Abort failed while waiting --  %lx\n",
++                                  sp->cmd->serial_number));
++
++              }
++              spin_lock_irqsave(&pha->hardware_lock, flags);
++      }
++      spin_unlock_irqrestore(&pha->hardware_lock, flags);
++}
++
+ static void
+ qla2x00_block_error_handler(struct scsi_cmnd *cmnd)
+ {
+@@ -1883,7 +1917,6 @@ static inline void
+ qla2x00_schedule_rport_del(struct scsi_qla_host *ha, fc_port_t *fcport,
+     int defer)
+ {
+-      unsigned long flags;
+       struct fc_rport *rport;
+       if (!fcport->rport)
+@@ -1891,19 +1924,13 @@ qla2x00_schedule_rport_del(struct scsi_q
+       rport = fcport->rport;
+       if (defer) {
+-              spin_lock_irqsave(&fcport->rport_lock, flags);
++              spin_lock_irq(ha->host->host_lock);
+               fcport->drport = rport;
+-              fcport->rport = NULL;
+-              *(fc_port_t **)rport->dd_data = NULL;
+-              spin_unlock_irqrestore(&fcport->rport_lock, flags);
++              spin_unlock_irq(ha->host->host_lock);
+               set_bit(FCPORT_UPDATE_NEEDED, &ha->dpc_flags);
+-      } else {
+-              spin_lock_irqsave(&fcport->rport_lock, flags);
+-              fcport->rport = NULL;
+-              *(fc_port_t **)rport->dd_data = NULL;
+-              spin_unlock_irqrestore(&fcport->rport_lock, flags);
++              qla2xxx_wake_dpc(ha);
++      } else
+               fc_remote_port_delete(rport);
+-      }
+ }
+ /*
+
+-- 
+
+From gregkh@mini.kroah.org Mon Aug 18 12:11:52 2008
+Message-Id: <20080818191152.398168807@mini.kroah.org>
+References: <20080818191012.663450219@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Mon, 18 Aug 2008 12:11:01 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Andrew Vasquez <andrew.vasquez@qlogic.com>,
+ James Bottomley <James.Bottomley@HansenPartnership.com>
+Subject: [patch 49/49] qla2xxx: Set an rports dev_loss_tmo value in a consistent manner.
+Content-Disposition: inline; filename=qla2xxx-set-an-rport-s-dev_loss_tmo-value-in-a-consistent-manner.patch
+
+2.6.25-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Andrew Vasquez <andrew.vasquez@qlogic.com>
+
+[ Upstream commit 85821c906cf3563a00a3d98fa380a2581a7a5ff1 ]
+
+As there's no point in adding a fixed-fudge value (originally 5
+seconds), honor the user settings only.  We also remove the
+driver's dead-callback get_rport_dev_loss_tmo function
+(qla2x00_get_rport_loss_tmo()).
+
+Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
+Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/qla2xxx/qla_attr.c |   20 ++------------------
+ drivers/scsi/qla2xxx/qla_os.c   |    2 +-
+ 2 files changed, 3 insertions(+), 19 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_attr.c
++++ b/drivers/scsi/qla2xxx/qla_attr.c
+@@ -947,26 +947,12 @@ qla2x00_get_starget_port_id(struct scsi_
+ }
+ static void
+-qla2x00_get_rport_loss_tmo(struct fc_rport *rport)
+-{
+-      struct Scsi_Host *host = rport_to_shost(rport);
+-      scsi_qla_host_t *ha = shost_priv(host);
+-
+-      rport->dev_loss_tmo = ha->port_down_retry_count + 5;
+-}
+-
+-static void
+ qla2x00_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout)
+ {
+-      struct Scsi_Host *host = rport_to_shost(rport);
+-      scsi_qla_host_t *ha = shost_priv(host);
+-
+       if (timeout)
+-              ha->port_down_retry_count = timeout;
++              rport->dev_loss_tmo = timeout;
+       else
+-              ha->port_down_retry_count = 1;
+-
+-      rport->dev_loss_tmo = ha->port_down_retry_count + 5;
++              rport->dev_loss_tmo = 1;
+ }
+ static void
+@@ -1249,7 +1235,6 @@ struct fc_function_template qla2xxx_tran
+       .get_starget_port_id  = qla2x00_get_starget_port_id,
+       .show_starget_port_id = 1,
+-      .get_rport_dev_loss_tmo = qla2x00_get_rport_loss_tmo,
+       .set_rport_dev_loss_tmo = qla2x00_set_rport_loss_tmo,
+       .show_rport_dev_loss_tmo = 1,
+@@ -1294,7 +1279,6 @@ struct fc_function_template qla2xxx_tran
+       .get_starget_port_id  = qla2x00_get_starget_port_id,
+       .show_starget_port_id = 1,
+-      .get_rport_dev_loss_tmo = qla2x00_get_rport_loss_tmo,
+       .set_rport_dev_loss_tmo = qla2x00_set_rport_loss_tmo,
+       .show_rport_dev_loss_tmo = 1,
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -1194,7 +1194,7 @@ qla2xxx_slave_configure(struct scsi_devi
+       else
+               scsi_deactivate_tcq(sdev, ha->max_q_depth);
+-      rport->dev_loss_tmo = ha->port_down_retry_count + 5;
++      rport->dev_loss_tmo = ha->port_down_retry_count;
+       return 0;
+ }
+
+-- 
+
similarity index 100%
rename from queue-2.6.25/series
rename to review-2.6.25/series