]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start of 2.6.22.2 review cycle
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 7 Aug 2007 20:50:52 +0000 (13:50 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 7 Aug 2007 20:50:52 +0000 (13:50 -0700)
86 files changed:
review-2.6.22/aacraid-fix-security-hole.patch [moved from queue-2.6.22/aacraid-fix-security-hole.patch with 100% similarity]
review-2.6.22/acpi-cpufreq-proper-readmodifywrite-of-perf_ctl-msr.patch [moved from queue-2.6.22/acpi-cpufreq-proper-readmodifywrite-of-perf_ctl-msr.patch with 100% similarity]
review-2.6.22/acpi-dock-fix-opps-after-dock-driver-fails-to-initialize.patch [moved from queue-2.6.22/acpi-dock-fix-opps-after-dock-driver-fails-to-initialize.patch with 100% similarity]
review-2.6.22/add-a-pci-id-for-santa-rosa-s-pata-controller.patch [moved from queue-2.6.22/add-a-pci-id-for-santa-rosa-s-pata-controller.patch with 100% similarity]
review-2.6.22/cfq-iosched-fix-async-queue-behaviour.patch [moved from queue-2.6.22/cfq-iosched-fix-async-queue-behaviour.patch with 100% similarity]
review-2.6.22/cpu-online-file-permission.patch [moved from queue-2.6.22/cpu-online-file-permission.patch with 100% similarity]
review-2.6.22/cr_backlight_probe-allocates-too-little-storage-for-struct-cr_panel.patch [moved from queue-2.6.22/cr_backlight_probe-allocates-too-little-storage-for-struct-cr_panel.patch with 100% similarity]
review-2.6.22/destroy_workqueue-can-livelock.patch [moved from queue-2.6.22/destroy_workqueue-can-livelock.patch with 100% similarity]
review-2.6.22/dm-disable-barriers.patch [moved from queue-2.6.22/dm-disable-barriers.patch with 100% similarity]
review-2.6.22/dm-io-fix-panic-on-large-request-2.patch [moved from queue-2.6.22/dm-io-fix-panic-on-large-request-2.patch with 100% similarity]
review-2.6.22/dm-io-fix-panic-on-large-request.patch [moved from queue-2.6.22/dm-io-fix-panic-on-large-request.patch with 100% similarity]
review-2.6.22/dm-raid1-fix-status.patch [moved from queue-2.6.22/dm-raid1-fix-status.patch with 100% similarity]
review-2.6.22/dm-snapshot-permit-invalid-activation.patch [moved from queue-2.6.22/dm-snapshot-permit-invalid-activation.patch with 100% similarity]
review-2.6.22/do-not-limit-locked-memory-when-rlimit_memlock-is-rlim_infinity.patch [moved from queue-2.6.22/do-not-limit-locked-memory-when-rlimit_memlock-is-rlim_infinity.patch with 100% similarity]
review-2.6.22/drivers-video-macmodes.c-mac_find_mode-mustn-t-be-__devinit.patch [moved from queue-2.6.22/drivers-video-macmodes.c-mac_find_mode-mustn-t-be-__devinit.patch with 100% similarity]
review-2.6.22/drm-i915-fix-i965-secured-batchbuffer-usage.patch [moved from queue-2.6.22/drm-i915-fix-i965-secured-batchbuffer-usage.patch with 100% similarity]
review-2.6.22/ecryptfs-ecryptfs_setattr-bugfix.patch [moved from queue-2.6.22/ecryptfs-ecryptfs_setattr-bugfix.patch with 100% similarity]
review-2.6.22/ext4_ext_put_in_cache-uses-__u32-to-receive-physical-block-number.patch [moved from queue-2.6.22/ext4_ext_put_in_cache-uses-__u32-to-receive-physical-block-number.patch with 100% similarity]
review-2.6.22/firewire-fix-memory-leak-of-fw_request-instances.patch [moved from queue-2.6.22/firewire-fix-memory-leak-of-fw_request-instances.patch with 100% similarity]
review-2.6.22/firewire-fw-sbp2-set-correct-maximum-payload.patch [moved from queue-2.6.22/firewire-fw-sbp2-set-correct-maximum-payload.patch with 100% similarity]
review-2.6.22/fix-deadlocks-in-sparc-serial-console.patch [moved from queue-2.6.22/fix-deadlocks-in-sparc-serial-console.patch with 100% similarity]
review-2.6.22/fix-error-queue-socket-lookup-in-ipv6.patch [moved from queue-2.6.22/fix-error-queue-socket-lookup-in-ipv6.patch with 100% similarity]
review-2.6.22/fix-ipcomp-crashes.patch [moved from queue-2.6.22/fix-ipcomp-crashes.patch with 100% similarity]
review-2.6.22/fix-ipv6-link-down-handling.patch [moved from queue-2.6.22/fix-ipv6-link-down-handling.patch with 100% similarity]
review-2.6.22/fix-ipv6-tunnel-endianness-bug.patch [moved from queue-2.6.22/fix-ipv6-tunnel-endianness-bug.patch with 100% similarity]
review-2.6.22/fix-leak-on-proc-lockdep_stats.patch [moved from queue-2.6.22/fix-leak-on-proc-lockdep_stats.patch with 100% similarity]
review-2.6.22/fix-leaks-on-proc-sched-sched_debug-timer_list-timer_stats.patch [moved from queue-2.6.22/fix-leaks-on-proc-sched-sched_debug-timer_list-timer_stats.patch with 100% similarity]
review-2.6.22/fix-reported-task-file-values-in-sense-data.patch [moved from queue-2.6.22/fix-reported-task-file-values-in-sense-data.patch with 100% similarity]
review-2.6.22/fix-rfkill-irq-flags.patch [moved from queue-2.6.22/fix-rfkill-irq-flags.patch with 100% similarity]
review-2.6.22/fix-sparc32-memset.patch [moved from queue-2.6.22/fix-sparc32-memset.patch with 100% similarity]
review-2.6.22/fix-sparc32-udelay-rounding-errors.patch [moved from queue-2.6.22/fix-sparc32-udelay-rounding-errors.patch with 100% similarity]
review-2.6.22/fix-tc-deadlock.patch [moved from queue-2.6.22/fix-tc-deadlock.patch with 100% similarity]
review-2.6.22/fix-tcp-ipv6-md5-bug.patch [moved from queue-2.6.22/fix-tcp-ipv6-md5-bug.patch with 100% similarity]
review-2.6.22/fix-user-struct-leakage-with-locked-ipc-shem-segment.patch [moved from queue-2.6.22/fix-user-struct-leakage-with-locked-ipc-shem-segment.patch with 100% similarity]
review-2.6.22/forcedeth-bug-fix-cicada-phy.patch [moved from queue-2.6.22/forcedeth-bug-fix-cicada-phy.patch with 100% similarity]
review-2.6.22/forcedeth-bug-fix-realtek-phy.patch [moved from queue-2.6.22/forcedeth-bug-fix-realtek-phy.patch with 100% similarity]
review-2.6.22/forcedeth-bug-fix-vitesse-phy.patch [moved from queue-2.6.22/forcedeth-bug-fix-vitesse-phy.patch with 100% similarity]
review-2.6.22/fs-9p-conv.c-error-path-fix.patch [moved from queue-2.6.22/fs-9p-conv.c-error-path-fix.patch with 100% similarity]
review-2.6.22/futex-pass-nr_wake2-to-futex_wake_op.patch [moved from queue-2.6.22/futex-pass-nr_wake2-to-futex_wake_op.patch with 100% similarity]
review-2.6.22/fw-ohci-fix-scheduling-while-atomic.patch [moved from queue-2.6.22/fw-ohci-fix-scheduling-while-atomic.patch with 100% similarity]
review-2.6.22/gen-estimator-deadlock-fix.patch [moved from queue-2.6.22/gen-estimator-deadlock-fix.patch with 100% similarity]
review-2.6.22/gen-estimator-timer-unload-race.patch [moved from queue-2.6.22/gen-estimator-timer-unload-race.patch with 100% similarity]
review-2.6.22/hangup-tty-before-releasing-rfcomm_dev.patch [moved from queue-2.6.22/hangup-tty-before-releasing-rfcomm_dev.patch with 100% similarity]
review-2.6.22/hugetlb-fix-race-in-alloc_fresh_huge_page.patch [moved from queue-2.6.22/hugetlb-fix-race-in-alloc_fresh_huge_page.patch with 100% similarity]
review-2.6.22/i386-hpet-check-if-the-counter-works.patch [moved from queue-2.6.22/i386-hpet-check-if-the-counter-works.patch with 100% similarity]
review-2.6.22/ieee1394-revert-sbp2-enforce-32bit-dma-mapping.patch [moved from queue-2.6.22/ieee1394-revert-sbp2-enforce-32bit-dma-mapping.patch with 100% similarity]
review-2.6.22/include-serial_reg.h-with-userspace-headers.patch [moved from queue-2.6.22/include-serial_reg.h-with-userspace-headers.patch with 100% similarity]
review-2.6.22/input-lifebook-fix-an-oops-on-panasonic-cf-18.patch [moved from queue-2.6.22/input-lifebook-fix-an-oops-on-panasonic-cf-18.patch with 100% similarity]
review-2.6.22/jbd-commit-fix-transaction-dropping.patch [moved from queue-2.6.22/jbd-commit-fix-transaction-dropping.patch with 100% similarity]
review-2.6.22/jbd2-commit-fix-transaction-dropping.patch [moved from queue-2.6.22/jbd2-commit-fix-transaction-dropping.patch with 100% similarity]
review-2.6.22/keep-rfcomm_dev-on-the-list-until-it-is-freed.patch [moved from queue-2.6.22/keep-rfcomm_dev-on-the-list-until-it-is-freed.patch with 100% similarity]
review-2.6.22/kvm-svm-reliably-detect-if-svm-was-disabled-by-bios.patch [moved from queue-2.6.22/kvm-svm-reliably-detect-if-svm-was-disabled-by-bios.patch with 100% similarity]
review-2.6.22/libata-add-fujitsu-mhv2080bh-to-ncq-blacklist.patch [moved from queue-2.6.22/libata-add-fujitsu-mhv2080bh-to-ncq-blacklist.patch with 100% similarity]
review-2.6.22/make-timerfd-return-a-u64-and-fix-the-__put_user.patch [moved from queue-2.6.22/make-timerfd-return-a-u64-and-fix-the-__put_user.patch with 100% similarity]
review-2.6.22/mbox [new file with mode: 0644]
review-2.6.22/md-handle-writes-to-broken-raid10-arrays-gracefully.patch [moved from queue-2.6.22/md-handle-writes-to-broken-raid10-arrays-gracefully.patch with 100% similarity]
review-2.6.22/md-raid10-fix-use-after-free-of-bio.patch [moved from queue-2.6.22/md-raid10-fix-use-after-free-of-bio.patch with 100% similarity]
review-2.6.22/missing-header-include-in-ipt_iprange.h.patch [moved from queue-2.6.22/missing-header-include-in-ipt_iprange.h.patch with 100% similarity]
review-2.6.22/netfilter-fix-logging-regression.patch [moved from queue-2.6.22/netfilter-fix-logging-regression.patch with 100% similarity]
review-2.6.22/netpoll-leak.patch [moved from queue-2.6.22/netpoll-leak.patch with 100% similarity]
review-2.6.22/nf_conntrack-don-t-track-locally-generated-special-icmp-error.patch [moved from queue-2.6.22/nf_conntrack-don-t-track-locally-generated-special-icmp-error.patch with 100% similarity]
review-2.6.22/nfsd-fix-possible-oops-on-re-insertion-of-rpcsec_gss-modules.patch [moved from queue-2.6.22/nfsd-fix-possible-oops-on-re-insertion-of-rpcsec_gss-modules.patch with 100% similarity]
review-2.6.22/nfsd-fix-possible-read-ahead-cache-and-export-table-corruption.patch [moved from queue-2.6.22/nfsd-fix-possible-read-ahead-cache-and-export-table-corruption.patch with 100% similarity]
review-2.6.22/pcmcia-give-socket-time-to-power-down.patch [moved from queue-2.6.22/pcmcia-give-socket-time-to-power-down.patch with 100% similarity]
review-2.6.22/proc-net-anycast6-unbalanced-inet6_dev-refcnt.patch [moved from queue-2.6.22/proc-net-anycast6-unbalanced-inet6_dev-refcnt.patch with 100% similarity]
review-2.6.22/readahead-min_ra_pages-max_ra_pages-macros.patch [moved from queue-2.6.22/readahead-min_ra_pages-max_ra_pages-macros.patch with 100% similarity]
review-2.6.22/sctp-scope_id-handling-fix.patch [moved from queue-2.6.22/sctp-scope_id-handling-fix.patch with 100% similarity]
review-2.6.22/series [moved from queue-2.6.22/series with 100% similarity]
review-2.6.22/softmac-fix-essid-problem.patch [moved from queue-2.6.22/softmac-fix-essid-problem.patch with 100% similarity]
review-2.6.22/sony-laptop-fix-bug-in-event-handling.patch [moved from queue-2.6.22/sony-laptop-fix-bug-in-event-handling.patch with 100% similarity]
review-2.6.22/sparc64-bootup-assembler-bug.patch [moved from queue-2.6.22/sparc64-bootup-assembler-bug.patch with 100% similarity]
review-2.6.22/splice-fix-double-page-unlock.patch [moved from queue-2.6.22/splice-fix-double-page-unlock.patch with 100% similarity]
review-2.6.22/sx-switch-subven-and-subid-values.patch [moved from queue-2.6.22/sx-switch-subven-and-subid-values.patch with 100% similarity]
review-2.6.22/sysfs-release-mutex-when-kmalloc-failed-in-sysfs_open_file.patch [moved from queue-2.6.22/sysfs-release-mutex-when-kmalloc-failed-in-sysfs_open_file.patch with 100% similarity]
review-2.6.22/tcp-frto-retransmit-bug-fix.patch [moved from queue-2.6.22/tcp-frto-retransmit-bug-fix.patch with 100% similarity]
review-2.6.22/uml-exports-for-hostfs.patch [moved from queue-2.6.22/uml-exports-for-hostfs.patch with 100% similarity]
review-2.6.22/uml-limit-request-size-on-cowed-devices.patch [moved from queue-2.6.22/uml-limit-request-size-on-cowed-devices.patch with 100% similarity]
review-2.6.22/usb-cdc-acm-fix-sysfs-attribute-registration-bug.patch [moved from queue-2.6.22/usb-cdc-acm-fix-sysfs-attribute-registration-bug.patch with 100% similarity]
review-2.6.22/usb-fix-for-ftdi_sio-quirk-handling.patch [moved from queue-2.6.22/usb-fix-for-ftdi_sio-quirk-handling.patch with 100% similarity]
review-2.6.22/usb-fix-warning-caused-by-autosuspend-counter-going-negative.patch [moved from queue-2.6.22/usb-fix-warning-caused-by-autosuspend-counter-going-negative.patch with 100% similarity]
review-2.6.22/usb-serial-fix-edgeport-regression-on-non-epic-devices.patch [moved from queue-2.6.22/usb-serial-fix-edgeport-regression-on-non-epic-devices.patch with 100% similarity]
review-2.6.22/v4l-add-check-for-valid-control-id-to-v4l2_ctrl_next.patch [moved from queue-2.6.22/v4l-add-check-for-valid-control-id-to-v4l2_ctrl_next.patch with 100% similarity]
review-2.6.22/v4l-ivtv-add-locking-to-ensure-stream-setup-is-atomic.patch [moved from queue-2.6.22/v4l-ivtv-add-locking-to-ensure-stream-setup-is-atomic.patch with 100% similarity]
review-2.6.22/v4l-ivtv-fix-broken-vbi-output-support.patch [moved from queue-2.6.22/v4l-ivtv-fix-broken-vbi-output-support.patch with 100% similarity]
review-2.6.22/v4l-ivtv-fix-dma-timeout-when-capturing-vbi-another-stream.patch [moved from queue-2.6.22/v4l-ivtv-fix-dma-timeout-when-capturing-vbi-another-stream.patch with 100% similarity]
review-2.6.22/v4l-wm8775-wm8739-fix-memory-leak-when-unloading-module.patch [moved from queue-2.6.22/v4l-wm8775-wm8739-fix-memory-leak-when-unloading-module.patch with 100% similarity]

diff --git a/review-2.6.22/mbox b/review-2.6.22/mbox
new file mode 100644 (file)
index 0000000..74fead2
--- /dev/null
@@ -0,0 +1,7210 @@
+From gregkh@mini.kroah.org Tue Aug  7 13:41:16 2007
+Message-Id: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [2.6.22.2 review 00/84] 2.6.22.2 -stable review
+Status: RO
+Content-Length: 1133
+Lines: 25
+
+So sorry for the delay in getting the .22.y release out, my appologies.
+I think I've gotten all the patches that people have sent us, _and_ are
+already in Linus's tree.  If you have sent us stuff that I have missed,
+please resend.  If you have sent us patches that are not in Linus's tree
+yet, please be sure to notify us when they do go into his tree in order
+for us to be able to add them to the next review cycle.
+
+This is the start of the stable review cycle for the 2.6.22.2 release.
+There are 84 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 August 9, 2007 19:00:00 UTC.  Anything
+received after that time might be too late.
+
+thanks,
+
+greg k-h
+
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:16 2007
+Message-Id: <20070807204116.647274682@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40:35 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Greg KH <greg@kroah.com>
+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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oliver Neukum <oliver@neukum.name>,
+ "A. Kalten" <akalten@comcast.net>,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [2.6.22.2 review 01/84] USB: cdc-acm: fix sysfs attribute registration bug
+Content-Disposition: inline; filename=usb-cdc-acm-fix-sysfs-attribute-registration-bug.patch
+Status: RO
+Content-Length: 1678
+Lines: 48
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+This patch (as950) fixes a bug in the cdc-acm driver.  It doesn't keep
+track of which interface (control or data) the sysfs attributes get
+registered for, and as a result, during disconnect it will sometimes
+attempt to remove the attributes from the wrong interface.  The
+left-over attributes can cause a crash later on, particularly if the driver
+module has been unloaded.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: Oliver Neukum <oliver@neukum.name>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-acm.c |   12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -919,6 +919,10 @@ skip_normal_probe:
+                       return -EINVAL;
+               }
+       }
++
++      /* Accept probe requests only for the control interface */
++      if (intf != control_interface)
++              return -ENODEV;
+       
+       if (usb_interface_claimed(data_interface)) { /* valid in this context */
+               dev_dbg(&intf->dev,"The data interface isn't available");
+@@ -1107,10 +1111,12 @@ static void acm_disconnect(struct usb_in
+               return;
+       }
+       if (acm->country_codes){
+-              device_remove_file(&intf->dev, &dev_attr_wCountryCodes);
+-              device_remove_file(&intf->dev, &dev_attr_iCountryCodeRelDate);
++              device_remove_file(&acm->control->dev,
++                              &dev_attr_wCountryCodes);
++              device_remove_file(&acm->control->dev,
++                              &dev_attr_iCountryCodeRelDate);
+       }
+-      device_remove_file(&intf->dev, &dev_attr_bmCapabilities);
++      device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities);
+       acm->dev = NULL;
+       usb_set_intfdata(acm->control, NULL);
+       usb_set_intfdata(acm->data, NULL);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:16 2007
+Message-Id: <20070807204116.770758864@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ =?ISO-8859-15?q?Ilpo=20J=E4rvinen?= <ilpo.jarvinen@helsinki.fi>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 02/84] TCP FRTO retransmit bug fix
+Content-Disposition: inline; filename=tcp-frto-retransmit-bug-fix.patch
+Status: RO
+Content-Length: 986
+Lines: 30
+
+From: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
+
+[TCP]: Verify the presence of RETRANS bit when leaving FRTO
+
+For yet unknown reason, something cleared SACKED_RETRANS bit
+underneath FRTO.
+
+Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/tcp_input.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/net/ipv4/tcp_input.c
++++ b/net/ipv4/tcp_input.c
+@@ -1398,7 +1398,9 @@ static void tcp_enter_frto_loss(struct s
+                * waiting for the first ACK and did not get it)...
+                */
+               if ((tp->frto_counter == 1) && !(flag&FLAG_DATA_ACKED)) {
+-                      tp->retrans_out += tcp_skb_pcount(skb);
++                      /* For some reason this R-bit might get cleared? */
++                      if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS)
++                              tp->retrans_out += tcp_skb_pcount(skb);
+                       /* ...enter this if branch just for the first segment */
+                       flag |= FLAG_DATA_ACKED;
+               } else {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204116.926975679@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Patrick McHardy <kaber@trash.net>,
+ Ranko Zivojnovic <ranko@spidernet.net>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 03/84] Fix TC deadlock.
+Content-Disposition: inline; filename=fix-tc-deadlock.patch
+Status: RO
+Content-Length: 1652
+Lines: 61
+
+
+From: Patrick McHardy <kaber@trash.net>
+
+[NET_SCHED]: Revert "avoid transmit softirq on watchdog wakeup" optimization
+
+As noticed by Ranko Zivojnovic <ranko@spidernet.net>, calling qdisc_run
+from the timer handler can result in deadlock:
+
+> CPU#0
+>
+> qdisc_watchdog() fires and gets dev->queue_lock
+> qdisc_run()...qdisc_restart()...
+> -> releases dev->queue_lock and enters dev_hard_start_xmit()
+>
+> CPU#1
+>
+> tc del qdisc dev ...
+> qdisc_graft()...dev_graft_qdisc()...dev_deactivate()...
+> -> grabs dev->queue_lock ...
+>
+> qdisc_reset()...{cbq,hfsc,htb,netem,tbf}_reset()...qdisc_watchdog_cancel()...
+> -> hrtimer_cancel() - waiting for the qdisc_watchdog() to exit, while still
+>                      holding dev->queue_lock
+>
+> CPU#0
+>
+> dev_hard_start_xmit() returns ...
+> -> wants to get dev->queue_lock(!)
+>
+> DEADLOCK!
+
+The entire optimization is a bit questionable IMO, it moves potentially
+large parts of NET_TX_SOFTIRQ work to TIMER_SOFTIRQ/HRTIMER_SOFTIRQ,
+which kind of defeats the separation of them.
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Acked-by: Ranko Zivojnovic <ranko@spidernet.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sched/sch_api.c |    6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+--- a/net/sched/sch_api.c
++++ b/net/sched/sch_api.c
+@@ -290,11 +290,7 @@ static enum hrtimer_restart qdisc_watchd
+       wd->qdisc->flags &= ~TCQ_F_THROTTLED;
+       smp_wmb();
+-      if (spin_trylock(&dev->queue_lock)) {
+-              qdisc_run(dev);
+-              spin_unlock(&dev->queue_lock);
+-      } else
+-              netif_schedule(dev);
++      netif_schedule(dev);
+       return HRTIMER_NORESTART;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.057008413@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Patrick McHardy <kaber@trash.net>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 04/84] Fix IPCOMP crashes.
+Content-Disposition: inline; filename=fix-ipcomp-crashes.patch
+Status: RO
+Content-Length: 1160
+Lines: 43
+
+
+From: Patrick McHardy <kaber@trash.net>
+
+[XFRM]: Fix crash introduced by struct dst_entry reordering
+
+XFRM expects xfrm_dst->u.next to be same pointer as dst->next, which
+was broken by the dst_entry reordering in commit 1e19e02c~, causing
+an oops in xfrm_bundle_ok when walking the bundle upwards.
+
+Kill xfrm_dst->u.next and change the only user to use dst->next instead.
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/net/xfrm.h     |    1 -
+ net/xfrm/xfrm_policy.c |    2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+--- a/include/net/xfrm.h
++++ b/include/net/xfrm.h
+@@ -577,7 +577,6 @@ static inline int xfrm_sec_ctx_match(str
+ struct xfrm_dst
+ {
+       union {
+-              struct xfrm_dst         *next;
+               struct dst_entry        dst;
+               struct rtable           rt;
+               struct rt6_info         rt6;
+--- a/net/xfrm/xfrm_policy.c
++++ b/net/xfrm/xfrm_policy.c
+@@ -2141,7 +2141,7 @@ int xfrm_bundle_ok(struct xfrm_policy *p
+               if (last == first)
+                       break;
+-              last = last->u.next;
++              last = (struct xfrm_dst *)last->u.dst.next;
+               last->child_mtu_cached = mtu;
+       }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.199974255@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 05/84] Fix deadlocks in sparc serial console.
+Content-Disposition: inline; filename=fix-deadlocks-in-sparc-serial-console.patch
+Status: RO
+Content-Length: 4905
+Lines: 187
+
+
+From: David S. Miller <davem@davemloft.net>
+
+Subject: [2.6.22.2 review 05/84] [PATCH] [SERIAL]: Fix console write locking in sparc drivers.
+
+Mirror the logic in 8250 for proper console write locking
+when SYSRQ is triggered or an OOPS is in progress.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/sunhv.c    |   30 ++++++++++++++++++++++++++----
+ drivers/serial/sunsab.c   |   19 ++++++++++++++-----
+ drivers/serial/sunsu.c    |   14 ++++++++++++++
+ drivers/serial/sunzilog.c |   17 ++++++++++++++---
+ 4 files changed, 68 insertions(+), 12 deletions(-)
+
+--- a/drivers/serial/sunhv.c
++++ b/drivers/serial/sunhv.c
+@@ -440,8 +440,16 @@ static void sunhv_console_write_paged(st
+ {
+       struct uart_port *port = sunhv_port;
+       unsigned long flags;
++      int locked = 1;
++
++      local_irq_save(flags);
++      if (port->sysrq) {
++              locked = 0;
++      } else if (oops_in_progress) {
++              locked = spin_trylock(&port->lock);
++      } else
++              spin_lock(&port->lock);
+-      spin_lock_irqsave(&port->lock, flags);
+       while (n > 0) {
+               unsigned long ra = __pa(con_write_page);
+               unsigned long page_bytes;
+@@ -469,7 +477,10 @@ static void sunhv_console_write_paged(st
+                       ra += written;
+               }
+       }
+-      spin_unlock_irqrestore(&port->lock, flags);
++
++      if (locked)
++              spin_unlock(&port->lock);
++      local_irq_restore(flags);
+ }
+ static inline void sunhv_console_putchar(struct uart_port *port, char c)
+@@ -488,7 +499,15 @@ static void sunhv_console_write_bychar(s
+ {
+       struct uart_port *port = sunhv_port;
+       unsigned long flags;
+-      int i;
++      int i, locked = 1;
++
++      local_irq_save(flags);
++      if (port->sysrq) {
++              locked = 0;
++      } else if (oops_in_progress) {
++              locked = spin_trylock(&port->lock);
++      } else
++              spin_lock(&port->lock);
+       spin_lock_irqsave(&port->lock, flags);
+       for (i = 0; i < n; i++) {
+@@ -496,7 +515,10 @@ static void sunhv_console_write_bychar(s
+                       sunhv_console_putchar(port, '\r');
+               sunhv_console_putchar(port, *s++);
+       }
+-      spin_unlock_irqrestore(&port->lock, flags);
++
++      if (locked)
++              spin_unlock(&port->lock);
++      local_irq_restore(flags);
+ }
+ static struct console sunhv_console = {
+--- a/drivers/serial/sunsab.c
++++ b/drivers/serial/sunsab.c
+@@ -860,22 +860,31 @@ static int num_channels;
+ static void sunsab_console_putchar(struct uart_port *port, int c)
+ {
+       struct uart_sunsab_port *up = (struct uart_sunsab_port *)port;
+-      unsigned long flags;
+-
+-      spin_lock_irqsave(&up->port.lock, flags);
+       sunsab_tec_wait(up);
+       writeb(c, &up->regs->w.tic);
+-
+-      spin_unlock_irqrestore(&up->port.lock, flags);
+ }
+ static void sunsab_console_write(struct console *con, const char *s, unsigned n)
+ {
+       struct uart_sunsab_port *up = &sunsab_ports[con->index];
++      unsigned long flags;
++      int locked = 1;
++
++      local_irq_save(flags);
++      if (up->port.sysrq) {
++              locked = 0;
++      } else if (oops_in_progress) {
++              locked = spin_trylock(&up->port.lock);
++      } else
++              spin_lock(&up->port.lock);
+       uart_console_write(&up->port, s, n, sunsab_console_putchar);
+       sunsab_tec_wait(up);
++
++      if (locked)
++              spin_unlock(&up->port.lock);
++      local_irq_restore(flags);
+ }
+ static int sunsab_console_setup(struct console *con, char *options)
+--- a/drivers/serial/sunsu.c
++++ b/drivers/serial/sunsu.c
+@@ -1288,7 +1288,17 @@ static void sunsu_console_write(struct c
+                               unsigned int count)
+ {
+       struct uart_sunsu_port *up = &sunsu_ports[co->index];
++      unsigned long flags;
+       unsigned int ier;
++      int locked = 1;
++
++      local_irq_save(flags);
++      if (up->port.sysrq) {
++              locked = 0;
++      } else if (oops_in_progress) {
++              locked = spin_trylock(&up->port.lock);
++      } else
++              spin_lock(&up->port.lock);
+       /*
+        *      First save the UER then disable the interrupts
+@@ -1304,6 +1314,10 @@ static void sunsu_console_write(struct c
+        */
+       wait_for_xmitr(up);
+       serial_out(up, UART_IER, ier);
++
++      if (locked)
++              spin_unlock(&up->port.lock);
++      local_irq_restore(flags);
+ }
+ /*
+--- a/drivers/serial/sunzilog.c
++++ b/drivers/serial/sunzilog.c
+@@ -9,7 +9,7 @@
+  * C. Dost, Pete Zaitcev, Ted Ts'o and Alex Buell for their
+  * work there.
+  *
+- *  Copyright (C) 2002, 2006 David S. Miller (davem@davemloft.net)
++ * Copyright (C) 2002, 2006, 2007 David S. Miller (davem@davemloft.net)
+  */
+ #include <linux/module.h>
+@@ -1151,11 +1151,22 @@ sunzilog_console_write(struct console *c
+ {
+       struct uart_sunzilog_port *up = &sunzilog_port_table[con->index];
+       unsigned long flags;
++      int locked = 1;
++
++      local_irq_save(flags);
++      if (up->port.sysrq) {
++              locked = 0;
++      } else if (oops_in_progress) {
++              locked = spin_trylock(&up->port.lock);
++      } else
++              spin_lock(&up->port.lock);
+-      spin_lock_irqsave(&up->port.lock, flags);
+       uart_console_write(&up->port, s, count, sunzilog_putchar);
+       udelay(2);
+-      spin_unlock_irqrestore(&up->port.lock, flags);
++
++      if (locked)
++              spin_unlock(&up->port.lock);
++      local_irq_restore(flags);
+ }
+ static int __init sunzilog_console_setup(struct console *con, char *options)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.340376635@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ linux-ide@vger.kernel.org,
+ Jeff Garzik <jeff@garzik.org>,
+ Christian Lamparter <chunkeey@web.de>
+Subject: [2.6.22.2 review 06/84] Add a PCI ID for santa rosas PATA controller.
+Content-Disposition: inline; filename=add-a-pci-id-for-santa-rosa-s-pata-controller.patch
+Status: RO
+Content-Length: 963
+Lines: 28
+
+
+From: Christian Lamparter <chunkeey@web.de>
+
+This is commit c1e6f28cc5de37dcd113b9668a185c0b9334ba8a which is
+merged during 23-rc1 window.  Considering the popularity of these
+chips, I think including it in -stable release would be good idea.
+
+Signed-off-by: Christian Lamparter <chunkeey@web.de>
+Signed-off-by: Jeff Garzik <jeff@garzik.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ata_piix.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/ata/ata_piix.c
++++ b/drivers/ata/ata_piix.c
+@@ -200,6 +200,8 @@ static const struct pci_device_id piix_p
+       /* ICH7/7-R (i945, i975) UDMA 100*/
+       { 0x8086, 0x27DF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_133 },
+       { 0x8086, 0x269E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_100 },
++      /* ICH8 Mobile PATA Controller */
++      { 0x8086, 0x2850, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_100 },
+       /* NOTE: The following PCI ids must be kept in sync with the
+        * list in drivers/pci/quirks.c.
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.490954771@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 07/84] Missing header include in ipt_iprange.h
+Content-Disposition: inline; filename=missing-header-include-in-ipt_iprange.h.patch
+Status: RO
+Content-Length: 817
+Lines: 29
+
+From: Adrian Bunk <bunk@stusta.de>
+
+[NETFILTER]: ipt_iprange.h must #include <linux/types.h>
+
+ipt_iprange.h must #include <linux/types.h> since it uses __be32.
+
+This patch fixes kernel Bugzilla #7604.
+
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/netfilter_ipv4/ipt_iprange.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/linux/netfilter_ipv4/ipt_iprange.h
++++ b/include/linux/netfilter_ipv4/ipt_iprange.h
+@@ -1,6 +1,8 @@
+ #ifndef _IPT_IPRANGE_H
+ #define _IPT_IPRANGE_H
++#include <linux/types.h>
++
+ #define IPRANGE_SRC           0x01    /* Match source IP address */
+ #define IPRANGE_DST           0x02    /* Match destination IP address */
+ #define IPRANGE_SRC_INV               0x10    /* Negate the condition */
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.624886757@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Vlad Yasevich <vladislav.yasevich@hp.com>
+Subject: [2.6.22.2 review 08/84] SCTP scope_id handling fix
+Content-Disposition: inline; filename=sctp-scope_id-handling-fix.patch
+Status: RO
+Content-Length: 827
+Lines: 31
+
+From: Vlad Yasevich <vladislav.yasevich@hp.com>
+
+SCTP: Add scope_id validation for link-local binds
+
+SCTP currently permits users to bind to link-local addresses,
+but doesn't verify that the scope id specified at bind matches
+the interface that the address is configured on.  It was report
+that this can hang a system.
+
+Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sctp/ipv6.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/net/sctp/ipv6.c
++++ b/net/sctp/ipv6.c
+@@ -875,6 +875,10 @@ static int sctp_inet6_send_verify(struct
+                       dev = dev_get_by_index(addr->v6.sin6_scope_id);
+                       if (!dev)
+                               return 0;
++                      if (!ipv6_chk_addr(&addr->v6.sin6_addr, dev, 0)) {
++                              dev_put(dev);
++                              return 0;
++                      }
+                       dev_put(dev);
+               }
+               af = opt->pf->af;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:17 2007
+Message-Id: <20070807204117.768216981@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Ingo Molnar <mingo@elte.hu>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 09/84] Fix rfkill IRQ flags.
+Content-Disposition: inline; filename=fix-rfkill-irq-flags.patch
+Status: RO
+Content-Length: 1206
+Lines: 46
+
+From: Ingo Molnar <mingo@elte.hu>
+
+[RFKILL]: fix net/rfkill/rfkill-input.c bug on 64-bit systems
+
+Subject: [2.6.22.2 review 09/84] [patch] net/input: fix net/rfkill/rfkill-input.c bug on 64-bit systems
+
+this recent commit:
+
+ commit cf4328cd949c2086091c62c5685f1580fe9b55e4
+ Author: Ivo van Doorn <IvDoorn@gmail.com>
+ Date:   Mon May 7 00:34:20 2007 -0700
+
+     [NET]: rfkill: add support for input key to control wireless radio
+
+added this 64-bit bug:
+
+        ....
+       unsigned int flags;
+
+       spin_lock_irqsave(&task->lock, flags);
+        ....
+
+irq 'flags' must be unsigned long, not unsigned int. The -rt tree has
+strict checks about this on 64-bit so this triggered a build failure.
+
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/rfkill/rfkill-input.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/rfkill/rfkill-input.c
++++ b/net/rfkill/rfkill-input.c
+@@ -55,7 +55,7 @@ static void rfkill_task_handler(struct w
+ static void rfkill_schedule_toggle(struct rfkill_task *task)
+ {
+-      unsigned int flags;
++      unsigned long flags;
+       spin_lock_irqsave(&task->lock, flags);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204117.910107136@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Patrick McHardy <kaber@trash.net>,
+ Jarek Poplawski <jarkao2@o2.pl>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 10/84] gen estimator timer unload race
+Content-Disposition: inline; filename=gen-estimator-timer-unload-race.patch
+Status: RO
+Content-Length: 952
+Lines: 33
+
+From: Patrick McHardy <kaber@trash.net>
+
+[NET]: Fix gen_estimator timer removal race
+
+As noticed by Jarek Poplawski <jarkao2@o2.pl>, the timer removal in
+gen_kill_estimator races with the timer function rearming the timer.
+
+Check whether the timer list is empty before rearming the timer
+in the timer function to fix this.
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Acked-by: Jarek Poplawski <jarkao2@o2.pl>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/core/gen_estimator.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/net/core/gen_estimator.c
++++ b/net/core/gen_estimator.c
+@@ -128,7 +128,8 @@ static void est_timer(unsigned long arg)
+               spin_unlock(e->stats_lock);
+       }
+-      mod_timer(&elist[idx].timer, jiffies + ((HZ<<idx)/4));
++      if (elist[idx].list != NULL)
++              mod_timer(&elist[idx].timer, jiffies + ((HZ<<idx)/4));
+       read_unlock(&est_lock);
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.058514831@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Ranko Zivojnovic <ranko@spidernet.net>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 11/84] gen estimator deadlock fix
+Content-Disposition: inline; filename=gen-estimator-deadlock-fix.patch
+Status: RO
+Content-Length: 5850
+Lines: 212
+
+From: Ranko Zivojnovic <ranko@spidernet.net>
+
+[NET]: gen_estimator deadlock fix
+
+-Fixes ABBA deadlock noted by Patrick McHardy <kaber@trash.net>:
+
+> There is at least one ABBA deadlock, est_timer() does:
+> read_lock(&est_lock)
+> spin_lock(e->stats_lock) (which is dev->queue_lock)
+>
+> and qdisc_destroy calls htb_destroy under dev->queue_lock, which
+> calls htb_destroy_class, then gen_kill_estimator and this
+> write_locks est_lock.
+
+To fix the ABBA deadlock the rate estimators are now kept on an rcu list.
+
+-The est_lock changes the use from protecting the list to protecting
+the update to the 'bstat' pointer in order to avoid NULL dereferencing.
+
+-The 'interval' member of the gen_estimator structure removed as it is
+not needed.
+
+Signed-off-by: Ranko Zivojnovic <ranko@spidernet.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/core/gen_estimator.c |   81 ++++++++++++++++++++++++++++-------------------
+ 1 file changed, 49 insertions(+), 32 deletions(-)
+
+--- a/net/core/gen_estimator.c
++++ b/net/core/gen_estimator.c
+@@ -79,27 +79,27 @@
+ struct gen_estimator
+ {
+-      struct gen_estimator    *next;
++      struct list_head        list;
+       struct gnet_stats_basic *bstats;
+       struct gnet_stats_rate_est      *rate_est;
+       spinlock_t              *stats_lock;
+-      unsigned                interval;
+       int                     ewma_log;
+       u64                     last_bytes;
+       u32                     last_packets;
+       u32                     avpps;
+       u32                     avbps;
++      struct rcu_head         e_rcu;
+ };
+ struct gen_estimator_head
+ {
+       struct timer_list       timer;
+-      struct gen_estimator    *list;
++      struct list_head        list;
+ };
+ static struct gen_estimator_head elist[EST_MAX_INTERVAL+1];
+-/* Estimator array lock */
++/* Protects against NULL dereference */
+ static DEFINE_RWLOCK(est_lock);
+ static void est_timer(unsigned long arg)
+@@ -107,13 +107,17 @@ static void est_timer(unsigned long arg)
+       int idx = (int)arg;
+       struct gen_estimator *e;
+-      read_lock(&est_lock);
+-      for (e = elist[idx].list; e; e = e->next) {
++      rcu_read_lock();
++      list_for_each_entry_rcu(e, &elist[idx].list, list) {
+               u64 nbytes;
+               u32 npackets;
+               u32 rate;
+               spin_lock(e->stats_lock);
++              read_lock(&est_lock);
++              if (e->bstats == NULL)
++                      goto skip;
++
+               nbytes = e->bstats->bytes;
+               npackets = e->bstats->packets;
+               rate = (nbytes - e->last_bytes)<<(7 - idx);
+@@ -125,12 +129,14 @@ static void est_timer(unsigned long arg)
+               e->last_packets = npackets;
+               e->avpps += ((long)rate - (long)e->avpps) >> e->ewma_log;
+               e->rate_est->pps = (e->avpps+0x1FF)>>10;
++skip:
++              read_unlock(&est_lock);
+               spin_unlock(e->stats_lock);
+       }
+-      if (elist[idx].list != NULL)
++      if (!list_empty(&elist[idx].list))
+               mod_timer(&elist[idx].timer, jiffies + ((HZ<<idx)/4));
+-      read_unlock(&est_lock);
++      rcu_read_unlock();
+ }
+ /**
+@@ -147,12 +153,17 @@ static void est_timer(unsigned long arg)
+  * &rate_est with the statistics lock grabed during this period.
+  *
+  * Returns 0 on success or a negative error code.
++ *
++ * NOTE: Called under rtnl_mutex
+  */
+ int gen_new_estimator(struct gnet_stats_basic *bstats,
+-      struct gnet_stats_rate_est *rate_est, spinlock_t *stats_lock, struct rtattr *opt)
++                    struct gnet_stats_rate_est *rate_est,
++                    spinlock_t *stats_lock,
++                    struct rtattr *opt)
+ {
+       struct gen_estimator *est;
+       struct gnet_estimator *parm = RTA_DATA(opt);
++      int idx;
+       if (RTA_PAYLOAD(opt) < sizeof(*parm))
+               return -EINVAL;
+@@ -164,7 +175,7 @@ int gen_new_estimator(struct gnet_stats_
+       if (est == NULL)
+               return -ENOBUFS;
+-      est->interval = parm->interval + 2;
++      idx = parm->interval + 2;
+       est->bstats = bstats;
+       est->rate_est = rate_est;
+       est->stats_lock = stats_lock;
+@@ -174,20 +185,25 @@ int gen_new_estimator(struct gnet_stats_
+       est->last_packets = bstats->packets;
+       est->avpps = rate_est->pps<<10;
+-      est->next = elist[est->interval].list;
+-      if (est->next == NULL) {
+-              init_timer(&elist[est->interval].timer);
+-              elist[est->interval].timer.data = est->interval;
+-              elist[est->interval].timer.expires = jiffies + ((HZ<<est->interval)/4);
+-              elist[est->interval].timer.function = est_timer;
+-              add_timer(&elist[est->interval].timer);
++      if (!elist[idx].timer.function) {
++              INIT_LIST_HEAD(&elist[idx].list);
++              setup_timer(&elist[idx].timer, est_timer, idx);
+       }
+-      write_lock_bh(&est_lock);
+-      elist[est->interval].list = est;
+-      write_unlock_bh(&est_lock);
++
++      if (list_empty(&elist[idx].list))
++              mod_timer(&elist[idx].timer, jiffies + ((HZ<<idx)/4));
++
++      list_add_rcu(&est->list, &elist[idx].list);
+       return 0;
+ }
++static void __gen_kill_estimator(struct rcu_head *head)
++{
++      struct gen_estimator *e = container_of(head,
++                                      struct gen_estimator, e_rcu);
++      kfree(e);
++}
++
+ /**
+  * gen_kill_estimator - remove a rate estimator
+  * @bstats: basic statistics
+@@ -195,31 +211,32 @@ int gen_new_estimator(struct gnet_stats_
+  *
+  * Removes the rate estimator specified by &bstats and &rate_est
+  * and deletes the timer.
++ *
++ * NOTE: Called under rtnl_mutex
+  */
+ void gen_kill_estimator(struct gnet_stats_basic *bstats,
+       struct gnet_stats_rate_est *rate_est)
+ {
+       int idx;
+-      struct gen_estimator *est, **pest;
++      struct gen_estimator *e, *n;
+       for (idx=0; idx <= EST_MAX_INTERVAL; idx++) {
+-              int killed = 0;
+-              pest = &elist[idx].list;
+-              while ((est=*pest) != NULL) {
+-                      if (est->rate_est != rate_est || est->bstats != bstats) {
+-                              pest = &est->next;
++
++              /* Skip non initialized indexes */
++              if (!elist[idx].timer.function)
++                      continue;
++
++              list_for_each_entry_safe(e, n, &elist[idx].list, list) {
++                      if (e->rate_est != rate_est || e->bstats != bstats)
+                               continue;
+-                      }
+                       write_lock_bh(&est_lock);
+-                      *pest = est->next;
++                      e->bstats = NULL;
+                       write_unlock_bh(&est_lock);
+-                      kfree(est);
+-                      killed++;
++                      list_del_rcu(&e->list);
++                      call_rcu(&e->e_rcu, __gen_kill_estimator);
+               }
+-              if (killed && elist[idx].list == NULL)
+-                      del_timer(&elist[idx].timer);
+       }
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.201325127@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 12/84] Fix error queue socket lookup in ipv6
+Content-Disposition: inline; filename=fix-error-queue-socket-lookup-in-ipv6.patch
+Status: RO
+Content-Length: 2521
+Lines: 66
+
+From: Dmitry Butskoy <dmitry@butskoy.name>
+
+[IPV6]: MSG_ERRQUEUE messages do not pass to connected raw sockets
+
+From: Dmitry Butskoy <dmitry@butskoy.name>
+
+Taken from http://bugzilla.kernel.org/show_bug.cgi?id=8747
+
+Problem Description:
+
+It is related to the possibility to obtain MSG_ERRQUEUE messages from the udp
+and raw sockets, both connected and unconnected.
+
+There is a little typo in net/ipv6/icmp.c code, which prevents such messages
+to be delivered to the errqueue of the correspond raw socket, when the socket
+is CONNECTED.  The typo is due to swap of local/remote addresses.
+
+Consider __raw_v6_lookup() function from net/ipv6/raw.c. When a raw socket is
+looked up usual way, it is something like:
+
+sk = __raw_v6_lookup(sk, nexthdr, daddr, saddr, IP6CB(skb)->iif);
+
+where "daddr" is a destination address of the incoming packet (IOW our local
+address), "saddr" is a source address of the incoming packet (the remote end).
+
+But when the raw socket is looked up for some icmp error report, in
+net/ipv6/icmp.c:icmpv6_notify() , daddr/saddr are obtained from the echoed
+fragment of the "bad" packet, i.e.  "daddr" is the original destination
+address of that packet, "saddr" is our local address.  Hence, for
+icmpv6_notify() must use "saddr, daddr" in its arguments, not "daddr, saddr"
+...
+
+Steps to reproduce:
+
+Create some raw socket, connect it to an address, and cause some error
+situation: f.e. set ttl=1 where the remote address is more than 1 hop to reach.
+Set IPV6_RECVERR .
+Then send something and wait for the error (f.e. poll() with POLLERR|POLLIN).
+You should receive "time exceeded" icmp message (because of "ttl=1"), but the
+socket do not receive it.
+
+If you do not connect your raw socket, you will receive MSG_ERRQUEUE
+successfully.  (The reason is that for unconnected socket there are no actual
+checks for local/remote addresses).
+
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/icmp.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/ipv6/icmp.c
++++ b/net/ipv6/icmp.c
+@@ -604,7 +604,7 @@ static void icmpv6_notify(struct sk_buff
+       read_lock(&raw_v6_lock);
+       if ((sk = sk_head(&raw_v6_htable[hash])) != NULL) {
+-              while((sk = __raw_v6_lookup(sk, nexthdr, daddr, saddr,
++              while ((sk = __raw_v6_lookup(sk, nexthdr, saddr, daddr,
+                                           IP6CB(skb)->iif))) {
+                       rawv6_err(sk, skb, NULL, type, code, inner_offset, info);
+                       sk = sk_next(sk);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.343225898@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Vlad Yasevich <vladislav.yasevich@hp.com>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 13/84] Fix ipv6 link down handling.
+Content-Disposition: inline; filename=fix-ipv6-link-down-handling.patch
+Status: RO
+Content-Length: 882
+Lines: 29
+
+From: Vlad Yasevich <vladislav.yasevich@hp.com>
+
+[IPV6]: Call inet6addr_chain notifiers on link down
+
+Currently if the link is brought down via ip link or ifconfig down,
+the inet6addr_chain notifiers are not called even though all
+the addresses are removed from the interface.  This caused SCTP
+to add duplicate addresses to it's list.
+
+Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/addrconf.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -2472,6 +2472,7 @@ static int addrconf_ifdown(struct net_de
+               write_unlock_bh(&idev->lock);
+               __ipv6_ifa_notify(RTM_DELADDR, ifa);
++              atomic_notifier_call_chain(&inet6addr_chain, NETDEV_DOWN, ifa);
+               in6_ifa_put(ifa);
+               write_lock_bh(&idev->lock);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.484735606@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Satyam Sharma <ssatyam@cse.iitk.ac.in>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 14/84] Netpoll leak
+Content-Disposition: inline; filename=netpoll-leak.patch
+Status: RO
+Content-Length: 1539
+Lines: 46
+
+From: Satyam Sharma <ssatyam@cse.iitk.ac.in>
+
+[NETPOLL]: Fix a leak-n-bug in netpoll_cleanup()
+
+93ec2c723e3f8a216dde2899aeb85c648672bc6b applied excessive duct tape to
+the netpoll beast's netpoll_cleanup(), thus substituting one leak with
+another, and opening up a little buglet :-)
+
+net_device->npinfo (netpoll_info) is a shared and refcounted object and
+cannot simply be set NULL the first time netpoll_cleanup() is called.
+Otherwise, further netpoll_cleanup()'s see np->dev->npinfo == NULL and
+become no-ops, thus leaking. And it's a bug too: the first call to
+netpoll_cleanup() would thus (annoyingly) "disable" other (still alive)
+netpolls too. Maybe nobody noticed this because netconsole (only user
+of netpoll) never supported multiple netpoll objects earlier.
+
+This is a trivial and obvious one-line fixlet.
+
+Signed-off-by: Satyam Sharma <ssatyam@cse.iitk.ac.in>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/core/netpoll.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/core/netpoll.c
++++ b/net/core/netpoll.c
+@@ -781,7 +781,6 @@ void netpoll_cleanup(struct netpoll *np)
+                               spin_unlock_irqrestore(&npinfo->rx_lock, flags);
+                       }
+-                      np->dev->npinfo = NULL;
+                       if (atomic_dec_and_test(&npinfo->refcnt)) {
+                               skb_queue_purge(&npinfo->arp_tx);
+                               skb_queue_purge(&npinfo->txq);
+@@ -794,6 +793,7 @@ void netpoll_cleanup(struct netpoll *np)
+                                       kfree_skb(skb);
+                               }
+                               kfree(npinfo);
++                              np->dev->npinfo = NULL;
+                       }
+               }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.626030401@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 15/84] Sparc64 bootup assembler bug
+Content-Disposition: inline; filename=sparc64-bootup-assembler-bug.patch
+Status: RO
+Content-Length: 732
+Lines: 29
+
+
+From: David S. Miller <davem@davemloft.net>
+
+[SPARC64]: Fix two year old bug in early bootup asm.
+
+We try to fetch the CIF entry pointer from %o4, but that
+can get clobbered by the early OBP calls.  It is saved
+in %l7 already, so actually this "mov %o4, %l7" can just
+be completely removed with no other changes.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/head.S |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/sparc64/kernel/head.S
++++ b/arch/sparc64/kernel/head.S
+@@ -458,7 +458,6 @@ tlb_fixup_done:
+       or      %g6, %lo(init_thread_union), %g6
+       ldx     [%g6 + TI_TASK], %g4
+       mov     %sp, %l6
+-      mov     %o4, %l7
+       wr      %g0, ASI_P, %asi
+       mov     1, %g1
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:18 2007
+Message-Id: <20070807204118.776478276@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Al Viro <viro@zeniv.linux.org.uk>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 16/84] Fix ipv6 tunnel endianness bug.
+Content-Disposition: inline; filename=fix-ipv6-tunnel-endianness-bug.patch
+Status: RO
+Content-Length: 812
+Lines: 28
+
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+[IPV6]: endianness bug in ip6_tunnel
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/ip6_tunnel.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/ipv6/ip6_tunnel.c
++++ b/net/ipv6/ip6_tunnel.c
+@@ -962,8 +962,8 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
+       dsfield = ipv4_get_dsfield(iph);
+       if ((t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS))
+-              fl.fl6_flowlabel |= ntohl(((__u32)iph->tos << IPV6_TCLASS_SHIFT)
+-                                        & IPV6_TCLASS_MASK);
++              fl.fl6_flowlabel |= htonl((__u32)iph->tos << IPV6_TCLASS_SHIFT)
++                                        & IPV6_TCLASS_MASK;
+       err = ip6_tnl_xmit2(skb, dev, dsfield, &fl, encap_limit, &mtu);
+       if (err != 0) {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204118.917245599@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Alexander Shmelev <ashmelev@task.sun.mcst.ru>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 17/84] Fix sparc32 memset()
+Content-Disposition: inline; filename=fix-sparc32-memset.patch
+Status: RO
+Content-Length: 1820
+Lines: 83
+
+From: Alexander Shmelev <ashmelev@task.sun.mcst.ru>
+
+[SPARC32]: Fix bug in sparc optimized memset.
+
+Sparc optimized memset (arch/sparc/lib/memset.S) does not fill last
+byte of the memory area, if area size is less than 8 bytes and start
+address is not word (4-bytes) aligned.
+
+Here is code chunk where bug located:
+/* %o0 - memory address, %o1 - size, %g3 - value */
+8:
+     add    %o0, 1, %o0
+    subcc    %o1, 1, %o1
+    bne,a    8b
+     stb %g3, [%o0 - 1]
+
+This code should write byte every loop iteration, but last time delay
+instruction stb is not executed because branch instruction sets
+"annul" bit.
+
+Patch replaces bne,a by bne instruction.
+
+Error can be reproduced by simple kernel module:
+
+--------------------
+#include <linux/module.h>
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <string.h>
+
+static void do_memset(void **p, int size)
+{
+        memset(p, 0x00, size);
+}
+
+static int __init memset_test_init(void)
+{
+    char fooc[8];
+    int *fooi;
+    memset(fooc, 0xba, sizeof(fooc));
+
+    do_memset((void**)(fooc + 3), 1);
+
+    fooi = (int*) fooc;
+    printk("%08X %08X\n", fooi[0], fooi[1]);
+
+    return -1;
+}
+
+static void __exit memset_test_cleanup(void)
+{
+    return;
+}
+
+module_init(memset_test_init);
+module_exit(memset_test_cleanup);
+
+MODULE_LICENSE("GPL");
+EXPORT_NO_SYMBOLS;
+------------------------
+
+Signed-off-by: Alexander Shmelev <ashmelev@task.sun.mcst.ru>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc/lib/memset.S |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/sparc/lib/memset.S
++++ b/arch/sparc/lib/memset.S
+@@ -162,7 +162,7 @@ __bzero:
+ 8:
+        add    %o0, 1, %o0
+       subcc   %o1, 1, %o1
+-      bne,a   8b
++      bne     8b
+        EX(stb %g3, [%o0 - 1], add %o1, 1)
+ 0:
+       retl
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.060624505@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ Mark Fortescue <mark@mtfhpc.demon.co.uk>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 18/84] Fix sparc32 udelay() rounding errors.
+Content-Disposition: inline; filename=fix-sparc32-udelay-rounding-errors.patch
+Status: RO
+Content-Length: 1950
+Lines: 59
+
+
+From: Mark Fortescue <mark@mtfhpc.demon.co.uk>
+
+[SPARC32]: Fix rounding errors in ndelay/udelay implementation.
+
+__ndelay and __udelay have not been delayung >= specified time.
+The problem with __ndelay has been tacked down to the rounding of the
+multiplier constant. By changing this, delays > app 18us are correctly
+calculated.
+The problem with __udelay has also been tracked down to rounding issues.
+Changing the multiplier constant (to match that used in sparc64) corrects
+for large delays and adding in a rounding constant corrects for trunctaion
+errors in the claculations.
+Many short delays will return without looping. This is not an error as there
+is the fixed delay of doing all the maths to calculate the loop count.
+
+Signed-off-by: Mark Fortescue <mark@mtfhpc.demon.co.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc/kernel/entry.S |   14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+--- a/arch/sparc/kernel/entry.S
++++ b/arch/sparc/kernel/entry.S
+@@ -1749,8 +1749,8 @@ fpload:
+ __ndelay:
+       save    %sp, -STACKFRAME_SZ, %sp
+       mov     %i0, %o0
+-      call    .umul
+-       mov    0x1ad, %o1              ! 2**32 / (1 000 000 000 / HZ)
++      call    .umul                   ! round multiplier up so large ns ok
++       mov    0x1ae, %o1              ! 2**32 / (1 000 000 000 / HZ)
+       call    .umul
+        mov    %i1, %o1                ! udelay_val
+       ba      delay_continue
+@@ -1760,11 +1760,17 @@ __ndelay:
+ __udelay:
+       save    %sp, -STACKFRAME_SZ, %sp
+       mov     %i0, %o0
+-      sethi   %hi(0x10c6), %o1
++      sethi   %hi(0x10c7), %o1        ! round multiplier up so large us ok
+       call    .umul
+-       or     %o1, %lo(0x10c6), %o1   ! 2**32 / 1 000 000
++       or     %o1, %lo(0x10c7), %o1   ! 2**32 / 1 000 000
+       call    .umul
+        mov    %i1, %o1                ! udelay_val
++      sethi   %hi(0x028f4b62), %l0    ! Add in rounding constant * 2**32,
++      or      %g0, %lo(0x028f4b62), %l0
++      addcc   %o0, %l0, %o0           ! 2**32 * 0.009 999
++      bcs,a   3f
++       add    %o1, 0x01, %o1
++3:
+       call    .umul
+        mov    HZ, %o0                 ! >>32 earlier for wider range
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.208963473@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ bunk@stusta.de,
+ YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [2.6.22.2 review 19/84] Fix TCP IPV6 MD5 bug.
+Content-Disposition: inline; filename=fix-tcp-ipv6-md5-bug.patch
+Status: RO
+Content-Length: 903
+Lines: 30
+
+From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+
+[TCPv6] MD5SIG: Ensure to reset allocation count to avoid panic.
+
+After clearing all passwords for IPv6 peers, we need to
+set allocation count to zero as well as we free the storage.
+Otherwise, we panic when a user trys to (re)add a password.
+
+Discovered and fixed by MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>.
+
+Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/tcp_ipv6.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/net/ipv6/tcp_ipv6.c
++++ b/net/ipv6/tcp_ipv6.c
+@@ -644,6 +644,7 @@ static int tcp_v6_md5_do_del(struct sock
+                       if (tp->md5sig_info->entries6 == 0) {
+                               kfree(tp->md5sig_info->keys6);
+                               tp->md5sig_info->keys6 = NULL;
++                              tp->md5sig_info->alloced6 = 0;
+                               tcp_free_md5sig_pool();
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.357044013@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Joerg Roedel <joerg.roedel@amd.com>,
+ Avi Kivity <avi@qumranet.com>
+Subject: [2.6.22.2 review 20/84] KVM: SVM: Reliably detect if SVM was disabled by BIOS
+Content-Disposition: inline; filename=kvm-svm-reliably-detect-if-svm-was-disabled-by-bios.patch
+Status: RO
+Content-Length: 1219
+Lines: 47
+
+From: Joerg Roedel <joerg.roedel@amd.com>
+
+This patch adds an implementation to the svm is_disabled function to
+detect reliably if the BIOS disabled the SVM feature in the CPU. This
+fixes the issues with kernel panics when loading the kvm-amd module on
+machines where SVM is available but disabled.
+
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Avi Kivity <avi@qumranet.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/kvm/svm.c |    6 ++++++
+ drivers/kvm/svm.h |    3 +++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/kvm/svm.c
++++ b/drivers/kvm/svm.c
+@@ -1727,6 +1727,12 @@ static void svm_inject_page_fault(struct
+ static int is_disabled(void)
+ {
++      u64 vm_cr;
++
++      rdmsrl(MSR_VM_CR, vm_cr);
++      if (vm_cr & (1 << SVM_VM_CR_SVM_DISABLE))
++              return 1;
++
+       return 0;
+ }
+--- a/drivers/kvm/svm.h
++++ b/drivers/kvm/svm.h
+@@ -175,8 +175,11 @@ struct __attribute__ ((__packed__)) vmcb
+ #define SVM_CPUID_FUNC 0x8000000a
+ #define MSR_EFER_SVME_MASK (1ULL << 12)
++#define MSR_VM_CR       0xc0010114
+ #define MSR_VM_HSAVE_PA 0xc0010117ULL
++#define SVM_VM_CR_SVM_DISABLE 4
++
+ #define SVM_SELECTOR_S_SHIFT 4
+ #define SVM_SELECTOR_DPL_SHIFT 5
+ #define SVM_SELECTOR_P_SHIFT 7
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.496999663@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40:55 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ linux-usb-devel@lists.sourceforge.net
+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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [2.6.22.2 review 21/84] USB: fix warning caused by autosuspend counter going negative
+Content-Disposition: inline; filename=usb-fix-warning-caused-by-autosuspend-counter-going-negative.patch
+Status: RO
+Content-Length: 1551
+Lines: 49
+
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+This patch (as937) fixes a minor bug in the autosuspend usage-counting
+code.  Each hub's usage counter keeps track of the number of
+unsuspended children.  However the current driver increments the
+counter after registering a new child, by which time the child may
+already have been suspended and caused the counter to go negative.
+The obvious solution is to increment the counter before registering
+the child.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hub.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -1388,6 +1388,10 @@ int usb_new_device(struct usb_device *ud
+       udev->dev.devt = MKDEV(USB_DEVICE_MAJOR,
+                       (((udev->bus->busnum-1) * 128) + (udev->devnum-1)));
++      /* Increment the parent's count of unsuspended children */
++      if (udev->parent)
++              usb_autoresume_device(udev->parent);
++
+       /* Register the device.  The device driver is responsible
+        * for adding the device files to sysfs and for configuring
+        * the device.
+@@ -1395,13 +1399,11 @@ int usb_new_device(struct usb_device *ud
+       err = device_add(&udev->dev);
+       if (err) {
+               dev_err(&udev->dev, "can't device_add, error %d\n", err);
++              if (udev->parent)
++                      usb_autosuspend_device(udev->parent);
+               goto fail;
+       }
+-      /* Increment the parent's count of unsuspended children */
+-      if (udev->parent)
+-              usb_autoresume_device(udev->parent);
+-
+ exit:
+       return err;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.640941173@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40:56 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ linux-usb-devel@lists.sourceforge.net
+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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Adam Kropelin <akropel1@rochester.rr.com>
+Subject: [2.6.22.2 review 22/84] usb-serial: Fix edgeport regression on non-EPiC devices
+Content-Disposition: inline; filename=usb-serial-fix-edgeport-regression-on-non-epic-devices.patch
+Status: RO
+Content-Length: 2012
+Lines: 57
+
+
+From: Adam Kropelin <akropel1@rochester.rr.com>
+
+Fix serious regression on non-EPiC edgeport usb-serial devices. Baud
+rate and MCR/LCR registers are not being written on these models due
+to apparent copy-n-paste errors introduced with EPiC support.
+
+Failure reported by Nick Pasich <Nick@NickAndBarb.net>.
+
+Signed-off-by: Adam Kropelin <akropel1@rochester.rr.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/io_edgeport.c |   19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+--- a/drivers/usb/serial/io_edgeport.c
++++ b/drivers/usb/serial/io_edgeport.c
+@@ -2366,9 +2366,8 @@ static int send_cmd_write_baud_rate (str
+       int status;
+       unsigned char number = edge_port->port->number - edge_port->port->serial->minor;
+-      if ((!edge_serial->is_epic) ||
+-          ((edge_serial->is_epic) &&
+-           (!edge_serial->epic_descriptor.Supports.IOSPSetBaudRate))) {
++      if (edge_serial->is_epic &&
++          !edge_serial->epic_descriptor.Supports.IOSPSetBaudRate) {
+               dbg("SendCmdWriteBaudRate - NOT Setting baud rate for port = %d, baud = %d",
+                   edge_port->port->number, baudRate);
+               return 0;
+@@ -2461,18 +2460,16 @@ static int send_cmd_write_uart_register 
+       dbg("%s - write to %s register 0x%02x", (regNum == MCR) ? "MCR" : "LCR", __FUNCTION__, regValue);
+-      if ((!edge_serial->is_epic) ||
+-          ((edge_serial->is_epic) &&
+-           (!edge_serial->epic_descriptor.Supports.IOSPWriteMCR) &&
+-           (regNum == MCR))) {
++      if (edge_serial->is_epic &&
++          !edge_serial->epic_descriptor.Supports.IOSPWriteMCR &&
++          regNum == MCR) {
+               dbg("SendCmdWriteUartReg - Not writing to MCR Register");
+               return 0;
+       }
+-      if ((!edge_serial->is_epic) ||
+-          ((edge_serial->is_epic) &&
+-           (!edge_serial->epic_descriptor.Supports.IOSPWriteLCR) &&
+-           (regNum == LCR))) {
++      if (edge_serial->is_epic &&
++          !edge_serial->epic_descriptor.Supports.IOSPWriteLCR &&
++          regNum == LCR) {
+               dbg ("SendCmdWriteUartReg - Not writing to LCR Register");
+               return 0;
+       }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:19 2007
+Message-Id: <20070807204119.791108480@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Petr Vandrovec <petr@vandrovec.name>,
+ Jeff Garzik <jeff@garzik.org>
+Subject: [2.6.22.2 review 23/84] Fix reported task file values in sense data
+Content-Disposition: inline; filename=fix-reported-task-file-values-in-sense-data.patch
+Status: RO
+Content-Length: 1375
+Lines: 44
+
+From: Petr Vandrovec <petr@vandrovec.name>
+
+ata_tf_read was setting HOB bit when lba48 command was submitted, but
+was not clearing it before reading "normal" data.  As it is only place
+which sets HOB bit in control register, and register reads should not
+be affected by other bits, let's just clear it when we are done with
+reading upper bytes so non-48bit commands do not have to touch ctl
+at all.
+
+pata_scc suffered from same problem...
+
+Signed-off-by: Petr Vandrovec <petr@vandrovec.name>
+Signed-off-by: Jeff Garzik <jeff@garzik.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-sff.c |    2 ++
+ drivers/ata/pata_scc.c   |    2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/ata/libata-sff.c
++++ b/drivers/ata/libata-sff.c
+@@ -211,6 +211,8 @@ void ata_tf_read(struct ata_port *ap, st
+               tf->hob_lbal = ioread8(ioaddr->lbal_addr);
+               tf->hob_lbam = ioread8(ioaddr->lbam_addr);
+               tf->hob_lbah = ioread8(ioaddr->lbah_addr);
++              iowrite8(tf->ctl, ioaddr->ctl_addr);
++              ap->last_ctl = tf->ctl;
+       }
+ }
+--- a/drivers/ata/pata_scc.c
++++ b/drivers/ata/pata_scc.c
+@@ -352,6 +352,8 @@ static void scc_tf_read (struct ata_port
+               tf->hob_lbal = in_be32(ioaddr->lbal_addr);
+               tf->hob_lbam = in_be32(ioaddr->lbam_addr);
+               tf->hob_lbah = in_be32(ioaddr->lbah_addr);
++              out_be32(ioaddr->ctl_addr, tf->ctl);
++              ap->last_ctl = tf->ctl;
+       }
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204119.962543738@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40:58 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Cox <alan@redhat.com>,
+ Mark Salyzyn <mark_salyzyn@adaptec.com>
+Subject: [2.6.22.2 review 24/84] aacraid: fix security hole
+Content-Disposition: inline; filename=aacraid-fix-security-hole.patch
+Status: RO
+Content-Length: 1212
+Lines: 38
+
+From: Alan Cox <alan@lxorguk.ukuu.org.uk>
+
+On the SCSI layer ioctl path there is no implicit permissions check for
+ioctls (and indeed other drivers implement unprivileged ioctls). aacraid
+however allows all sorts of very admin only things to be done so should
+check.
+
+Signed-off-by: Alan Cox <alan@redhat.com>
+Acked-by: Mark Salyzyn <mark_salyzyn@adaptec.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/aacraid/linit.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/scsi/aacraid/linit.c
++++ b/drivers/scsi/aacraid/linit.c
+@@ -597,6 +597,8 @@ static int aac_cfg_open(struct inode *in
+ static int aac_cfg_ioctl(struct inode *inode,  struct file *file,
+               unsigned int cmd, unsigned long arg)
+ {
++      if (!capable(CAP_SYS_ADMIN))
++              return -EPERM;
+       return aac_do_ioctl(file->private_data, cmd, (void __user *)arg);
+ }
+@@ -650,6 +652,8 @@ static int aac_compat_ioctl(struct scsi_
+ static long aac_compat_cfg_ioctl(struct file *file, unsigned cmd, unsigned long arg)
+ {
++      if (!capable(CAP_SYS_ADMIN))
++              return -EPERM;
+       return aac_compat_do_ioctl((struct aac_dev *)file->private_data, cmd, arg);
+ }
+ #endif
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.097068920@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:40:59 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ =?ISO-8859-15?q?Kristian=20H=F8gsberg?= <krh@redhat.com>,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [2.6.22.2 review 25/84] firewire: fw-sbp2: set correct maximum payload (fixes CardBus adapters)
+Content-Disposition: inline; filename=firewire-fw-sbp2-set-correct-maximum-payload.patch
+Status: RO
+Content-Length: 1815
+Lines: 54
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+As far as I know, all CardBus FireWire 400 adapters have a maximum
+payload of 1024 bytes which is less than the speed-dependent limit of
+2048 bytes.  Fw-sbp2 has to take the host adapter's limit into account.
+
+This apparently fixes Juju's incompatibility with my CardBus cards, a
+NEC based card and a VIA based card.
+
+Backport of commit 25659f7183376c6b37661da6141d5eaa21479061.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-sbp2.c        |    5 ++++-
+ drivers/firewire/fw-transaction.h |    2 +-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/firewire/fw-sbp2.c
++++ b/drivers/firewire/fw-sbp2.c
+@@ -985,6 +985,7 @@ static int sbp2_scsi_queuecommand(struct
+       struct fw_unit *unit = sd->unit;
+       struct fw_device *device = fw_device(unit->device.parent);
+       struct sbp2_command_orb *orb;
++      unsigned max_payload;
+       /*
+        * Bidirectional commands are not yet implemented, and unknown
+@@ -1023,8 +1024,10 @@ static int sbp2_scsi_queuecommand(struct
+        * specifies the max payload size as 2 ^ (max_payload + 2), so
+        * if we set this to max_speed + 7, we get the right value.
+        */
++      max_payload = device->node->max_speed + 7;
++      max_payload = min(max_payload, device->card->max_receive - 1);
+       orb->request.misc =
+-              COMMAND_ORB_MAX_PAYLOAD(device->node->max_speed + 7) |
++              COMMAND_ORB_MAX_PAYLOAD(max_payload) |
+               COMMAND_ORB_SPEED(device->node->max_speed) |
+               COMMAND_ORB_NOTIFY;
+--- a/drivers/firewire/fw-transaction.h
++++ b/drivers/firewire/fw-transaction.h
+@@ -228,7 +228,7 @@ struct fw_card {
+       unsigned long reset_jiffies;
+       unsigned long long guid;
+-      int max_receive;
++      unsigned max_receive;
+       int link_speed;
+       int config_rom_generation;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.236890677@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:00 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ davi@haxent.com.br,
+ mtk-manpages@gmx.net,
+ davidel@xmailserver.org
+Subject: [2.6.22.2 review 26/84] make timerfd return a u64 and fix the __put_user
+Content-Disposition: inline; filename=make-timerfd-return-a-u64-and-fix-the-__put_user.patch
+Status: RO
+Content-Length: 2971
+Lines: 82
+
+
+From: Davide Libenzi <davidel@xmailserver.org>
+
+Davi fixed a missing cast in the __put_user(), that was making timerfd
+return a single byte instead of the full value.
+
+Talking with Michael about the timerfd man page, we think it'd be better to
+use a u64 for the returned value, to align it with the eventfd
+implementation.
+
+This is an ABI change.  The timerfd code is new in 2.6.22 and if we merge this
+into 2.6.23 then we should also merge it into 2.6.22.x.  That will leave a few
+early 2.6.22 kernels out in the wild which might misbehave when a future
+timerfd-enabled glibc is run on them.
+
+mtk says:
+       The difference would be that read() will only return 4 bytes,
+       while the application will expect 8.  If the application is
+       checking the size of returned value, as it should, then it will
+       be able to detect the problem (it could even be sophisticated
+       enough to know that if this is a 4-byte return, then it is
+       running on an old 2.6.22 kernel).  If the application is not
+       checking the return from read(), then its 8-byte buffer will not
+       be filled -- the contents of the last 4 bytes will be undefined,
+       so the u64 value as a whole will be junk.
+
+       When I wrote up that description above, I forgot a crucial
+       detail.  The above description described the difference between
+       the new behavior implemented by the patch, and the current
+       (i.e., 2.6.22) *intended* behavior.  However, as I originally
+       remarked to Davide, the 2.6.22 read() behavior is broken: it
+       should return 4 bytes on a read(), but as originally
+       implemented, only the least significant byte contained valid
+       information.  (In other words, the top 3 bytes of overrun
+       information were simply being discarded.)
+
+       So the patch both fixes a bug in the originally intended
+       behavior, and changes the intended behavior (to return 8 bytes
+       from a read() instead of 4).
+
+
+Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
+Cc: Michael Kerrisk <mtk-manpages@gmx.net>
+Cc: Davi Arnaut <davi@haxent.com.br>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/timerfd.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/fs/timerfd.c
++++ b/fs/timerfd.c
+@@ -95,7 +95,7 @@ static ssize_t timerfd_read(struct file 
+ {
+       struct timerfd_ctx *ctx = file->private_data;
+       ssize_t res;
+-      u32 ticks = 0;
++      u64 ticks = 0;
+       DECLARE_WAITQUEUE(wait, current);
+       if (count < sizeof(ticks))
+@@ -130,7 +130,7 @@ static ssize_t timerfd_read(struct file 
+                        * callback to avoid DoS attacks specifying a very
+                        * short timer period.
+                        */
+-                      ticks = (u32)
++                      ticks = (u64)
+                               hrtimer_forward(&ctx->tmr,
+                                               hrtimer_cb_get_time(&ctx->tmr),
+                                               ctx->tintv);
+@@ -140,7 +140,7 @@ static ssize_t timerfd_read(struct file 
+       }
+       spin_unlock_irq(&ctx->wqh.lock);
+       if (ticks)
+-              res = put_user(ticks, buf) ? -EFAULT: sizeof(ticks);
++              res = put_user(ticks, (u64 __user *) buf) ? -EFAULT: sizeof(ticks);
+       return res;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.385690833@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>
+Subject: [2.6.22.2 review 27/84] V4L: Add check for valid control ID to v4l2_ctrl_next
+Content-Disposition: inline; filename=v4l-add-check-for-valid-control-id-to-v4l2_ctrl_next.patch
+Status: RO
+Content-Length: 1765
+Lines: 53
+
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+If v4l2_ctrl_next is called without the V4L2_CTRL_FLAG_NEXT_CTRL then it
+should check whether the passed control ID is valid and return 0 if it
+isn't. Otherwise a for-loop over the control IDs will never end.
+
+(cherry picked from commit a46c5fbc6912c4e34cb7ded314249b639dc244a6)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/v4l2-common.c |   19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+--- a/drivers/media/video/v4l2-common.c
++++ b/drivers/media/video/v4l2-common.c
+@@ -939,16 +939,25 @@ int v4l2_ctrl_query_menu(struct v4l2_que
+    When no more controls are available 0 is returned. */
+ u32 v4l2_ctrl_next(const u32 * const * ctrl_classes, u32 id)
+ {
+-      u32 ctrl_class;
++      u32 ctrl_class = V4L2_CTRL_ID2CLASS(id);
+       const u32 *pctrl;
+-      /* if no query is desired, then just return the control ID */
+-      if ((id & V4L2_CTRL_FLAG_NEXT_CTRL) == 0)
+-              return id;
+       if (ctrl_classes == NULL)
+               return 0;
++
++      /* if no query is desired, then check if the ID is part of ctrl_classes */
++      if ((id & V4L2_CTRL_FLAG_NEXT_CTRL) == 0) {
++              /* find class */
++              while (*ctrl_classes && V4L2_CTRL_ID2CLASS(**ctrl_classes) != ctrl_class)
++                      ctrl_classes++;
++              if (*ctrl_classes == NULL)
++                      return 0;
++              pctrl = *ctrl_classes;
++              /* find control ID */
++              while (*pctrl && *pctrl != id) pctrl++;
++              return *pctrl ? id : 0;
++      }
+       id &= V4L2_CTRL_ID_MASK;
+-      ctrl_class = V4L2_CTRL_ID2CLASS(id);
+       id++;   /* select next control */
+       /* find first class that matches (or is greater than) the class of
+          the ID */
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.543467780@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:02 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>
+Subject: [2.6.22.2 review 28/84] V4L: ivtv: fix broken VBI output support
+Content-Disposition: inline; filename=v4l-ivtv-fix-broken-vbi-output-support.patch
+Status: RO
+Content-Length: 2664
+Lines: 86
+
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+The old service_set_out setting was still tested, even though it no longer
+was ever set and was in fact obsolete. This meant that everything that was
+written to /dev/vbi16 was ignored. Removed the service_set_out variable
+altogether and now it works again.
+
+(cherry picked from commit 47fd3ba9fc62d23a985f4969719c3091438d21c5)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/ivtv/ivtv-driver.h |    1 -
+ drivers/media/video/ivtv/ivtv-vbi.c    |   31 +++++++++++--------------------
+ 2 files changed, 11 insertions(+), 21 deletions(-)
+
+--- a/drivers/media/video/ivtv/ivtv-driver.h
++++ b/drivers/media/video/ivtv/ivtv-driver.h
+@@ -650,7 +650,6 @@ struct vbi_info {
+       /* convenience pointer to sliced struct in vbi_in union */
+       struct v4l2_sliced_vbi_format *sliced_in;
+       u32 service_set_in;
+-      u32 service_set_out;
+       int insert_mpeg;
+       /* Buffer for the maximum of 2 * 18 * packet_size sliced VBI lines.
+--- a/drivers/media/video/ivtv/ivtv-vbi.c
++++ b/drivers/media/video/ivtv/ivtv-vbi.c
+@@ -219,31 +219,23 @@ ssize_t ivtv_write_vbi(struct ivtv *itv,
+       int found_cc = 0;
+       int cc_pos = itv->vbi.cc_pos;
+-      if (itv->vbi.service_set_out == 0)
+-              return -EPERM;
+-
+       while (count >= sizeof(struct v4l2_sliced_vbi_data)) {
+               switch (p->id) {
+               case V4L2_SLICED_CAPTION_525:
+-                      if (p->id == V4L2_SLICED_CAPTION_525 &&
+-                          p->line == 21 &&
+-                          (itv->vbi.service_set_out &
+-                              V4L2_SLICED_CAPTION_525) == 0) {
+-                              break;
+-                      }
+-                      found_cc = 1;
+-                      if (p->field) {
+-                              cc[2] = p->data[0];
+-                              cc[3] = p->data[1];
+-                      } else {
+-                              cc[0] = p->data[0];
+-                              cc[1] = p->data[1];
++                      if (p->line == 21) {
++                              found_cc = 1;
++                              if (p->field) {
++                                      cc[2] = p->data[0];
++                                      cc[3] = p->data[1];
++                              } else {
++                                      cc[0] = p->data[0];
++                                      cc[1] = p->data[1];
++                              }
+                       }
+                       break;
+               case V4L2_SLICED_VPS:
+-                      if (p->line == 16 && p->field == 0 &&
+-                          (itv->vbi.service_set_out & V4L2_SLICED_VPS)) {
++                      if (p->line == 16 && p->field == 0) {
+                               itv->vbi.vps[0] = p->data[2];
+                               itv->vbi.vps[1] = p->data[8];
+                               itv->vbi.vps[2] = p->data[9];
+@@ -255,8 +247,7 @@ ssize_t ivtv_write_vbi(struct ivtv *itv,
+                       break;
+               case V4L2_SLICED_WSS_625:
+-                      if (p->line == 23 && p->field == 0 &&
+-                          (itv->vbi.service_set_out & V4L2_SLICED_WSS_625)) {
++                      if (p->line == 23 && p->field == 0) {
+                               /* No lock needed for WSS */
+                               itv->vbi.wss = p->data[0] | (p->data[1] << 8);
+                               itv->vbi.wss_found = 1;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.674537438@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:03 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>
+Subject: [2.6.22.2 review 29/84] V4L: ivtv: fix DMA timeout when capturing VBI + another stream
+Content-Disposition: inline; filename=v4l-ivtv-fix-dma-timeout-when-capturing-vbi-another-stream.patch
+Status: RO
+Content-Length: 2026
+Lines: 53
+
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+The VBI DMA is handled in a special way and is marked with a bit.
+However, that bit was set at the wrong time and could be cleared
+by mistake if a PCM (or other) DMA request would arrive before the
+VBI DMA was completed. So on completion of the VBI DMA the driver
+no longer knew that that DMA transfer was for VBI data. And this
+in turn caused havoc with the card's DMA engine.
+
+(cherry picked from commit dd1e729d63f74a0b6290ca417bafd3fd8665db50)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/ivtv/ivtv-irq.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/video/ivtv/ivtv-irq.c
++++ b/drivers/media/video/ivtv/ivtv-irq.c
+@@ -403,6 +403,11 @@ static void ivtv_dma_enc_start(struct iv
+       /* Mark last buffer size for Interrupt flag */
+       s->SGarray[s->SG_length - 1].size |= cpu_to_le32(0x80000000);
++      if (s->type == IVTV_ENC_STREAM_TYPE_VBI)
++              set_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
++      else
++              clear_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
++
+       if (ivtv_use_pio(s)) {
+               for (i = 0; i < s->SG_length; i++) {
+                       s->PIOarray[i].src = le32_to_cpu(s->SGarray[i].src);
+@@ -597,7 +602,6 @@ static void ivtv_irq_enc_start_cap(struc
+                               data[0], data[1], data[2]);
+               return;
+       }
+-      clear_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
+       s = &itv->streams[ivtv_stream_map[data[0]]];
+       if (!stream_enc_dma_append(s, data)) {
+               set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags);
+@@ -634,7 +638,6 @@ static void ivtv_irq_enc_vbi_cap(struct 
+          then start a DMA request for just the VBI data. */
+       if (!stream_enc_dma_append(s, data) &&
+                       !test_bit(IVTV_F_S_STREAMING, &s_mpg->s_flags)) {
+-              set_bit(IVTV_F_I_ENC_VBI, &itv->i_flags);
+               set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags);
+       }
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:20 2007
+Message-Id: <20070807204120.848280243@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:04 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>
+Subject: [2.6.22.2 review 30/84] V4L: ivtv: Add locking to ensure stream setup is atomic
+Content-Disposition: inline; filename=v4l-ivtv-add-locking-to-ensure-stream-setup-is-atomic.patch
+Status: RO
+Content-Length: 4304
+Lines: 127
+
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+Starting an MPEG and VBI capture simultaneously caused errors in
+the VBI setup: this setup was done twice when it should be done
+only for the first stream that is opened.
+Added a mutex to prevent this from happening.
+
+(cherry picked from commit f885969196da6ae905162c0d1c5f0553de12cb40)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+
+---
+ drivers/media/video/ivtv/ivtv-driver.c  |    1 +
+ drivers/media/video/ivtv/ivtv-driver.h  |    1 +
+ drivers/media/video/ivtv/ivtv-streams.c |   30 +++++++++++++++++++-----------
+ 3 files changed, 21 insertions(+), 11 deletions(-)
+
+--- a/drivers/media/video/ivtv/ivtv-driver.c
++++ b/drivers/media/video/ivtv/ivtv-driver.c
+@@ -622,6 +622,7 @@ static int __devinit ivtv_init_struct1(s
+       itv->enc_mbox.max_mbox = 2; /* the encoder has 3 mailboxes (0-2) */
+       itv->dec_mbox.max_mbox = 1; /* the decoder has 2 mailboxes (0-1) */
++      mutex_init(&itv->serialize_lock);
+       mutex_init(&itv->i2c_bus_lock);
+       mutex_init(&itv->udma.lock);
+--- a/drivers/media/video/ivtv/ivtv-driver.h
++++ b/drivers/media/video/ivtv/ivtv-driver.h
+@@ -722,6 +722,7 @@ struct ivtv {
+       int search_pack_header;
+       spinlock_t dma_reg_lock; /* lock access to DMA engine registers */
++      struct mutex serialize_lock;  /* lock used to serialize starting streams */
+       /* User based DMA for OSD */
+       struct ivtv_user_dma udma;
+--- a/drivers/media/video/ivtv/ivtv-streams.c
++++ b/drivers/media/video/ivtv/ivtv-streams.c
+@@ -446,6 +446,9 @@ int ivtv_start_v4l2_encode_stream(struct
+       if (s->v4l2dev == NULL)
+               return -EINVAL;
++      /* Big serialization lock to ensure no two streams are started
++         simultaneously: that can give all sorts of weird results. */
++      mutex_lock(&itv->serialize_lock);
+       IVTV_DEBUG_INFO("Start encoder stream %s\n", s->name);
+       switch (s->type) {
+@@ -487,6 +490,7 @@ int ivtv_start_v4l2_encode_stream(struct
+                       0, sizeof(itv->vbi.sliced_mpeg_size));
+               break;
+       default:
++              mutex_unlock(&itv->serialize_lock);
+               return -EINVAL;
+       }
+       s->subtype = subtype;
+@@ -568,6 +572,7 @@ int ivtv_start_v4l2_encode_stream(struct
+       if (ivtv_vapi(itv, CX2341X_ENC_START_CAPTURE, 2, captype, subtype))
+       {
+               IVTV_DEBUG_WARN( "Error starting capture!\n");
++              mutex_unlock(&itv->serialize_lock);
+               return -EINVAL;
+       }
+@@ -583,6 +588,7 @@ int ivtv_start_v4l2_encode_stream(struct
+       /* you're live! sit back and await interrupts :) */
+       atomic_inc(&itv->capturing);
++      mutex_unlock(&itv->serialize_lock);
+       return 0;
+ }
+@@ -762,17 +768,6 @@ int ivtv_stop_v4l2_encode_stream(struct 
+       /* when: 0 =  end of GOP  1 = NOW!, type: 0 = mpeg, subtype: 3 = video+audio */
+       ivtv_vapi(itv, CX2341X_ENC_STOP_CAPTURE, 3, stopmode, cap_type, s->subtype);
+-      /* only run these if we're shutting down the last cap */
+-      if (atomic_read(&itv->capturing) - 1 == 0) {
+-              /* event notification (off) */
+-              if (test_and_clear_bit(IVTV_F_I_DIG_RST, &itv->i_flags)) {
+-                      /* type: 0 = refresh */
+-                      /* on/off: 0 = off, intr: 0x10000000, mbox_id: -1: none */
+-                      ivtv_vapi(itv, CX2341X_ENC_SET_EVENT_NOTIFICATION, 4, 0, 0, IVTV_IRQ_ENC_VIM_RST, -1);
+-                      ivtv_set_irq_mask(itv, IVTV_IRQ_ENC_VIM_RST);
+-              }
+-      }
+-
+       then = jiffies;
+       if (!test_bit(IVTV_F_S_PASSTHROUGH, &s->s_flags)) {
+@@ -840,17 +835,30 @@ int ivtv_stop_v4l2_encode_stream(struct 
+       /* Clear capture and no-read bits */
+       clear_bit(IVTV_F_S_STREAMING, &s->s_flags);
++      /* ensure these global cleanup actions are done only once */
++      mutex_lock(&itv->serialize_lock);
++
+       if (s->type == IVTV_ENC_STREAM_TYPE_VBI)
+               ivtv_set_irq_mask(itv, IVTV_IRQ_ENC_VBI_CAP);
+       if (atomic_read(&itv->capturing) > 0) {
++              mutex_unlock(&itv->serialize_lock);
+               return 0;
+       }
+       /* Set the following Interrupt mask bits for capture */
+       ivtv_set_irq_mask(itv, IVTV_IRQ_MASK_CAPTURE);
++      /* event notification (off) */
++      if (test_and_clear_bit(IVTV_F_I_DIG_RST, &itv->i_flags)) {
++              /* type: 0 = refresh */
++              /* on/off: 0 = off, intr: 0x10000000, mbox_id: -1: none */
++              ivtv_vapi(itv, CX2341X_ENC_SET_EVENT_NOTIFICATION, 4, 0, 0, IVTV_IRQ_ENC_VIM_RST, -1);
++              ivtv_set_irq_mask(itv, IVTV_IRQ_ENC_VIM_RST);
++      }
++
+       wake_up(&s->waitq);
++      mutex_unlock(&itv->serialize_lock);
+       return 0;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204120.993503204@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:05 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hans Verkuil <hverkuil@xs4all.nl>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>
+Subject: [2.6.22.2 review 31/84] V4L: wm8775/wm8739: Fix memory leak when unloading module
+Content-Disposition: inline; filename=v4l-wm8775-wm8739-fix-memory-leak-when-unloading-module.patch
+Status: RO
+Content-Length: 1231
+Lines: 52
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+State struct was never freed.
+
+(cherry picked from commit 1b2232ab879993fcf5b9391c3febf6ab5d78201e)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/wm8739.c |    2 ++
+ drivers/media/video/wm8775.c |    2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/media/video/wm8739.c
++++ b/drivers/media/video/wm8739.c
+@@ -321,12 +321,14 @@ static int wm8739_probe(struct i2c_adapt
+ static int wm8739_detach(struct i2c_client *client)
+ {
++      struct wm8739_state *state = i2c_get_clientdata(client);
+       int err;
+       err = i2c_detach_client(client);
+       if (err)
+               return err;
++      kfree(state);
+       kfree(client);
+       return 0;
+ }
+--- a/drivers/media/video/wm8775.c
++++ b/drivers/media/video/wm8775.c
+@@ -222,12 +222,14 @@ static int wm8775_probe(struct i2c_adapt
+ static int wm8775_detach(struct i2c_client *client)
+ {
++      struct wm8775_state *state = i2c_get_clientdata(client);
+       int err;
+       err = i2c_detach_client(client);
+       if (err) {
+               return err;
+       }
++      kfree(state);
+       kfree(client);
+       return 0;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204121.156750921@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:06 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dmitry Torokhov <dtor@mail.ru>
+Subject: [2.6.22.2 review 32/84] Input: lifebook - fix an oops on Panasonic CF-18
+Content-Disposition: inline; filename=input-lifebook-fix-an-oops-on-panasonic-cf-18.patch
+Status: RO
+Content-Length: 698
+Lines: 24
+
+From: Dmitry Torokhov <dtor@insightbb.com>
+
+Input: lifebook - fix an oops on Panasonic CF-18
+
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/mouse/lifebook.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/input/mouse/lifebook.c
++++ b/drivers/input/mouse/lifebook.c
+@@ -109,7 +109,7 @@ static psmouse_ret_t lifebook_process_by
+ {
+       struct lifebook_data *priv = psmouse->private;
+       struct input_dev *dev1 = psmouse->dev;
+-      struct input_dev *dev2 = priv->dev2;
++      struct input_dev *dev2 = priv ? priv->dev2 : NULL;
+       unsigned char *packet = psmouse->packet;
+       int relative_packet = packet[0] & 0x08;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204121.312080840@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:07 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jens Axboe <jens.axboe@oracle.com>
+Subject: [2.6.22.2 review 33/84] splice: fix double page unlock
+Content-Disposition: inline; filename=splice-fix-double-page-unlock.patch
+Status: RO
+Content-Length: 1024
+Lines: 41
+
+From: Jens Axboe <jens.axboe@oracle.com>
+
+If add_to_page_cache_lru() fails, the page will not be locked. But
+splice jumps to an error path that does a page release and unlock,
+causing a BUG() in unlock_page().
+
+Fix this by adding one more label that just releases the page. This bug
+was actually triggered on EL5 by gurudas pai <gurudas.pai@oracle.com>
+using fio.
+
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/splice.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -601,7 +601,7 @@ find_page:
+               ret = add_to_page_cache_lru(page, mapping, index,
+                                           GFP_KERNEL);
+               if (unlikely(ret))
+-                      goto out;
++                      goto out_release;
+       }
+       ret = mapping->a_ops->prepare_write(file, page, offset, offset+this_len);
+@@ -657,8 +657,9 @@ find_page:
+        */
+       mark_page_accessed(page);
+ out:
+-      page_cache_release(page);
+       unlock_page(page);
++out_release:
++      page_cache_release(page);
+ out_ret:
+       return ret;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204121.487070523@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:08 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dave Airlie <airlied@redhat.com>
+Subject: [2.6.22.2 review 34/84] drm/i915: Fix i965 secured batchbuffer usage (CVE-2007-3851)
+Content-Disposition: inline; filename=drm-i915-fix-i965-secured-batchbuffer-usage.patch
+Status: RO
+Content-Length: 2296
+Lines: 65
+
+From: Dave Airlie <airlied@redhat.com>
+
+This 965G and above chipsets moved the batch buffer non-secure bits to
+another place. This means that previous drm's allowed in-secure batchbuffers
+to be submitted to the hardware from non-privileged users who are logged
+into X and and have access to direct rendering.
+
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/drm/i915_dma.c |   14 +++++++++++---
+ drivers/char/drm/i915_drv.h |    1 +
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+--- a/drivers/char/drm/i915_dma.c
++++ b/drivers/char/drm/i915_dma.c
+@@ -184,6 +184,8 @@ static int i915_initialize(drm_device_t 
+        * private backbuffer/depthbuffer usage.
+        */
+       dev_priv->use_mi_batchbuffer_start = 0;
++      if (IS_I965G(dev)) /* 965 doesn't support older method */
++              dev_priv->use_mi_batchbuffer_start = 1;
+       /* Allow hardware batchbuffers unless told otherwise.
+        */
+@@ -517,8 +519,13 @@ static int i915_dispatch_batchbuffer(drm
+               if (dev_priv->use_mi_batchbuffer_start) {
+                       BEGIN_LP_RING(2);
+-                      OUT_RING(MI_BATCH_BUFFER_START | (2 << 6));
+-                      OUT_RING(batch->start | MI_BATCH_NON_SECURE);
++                      if (IS_I965G(dev)) {
++                              OUT_RING(MI_BATCH_BUFFER_START | (2 << 6) | MI_BATCH_NON_SECURE_I965);
++                              OUT_RING(batch->start);
++                      } else {
++                              OUT_RING(MI_BATCH_BUFFER_START | (2 << 6));
++                              OUT_RING(batch->start | MI_BATCH_NON_SECURE);
++                      }
+                       ADVANCE_LP_RING();
+               } else {
+                       BEGIN_LP_RING(4);
+@@ -735,7 +742,8 @@ static int i915_setparam(DRM_IOCTL_ARGS)
+       switch (param.param) {
+       case I915_SETPARAM_USE_MI_BATCHBUFFER_START:
+-              dev_priv->use_mi_batchbuffer_start = param.value;
++              if (!IS_I965G(dev))
++                      dev_priv->use_mi_batchbuffer_start = param.value;
+               break;
+       case I915_SETPARAM_TEX_LRU_LOG_GRANULARITY:
+               dev_priv->tex_lru_log_granularity = param.value;
+--- a/drivers/char/drm/i915_drv.h
++++ b/drivers/char/drm/i915_drv.h
+@@ -282,6 +282,7 @@ extern int i915_wait_ring(drm_device_t *
+ #define MI_BATCH_BUFFER_START         (0x31<<23)
+ #define MI_BATCH_BUFFER_END   (0xA<<23)
+ #define MI_BATCH_NON_SECURE   (1)
++#define MI_BATCH_NON_SECURE_I965 (1<<8)
+ #define MI_WAIT_FOR_EVENT       ((0x3<<23))
+ #define MI_WAIT_FOR_PLANE_A_FLIP      (1<<2)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204121.663257633@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:09 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ adobriyan@sw.ru
+Subject: [2.6.22.2 review 35/84] Fix leak on /proc/lockdep_stats
+Content-Disposition: inline; filename=fix-leak-on-proc-lockdep_stats.patch
+Status: RO
+Content-Length: 587
+Lines: 24
+
+
+From: Alexey Dobriyan <adobriyan@sw.ru>
+
+Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/lockdep_proc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/lockdep_proc.c
++++ b/kernel/lockdep_proc.c
+@@ -339,7 +339,7 @@ static const struct file_operations proc
+       .open           = lockdep_stats_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+-      .release        = seq_release,
++      .release        = single_release,
+ };
+ static int __init lockdep_proc_init(void)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:21 2007
+Message-Id: <20070807204121.837015874@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:10 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ drepper@redhat.com
+Subject: [2.6.22.2 review 36/84] CPU online file permission
+Content-Disposition: inline; filename=cpu-online-file-permission.patch
+Status: RO
+Content-Length: 1087
+Lines: 33
+
+
+From: Ulrich Drepper <drepper@redhat.com>
+
+Is there a reason why the "online" file in the subdirectories for the CPUs
+in /sys/devices/system isn't world-readable?  I cannot imagine it to be
+security relevant especially now that a getcpu() syscall can be used to
+determine what CPUa thread runs on.
+
+The file is useful to correctly implement the sysconf() function to return
+the number of online CPUs.  In the presence of hotplug we currently cannot
+provide this information.  The patch below should to it.
+
+Signed-off-by: Ulrich Drepper <drepper@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/cpu.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/cpu.c
++++ b/drivers/base/cpu.c
+@@ -53,7 +53,7 @@ static ssize_t store_online(struct sys_d
+               ret = count;
+       return ret;
+ }
+-static SYSDEV_ATTR(online, 0600, show_online, store_online);
++static SYSDEV_ATTR(online, 0644, show_online, store_online);
+ static void __devinit register_cpu_control(struct cpu *cpu)
+ {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:22 2007
+Message-Id: <20070807204122.005420686@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:11 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ xemul@openvz.org
+Subject: [2.6.22.2 review 37/84] Fix user struct leakage with locked IPC shem segment
+Content-Disposition: inline; filename=fix-user-struct-leakage-with-locked-ipc-shem-segment.patch
+Status: RO
+Content-Length: 1492
+Lines: 56
+
+
+From: Pavel Emelianov <xemul@openvz.org>
+
+When user locks an ipc shmem segmant with SHM_LOCK ctl and the segment is
+already locked the shmem_lock() function returns 0.  After this the
+subsequent code leaks the existing user struct:
+
+== ipc/shm.c: sys_shmctl() ==
+     ...
+     err = shmem_lock(shp->shm_file, 1, user);
+     if (!err) {
+          shp->shm_perm.mode |= SHM_LOCKED;
+          shp->mlock_user = user;
+     }
+     ...
+==
+
+Other results of this are:
+1. the new shp->mlock_user is not get-ed and will point to freed
+   memory when the task dies.
+2. the RLIMIT_MEMLOCK is screwed on both user structs.
+
+The exploit looks like this:
+
+==
+    id = shmget(...);
+    setresuid(uid, 0, 0);
+    shmctl(id, SHM_LOCK, NULL);
+    setresuid(uid + 1, 0, 0);
+    shmctl(id, SHM_LOCK, NULL);
+==
+
+My solution is to return 0 to the userspace and do not change the
+segment's user.
+
+Signed-off-by: Pavel Emelianov <xemul@openvz.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ ipc/shm.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/ipc/shm.c
++++ b/ipc/shm.c
+@@ -716,7 +716,7 @@ asmlinkage long sys_shmctl (int shmid, i
+                       struct user_struct * user = current->user;
+                       if (!is_file_hugepages(shp->shm_file)) {
+                               err = shmem_lock(shp->shm_file, 1, user);
+-                              if (!err) {
++                              if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){
+                                       shp->shm_perm.mode |= SHM_LOCKED;
+                                       shp->mlock_user = user;
+                               }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:22 2007
+Message-Id: <20070807204122.187367167@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:12 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ neilb@suse.de,
+ agr@powerkom-dd.de
+Subject: [2.6.22.2 review 38/84] md: handle writes to broken raid10 arrays gracefully
+Content-Disposition: inline; filename=md-handle-writes-to-broken-raid10-arrays-gracefully.patch
+Status: RO
+Content-Length: 962
+Lines: 34
+
+
+From: Arne Redlich <agr@powerkom-dd.de>
+
+When writing to a broken array, raid10 currently happily emits empty bio
+lists.  IOW, the master bio will never be completed, sending writers to
+UNINTERRUPTIBLE_SLEEP forever.
+
+Signed-off-by: Arne Redlich <agr@powerkom-dd.de>
+Acked-by: Neil Brown <neilb@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/raid10.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/md/raid10.c
++++ b/drivers/md/raid10.c
+@@ -917,6 +917,13 @@ static int make_request(request_queue_t 
+               bio_list_add(&bl, mbio);
+       }
++      if (unlikely(!atomic_read(&r10_bio->remaining))) {
++              /* the array is dead */
++              md_write_end(mddev);
++              raid_end_bio_io(r10_bio);
++              return 0;
++      }
++
+       bitmap_startwrite(mddev->bitmap, bio->bi_sector, r10_bio->sectors, 0);
+       spin_lock_irqsave(&conf->device_lock, flags);
+       bio_list_merge(&conf->pending_bio_list, &bl);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:22 2007
+Message-Id: <20070807204122.370980155@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:13 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ neilb@suse.de,
+ m.hampel@gmx.de
+Subject: [2.6.22.2 review 39/84] md: raid10: fix use-after-free of bio
+Content-Disposition: inline; filename=md-raid10-fix-use-after-free-of-bio.patch
+Status: RO
+Content-Length: 1233
+Lines: 39
+
+
+From: Maik Hampel <m.hampel@gmx.de>
+
+In case of read errors raid10d tries to print a nice error message,
+unfortunately using data from an already put bio.
+
+Signed-off-by: Maik Hampel <m.hampel@gmx.de>
+Acked-By: NeilBrown <neilb@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/md/raid10.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/raid10.c
++++ b/drivers/md/raid10.c
+@@ -1565,7 +1565,6 @@ static void raid10d(mddev_t *mddev)
+                       bio = r10_bio->devs[r10_bio->read_slot].bio;
+                       r10_bio->devs[r10_bio->read_slot].bio =
+                               mddev->ro ? IO_BLOCKED : NULL;
+-                      bio_put(bio);
+                       mirror = read_balance(conf, r10_bio);
+                       if (mirror == -1) {
+                               printk(KERN_ALERT "raid10: %s: unrecoverable I/O"
+@@ -1573,8 +1572,10 @@ static void raid10d(mddev_t *mddev)
+                                      bdevname(bio->bi_bdev,b),
+                                      (unsigned long long)r10_bio->sector);
+                               raid_end_bio_io(r10_bio);
++                              bio_put(bio);
+                       } else {
+                               const int do_sync = bio_sync(r10_bio->master_bio);
++                              bio_put(bio);
+                               rdev = conf->mirrors[mirror].rdev;
+                               if (printk_ratelimit())
+                                       printk(KERN_ERR "raid10: %s: redirecting sector %llu to"
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:22 2007
+Message-Id: <20070807204122.559571015@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:14 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ nils.neumann@rwth-aachen.de,
+ daniel.ritz-ml@swissonline.ch,
+ daniel.ritz@gmx.ch
+Subject: [2.6.22.2 review 40/84] pcmcia: give socket time to power down
+Content-Disposition: inline; filename=pcmcia-give-socket-time-to-power-down.patch
+Status: RO
+Content-Length: 838
+Lines: 29
+
+
+From: Daniel Ritz <daniel.ritz-ml@swissonline.ch>
+
+Give sockets up to 100ms of additional time to power down.  otherwise we
+might generate false warnings with KERN_ERR priority (like in bug #8262).
+
+Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
+Cc: Nils Neumann <nils.neumann@rwth-aachen.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pcmcia/cs.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/pcmcia/cs.c
++++ b/drivers/pcmcia/cs.c
+@@ -409,6 +409,9 @@ static void socket_shutdown(struct pcmci
+ #endif
+       s->functions = 0;
++      /* give socket some time to power down */
++      msleep(100);
++
+       s->ops->get_status(s, &status);
+       if (status & SS_POWERON) {
+               printk(KERN_ERR "PCMCIA: socket %p: *** DANGER *** unable to remove socket power\n", s);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:22 2007
+Message-Id: <20070807204122.719695043@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:15 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ adobriyan@sw.ru,
+ mingo@elte.hu
+Subject: [2.6.22.2 review 41/84] Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats}
+Content-Disposition: inline; filename=fix-leaks-on-proc-sched-sched_debug-timer_list-timer_stats.patch
+Status: RO
+Content-Length: 1056
+Lines: 40
+
+
+From: Alexey Dobriyan <adobriyan@sw.ru>
+
+On every open/close one struct seq_operations leaks.
+Kudos to /proc/slab_allocators.
+
+Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
+Acked-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/time/timer_list.c  |    2 +-
+ kernel/time/timer_stats.c |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/kernel/time/timer_list.c
++++ b/kernel/time/timer_list.c
+@@ -267,7 +267,7 @@ static struct file_operations timer_list
+       .open           = timer_list_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+-      .release        = seq_release,
++      .release        = single_release,
+ };
+ static int __init init_timer_list_procfs(void)
+--- a/kernel/time/timer_stats.c
++++ b/kernel/time/timer_stats.c
+@@ -391,7 +391,7 @@ static struct file_operations tstats_fop
+       .read           = seq_read,
+       .write          = tstats_write,
+       .llseek         = seq_lseek,
+-      .release        = seq_release,
++      .release        = single_release,
+ };
+ void __init init_timer_stats(void)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204122.868843377@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:16 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ schwab@suse.de,
+ mingo@elte.hu,
+ drepper@redhat.com
+Subject: [2.6.22.2 review 42/84] futex: pass nr_wake2 to futex_wake_op
+Content-Disposition: inline; filename=futex-pass-nr_wake2-to-futex_wake_op.patch
+Status: RO
+Content-Length: 1084
+Lines: 35
+
+
+From: Andreas Schwab <schwab@suse.de>
+
+The fourth argument of sys_futex is ignored when op == FUTEX_WAKE_OP,
+but futex_wake_op expects it as its nr_wake2 parameter.
+
+The only user of this operation in glibc is always passing 1, so this
+bug had no consequences so far.
+
+Signed-off-by: Andreas Schwab <schwab@suse.de>
+Cc: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Ulrich Drepper <drepper@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/futex.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -2061,8 +2061,10 @@ asmlinkage long sys_futex(u32 __user *ua
+       }
+       /*
+        * requeue parameter in 'utime' if cmd == FUTEX_REQUEUE.
++       * number of waiters to wake in 'utime' if cmd == FUTEX_WAKE_OP.
+        */
+-      if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE)
++      if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE ||
++          cmd == FUTEX_WAKE_OP)
+               val2 = (u32) (unsigned long) utime;
+       return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.037501029@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:17 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ linux-ext4@vger.kernel.org,
+ cmm@us.ibm.com,
+ yanzheng@21cn.com
+Subject: [2.6.22.2 review 43/84] "ext4_ext_put_in_cache" uses __u32 to receive physical block number
+Content-Disposition: inline; filename=ext4_ext_put_in_cache-uses-__u32-to-receive-physical-block-number.patch
+Status: RO
+Content-Length: 1509
+Lines: 44
+
+
+From: Mingming Cao <cmm@us.ibm.com>
+
+Yan Zheng wrote:
+
+> I think I found a bug in ext4/extents.c, "ext4_ext_put_in_cache" uses
+> "__u32" to receive physical block number.  "ext4_ext_put_in_cache" is
+> used in "ext4_ext_get_blocks", it sets ext4 inode's extent cache
+> according most recently tree lookup (higher 16 bits of saved physical
+> block number are always zero). when serving a mapping request,
+> "ext4_ext_get_blocks" first check whether the logical block is in
+> inode's extent cache. if the logical block is in the cache and the
+> cached region isn't a gap, "ext4_ext_get_blocks" gets physical block
+> number by using cached region's physical block number and offset in
+> the cached region.  as described above, "ext4_ext_get_blocks" may
+> return wrong result when there are physical block numbers bigger than
+> 0xffffffff.
+>
+
+You are right.  Thanks for reporting this!
+
+Signed-off-by: Mingming Cao <cmm@us.ibm.com>
+Cc: Yan Zheng <yanzheng@21cn.com>
+Cc: <linux-ext4@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ext4/extents.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/ext4/extents.c
++++ b/fs/ext4/extents.c
+@@ -1445,7 +1445,7 @@ int ext4_ext_walk_space(struct inode *in
+ static void
+ ext4_ext_put_in_cache(struct inode *inode, __u32 block,
+-                      __u32 len, __u32 start, int type)
++                      __u32 len, ext4_fsblk_t start, int type)
+ {
+       struct ext4_ext_cache *cex;
+       BUG_ON(len == 0);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.205365029@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:18 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ herton@mandriva.com.br,
+ gustavodn@mandriva.com.br,
+ dwmw2@infradead.org,
+ rmk@arm.linux.org.uk
+Subject: [2.6.22.2 review 44/84] Include serial_reg.h with userspace headers
+Content-Disposition: inline; filename=include-serial_reg.h-with-userspace-headers.patch
+Status: RO
+Content-Length: 1184
+Lines: 36
+
+
+From: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+
+As reported by Gustavo de Nardin <gustavodn@mandriva.com.br>, while trying to
+compile xosview (http://xosview.sourceforge.net/) with upstream kernel
+headers being used you get the following errors:
+serialmeter.cc:48:30: error: linux/serial_reg.h: No such file or directory
+serialmeter.cc: In member function 'virtual void
+SerialMeter::checkResources()':
+serialmeter.cc:71: error: 'UART_LSR' was not declared in this scope
+serialmeter.cc:71: error: 'UART_MSR' was not declared in this scope
+...
+
+Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+Cc: Gustavo de Nardin <gustavodn@mandriva.com.br>
+Cc: David Woodhouse <dwmw2@infradead.org>
+Cc: Russell King <rmk@arm.linux.org.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/Kbuild |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/include/linux/Kbuild
++++ b/include/linux/Kbuild
+@@ -137,6 +137,7 @@ header-y += radeonfb.h
+ header-y += raw.h
+ header-y += resource.h
+ header-y += rose.h
++header-y += serial_reg.h
+ header-y += smbno.h
+ header-y += snmp.h
+ header-y += sockios.h
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.360012281@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:19 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ christophe@saout.de,
+ kaber@trash.net,
+ agk@redhat.com,
+ mbroz@redhat.com
+Subject: [2.6.22.2 review 45/84] dm io: fix panic on large request
+Content-Disposition: inline; filename=dm-io-fix-panic-on-large-request.patch
+Status: RO
+Content-Length: 1217
+Lines: 44
+
+
+From: Milan Broz <mbroz@redhat.com>
+
+Flush workqueue before releasing bioset and mopools in dm-crypt.  There can
+be finished but not yet released request.
+
+Call chain causing oops:
+  run workqueue
+    dec_pending
+      bio_endio(...);
+       <remove device request - remove mempool>
+      mempool_free(io, cc->io_pool);
+
+This usually happens when cryptsetup create temporary
+luks mapping in the beggining of crypt device activation.
+
+When dm-core calls destructor crypt_dtr, no new request
+are possible.
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Cc: Patrick McHardy <kaber@trash.net>
+Acked-by: Alasdair G Kergon <agk@redhat.com>
+Cc: Christophe Saout <christophe@saout.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-crypt.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/md/dm-crypt.c
++++ b/drivers/md/dm-crypt.c
+@@ -920,6 +920,8 @@ static void crypt_dtr(struct dm_target *
+ {
+       struct crypt_config *cc = (struct crypt_config *) ti->private;
++      flush_workqueue(_kcryptd_workqueue);
++
+       bioset_free(cc->bs);
+       mempool_destroy(cc->page_pool);
+       mempool_destroy(cc->io_pool);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.530585578@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:20 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ tglx@linutronix.de,
+ ak@suse.de,
+ johnstul@us.ibm.com,
+ torvalds@osdl.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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [2.6.22.2 review 46/84] i386: HPET, check if the counter works
+Content-Disposition: inline; filename=i386-hpet-check-if-the-counter-works.patch
+Status: RO
+Content-Length: 1389
+Lines: 57
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+Some systems have a HPET which is not incrementing, which leads to a
+complete hang.  Detect it during HPET setup.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Andi Kleen <ak@suse.de>
+Cc: john stultz <johnstul@us.ibm.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/i386/kernel/hpet.c |   24 +++++++++++++++++++++++-
+ 1 file changed, 23 insertions(+), 1 deletion(-)
+
+--- a/arch/i386/kernel/hpet.c
++++ b/arch/i386/kernel/hpet.c
+@@ -226,7 +226,8 @@ int __init hpet_enable(void)
+ {
+       unsigned long id;
+       uint64_t hpet_freq;
+-      u64 tmp;
++      u64 tmp, start, now;
++      cycle_t t1;
+       if (!is_hpet_capable())
+               return 0;
+@@ -273,6 +274,27 @@ int __init hpet_enable(void)
+       /* Start the counter */
+       hpet_start_counter();
++      /* Verify whether hpet counter works */
++      t1 = read_hpet();
++      rdtscll(start);
++
++      /*
++       * We don't know the TSC frequency yet, but waiting for
++       * 200000 TSC cycles is safe:
++       * 4 GHz == 50us
++       * 1 GHz == 200us
++       */
++      do {
++              rep_nop();
++              rdtscll(now);
++      } while ((now - start) < 200000UL);
++
++      if (t1 == read_hpet()) {
++              printk(KERN_WARNING
++                     "HPET counter not counting. HPET disabled\n");
++              goto out_nohpet;
++      }
++
+       /* Initialize and register HPET clocksource
+        *
+        * hpet period is in femto seconds per cycle
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.672657400@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:21 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ =?ISO-8859-15?q?Kristian=20H=F8gsberg?= <krh@redhat.com>,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [2.6.22.2 review 47/84] fw-ohci: fix "scheduling while atomic"
+Content-Disposition: inline; filename=fw-ohci-fix-scheduling-while-atomic.patch
+Status: RO
+Content-Length: 664
+Lines: 28
+
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+context_stop is called by bus_reset_tasklet, among else.
+
+Fixes http://bugzilla.kernel.org/show_bug.cgi?id=8735.
+Same as commit b980f5a224f3df6c884dbf5ae48797ce352ba139.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-ohci.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/firewire/fw-ohci.c
++++ b/drivers/firewire/fw-ohci.c
+@@ -586,7 +586,7 @@ static void context_stop(struct context 
+                       break;
+               fw_notify("context_stop: still active (0x%08x)\n", reg);
+-              msleep(1);
++              mdelay(1);
+       }
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:23 2007
+Message-Id: <20070807204123.815465392@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:22 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ =?ISO-8859-15?q?Kristian=20H=F8gsberg?= <krh@redhat.com>,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [2.6.22.2 review 48/84] firewire: fix memory leak of fw_request instances
+Content-Disposition: inline; filename=firewire-fix-memory-leak-of-fw_request-instances.patch
+Status: RO
+Content-Length: 1477
+Lines: 45
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Found and debugged by Jay Fenlason <fenlason@redhat.com>.
+The bug was especially noticeable with direct I/O over fw-sbp2.
+
+Same as commit 9c9bdf4d50730fd04b06077e22d7a83b585f26b5.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Kristian Høgsberg <krh@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-transaction.c |    4 +++-
+ drivers/firewire/fw-transaction.h |    4 ++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/firewire/fw-transaction.c
++++ b/drivers/firewire/fw-transaction.c
+@@ -605,8 +605,10 @@ fw_send_response(struct fw_card *card, s
+        * check is sufficient to ensure we don't send response to
+        * broadcast packets or posted writes.
+        */
+-      if (request->ack != ACK_PENDING)
++      if (request->ack != ACK_PENDING) {
++              kfree(request);
+               return;
++      }
+       if (rcode == RCODE_COMPLETE)
+               fw_fill_response(&request->response, request->request_header,
+--- a/drivers/firewire/fw-transaction.h
++++ b/drivers/firewire/fw-transaction.h
+@@ -124,6 +124,10 @@ typedef void (*fw_transaction_callback_t
+                                         size_t length,
+                                         void *callback_data);
++/*
++ * Important note:  The callback must guarantee that either fw_send_response()
++ * or kfree() is called on the @request.
++ */
+ typedef void (*fw_address_callback_t)(struct fw_card *card,
+                                     struct fw_request *request,
+                                     int tcode, int destination, int source,
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204123.978805025@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:23 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ linux-wireless@vger.kernel.org,
+ Jean Tourrilhes <jt@hpl.hp.com>,
+ Michael Buesch <mb@bu3sch.df>,
+ Larry Finger <Larry.Finger@lwfinger.net>,
+ "John W. Linville" <linville@tuxdriver.com>
+Subject: [2.6.22.2 review 49/84] softmac: Fix ESSID problem
+Content-Disposition: inline; filename=softmac-fix-essid-problem.patch
+Status: RO
+Content-Length: 1344
+Lines: 34
+
+
+From: Jean Tourrilhes <jt@hpl.hp.com>
+
+Victor Porton reported that the SoftMAC layer had random problem when setting the ESSID :
+http://bugzilla.kernel.org/show_bug.cgi?id=8686 After investigation, it turned out to be
+worse, the SoftMAC layer is left in an inconsistent state. The fix is pretty trivial.
+
+Signed-off-by: Jean Tourrilhes <jt@hpl.hp.com>
+Acked-by: Michael Buesch <mb@bu3sch.df>
+Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
+Acked-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ieee80211/softmac/ieee80211softmac_assoc.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c
++++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
+@@ -271,8 +271,11 @@ ieee80211softmac_assoc_work(struct work_
+                        */
+                       dprintk(KERN_INFO PFX "Associate: Scanning for networks first.\n");
+                       ieee80211softmac_notify(mac->dev, IEEE80211SOFTMAC_EVENT_SCAN_FINISHED, ieee80211softmac_assoc_notify_scan, NULL);
+-                      if (ieee80211softmac_start_scan(mac))
++                      if (ieee80211softmac_start_scan(mac)) {
+                               dprintk(KERN_INFO PFX "Associate: failed to initiate scan. Is device up?\n");
++                              mac->associnfo.associating = 0;
++                              mac->associnfo.associated = 0;
++                      }
+                       goto out;
+               } else {
+                       mac->associnfo.associating = 0;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.100805835@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:24 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ mhalcrow@us.ibm.com
+Subject: [2.6.22.2 review 50/84] eCryptfs: ecryptfs_setattr() bugfix
+Content-Disposition: inline; filename=ecryptfs-ecryptfs_setattr-bugfix.patch
+Status: RO
+Content-Length: 1358
+Lines: 35
+
+
+From: Michael Halcrow <mhalcrow@us.ibm.com>
+
+There is another bug recently introduced into the ecryptfs_setattr()
+function in 2.6.22.  eCryptfs will attempt to treat special files like
+regular eCryptfs files on chmod, chown, and so forth.  This leads to a NULL
+pointer dereference.  This patch validates that the file is a regular file
+before proceeding with operations related to the inode's crypt_stat.
+
+Thanks to Ryusuke Konishi for finding this bug and suggesting the fix.
+
+Signed-off-by: Michael Halcrow <mhalcrow@us.ibm.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ecryptfs/inode.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/fs/ecryptfs/inode.c
++++ b/fs/ecryptfs/inode.c
+@@ -902,8 +902,9 @@ static int ecryptfs_setattr(struct dentr
+       mutex_lock(&crypt_stat->cs_mutex);
+       if (S_ISDIR(dentry->d_inode->i_mode))
+               crypt_stat->flags &= ~(ECRYPTFS_ENCRYPTED);
+-      else if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED)
+-               || !(crypt_stat->flags & ECRYPTFS_KEY_VALID)) {
++      else if (S_ISREG(dentry->d_inode->i_mode)
++               && (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED)
++                   || !(crypt_stat->flags & ECRYPTFS_KEY_VALID))) {
+               struct vfsmount *lower_mnt;
+               struct file *lower_file = NULL;
+               struct ecryptfs_mount_crypt_stat *mount_crypt_stat;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.241367532@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:25 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ neilb@suse.de,
+ bfields@citi.umich.edu,
+ gnb@melbourne.sgi.com
+Subject: [2.6.22.2 review 51/84] nfsd: fix possible read-ahead cache and export table corruption
+Content-Disposition: inline; filename=nfsd-fix-possible-read-ahead-cache-and-export-table-corruption.patch
+Status: RO
+Content-Length: 1473
+Lines: 39
+
+
+From: J. Bruce Fields <bfields@citi.umich.edu>
+
+The value of nperbucket calculated here is too small--we should be rounding up
+instead of down--with the result that the index j in the following loop can
+overflow the raparm_hash array.  At least in my case, the next thing in memory
+turns out to be export_table, so the symptoms I see are crashes caused by the
+appearance of four zeroed-out export entries in the first bucket of the hash
+table of exports (which were actually entries in the readahead cache, a
+pointer to which had been written to the export table in this initialization
+code).
+
+It looks like the bug was probably introduced with commit
+fce1456a19f5c08b688c29f00ef90fdfa074c79b ("knfsd: make the readahead params
+cache SMP-friendly").
+
+Cc: Greg Banks <gnb@melbourne.sgi.com>
+Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
+Acked-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/nfsd/vfs.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/nfsd/vfs.c
++++ b/fs/nfsd/vfs.c
+@@ -1890,7 +1890,7 @@ nfsd_racache_init(int cache_size)
+               raparm_hash[i].pb_head = NULL;
+               spin_lock_init(&raparm_hash[i].pb_lock);
+       }
+-      nperbucket = cache_size >> RAPARM_HASH_BITS;
++      nperbucket = DIV_ROUND_UP(cache_size, RAPARM_HASH_SIZE);
+       for (i = 0; i < cache_size - 1; i++) {
+               if (i % nperbucket == 0)
+                       raparm_hash[j++].pb_head = raparml + i;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.388940158@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:26 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ slpratt@austin.ibm.com,
+ rusty@rustcorp.com.au,
+ linuxram@us.ibm.com,
+ wfg@mail.ustc.edu.cn
+Subject: [2.6.22.2 review 52/84] readahead: MIN_RA_PAGES/MAX_RA_PAGES macros
+Content-Disposition: inline; filename=readahead-min_ra_pages-max_ra_pages-macros.patch
+Status: RO
+Content-Length: 1695
+Lines: 52
+
+
+From: Fengguang Wu <wfg@mail.ustc.edu.cn>
+
+Define two convenient macros for read-ahead:
+       - MAX_RA_PAGES: rounded down counterpart of VM_MAX_READAHEAD
+       - MIN_RA_PAGES: rounded _up_ counterpart of VM_MIN_READAHEAD
+
+Note that the rounded up MIN_RA_PAGES will work flawlessly with _large_
+page sizes like 64k.
+
+Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
+Cc: Steven Pratt <slpratt@austin.ibm.com>
+Cc: Ram Pai <linuxram@us.ibm.com>
+Cc: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/readahead.c |   12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+--- a/mm/readahead.c
++++ b/mm/readahead.c
+@@ -21,8 +21,16 @@ void default_unplug_io_fn(struct backing
+ }
+ EXPORT_SYMBOL(default_unplug_io_fn);
++/*
++ * Convienent macros for min/max read-ahead pages.
++ * Note that MAX_RA_PAGES is rounded down, while MIN_RA_PAGES is rounded up.
++ * The latter is necessary for systems with large page size(i.e. 64k).
++ */
++#define MAX_RA_PAGES  (VM_MAX_READAHEAD*1024 / PAGE_CACHE_SIZE)
++#define MIN_RA_PAGES  DIV_ROUND_UP(VM_MIN_READAHEAD*1024, PAGE_CACHE_SIZE)
++
+ struct backing_dev_info default_backing_dev_info = {
+-      .ra_pages       = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE,
++      .ra_pages       = MAX_RA_PAGES,
+       .state          = 0,
+       .capabilities   = BDI_CAP_MAP_COPY,
+       .unplug_io_fn   = default_unplug_io_fn,
+@@ -51,7 +59,7 @@ static inline unsigned long get_max_read
+ static inline unsigned long get_min_readahead(struct file_ra_state *ra)
+ {
+-      return (VM_MIN_READAHEAD * 1024) / PAGE_CACHE_SIZE;
++      return MIN_RA_PAGES;
+ }
+ static inline void reset_ahead_window(struct file_ra_state *ra)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.528566278@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:27 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Latchesar Ionkov <lucho@ionkov.net>,
+ Mariusz Kozlowski <m.kozlowski@tuxland.pl>,
+ Eric Van Hensbergen <ericvh@ericvh.myip.org>
+Subject: [2.6.22.2 review 53/84] fs: 9p/conv.c error path fix
+Content-Disposition: inline; filename=fs-9p-conv.c-error-path-fix.patch
+Status: RO
+Content-Length: 583
+Lines: 27
+
+
+From: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+
+
+When buf_check_overflow() returns != 0 we will hit kfree(ERR_PTR(err))
+and it will not be happy about it.
+
+Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/9p/conv.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/9p/conv.c
++++ b/fs/9p/conv.c
+@@ -742,6 +742,7 @@ struct v9fs_fcall *v9fs_create_twrite(u3
+       if (err) {
+               kfree(fc);
+               fc = ERR_PTR(err);
++              goto error;
+       }
+       if (buf_check_overflow(bufp)) {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.677457652@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:28 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ayaz Abdulla <aabdulla@nvidia.com>
+Subject: [2.6.22.2 review 54/84] forcedeth bug fix: cicada phy
+Content-Disposition: inline; filename=forcedeth-bug-fix-cicada-phy.patch
+Status: RO
+Content-Length: 2290
+Lines: 63
+
+From: Ayaz Abdulla <aabdulla@nvidia.com>
+
+This patch contains errata fixes for the cicada phy. It only renamed the
+defines to be phy specific.
+
+
+Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/forcedeth.c |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/drivers/net/forcedeth.c
++++ b/drivers/net/forcedeth.c
+@@ -557,12 +557,12 @@ union ring_type {
+ #define PHYID2_MODEL_MASK             0x03f0
+ #define PHY_MODEL_MARVELL_E3016               0x220
+ #define PHY_MARVELL_E3016_INITMASK    0x0300
+-#define PHY_INIT1     0x0f000
+-#define PHY_INIT2     0x0e00
+-#define PHY_INIT3     0x01000
+-#define PHY_INIT4     0x0200
+-#define PHY_INIT5     0x0004
+-#define PHY_INIT6     0x02000
++#define PHY_CICADA_INIT1      0x0f000
++#define PHY_CICADA_INIT2      0x0e00
++#define PHY_CICADA_INIT3      0x01000
++#define PHY_CICADA_INIT4      0x0200
++#define PHY_CICADA_INIT5      0x0004
++#define PHY_CICADA_INIT6      0x02000
+ #define PHY_GIGABIT   0x0100
+ #define PHY_TIMEOUT   0x1
+@@ -1141,14 +1141,14 @@ static int phy_init(struct net_device *d
+       /* phy vendor specific configuration */
+       if ((np->phy_oui == PHY_OUI_CICADA) && (phyinterface & PHY_RGMII) ) {
+               phy_reserved = mii_rw(dev, np->phyaddr, MII_RESV1, MII_READ);
+-              phy_reserved &= ~(PHY_INIT1 | PHY_INIT2);
+-              phy_reserved |= (PHY_INIT3 | PHY_INIT4);
++              phy_reserved &= ~(PHY_CICADA_INIT1 | PHY_CICADA_INIT2);
++              phy_reserved |= (PHY_CICADA_INIT3 | PHY_CICADA_INIT4);
+               if (mii_rw(dev, np->phyaddr, MII_RESV1, phy_reserved)) {
+                       printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
+                       return PHY_ERROR;
+               }
+               phy_reserved = mii_rw(dev, np->phyaddr, MII_NCONFIG, MII_READ);
+-              phy_reserved |= PHY_INIT5;
++              phy_reserved |= PHY_CICADA_INIT5;
+               if (mii_rw(dev, np->phyaddr, MII_NCONFIG, phy_reserved)) {
+                       printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
+                       return PHY_ERROR;
+@@ -1156,7 +1156,7 @@ static int phy_init(struct net_device *d
+       }
+       if (np->phy_oui == PHY_OUI_CICADA) {
+               phy_reserved = mii_rw(dev, np->phyaddr, MII_SREVISION, MII_READ);
+-              phy_reserved |= PHY_INIT6;
++              phy_reserved |= PHY_CICADA_INIT6;
+               if (mii_rw(dev, np->phyaddr, MII_SREVISION, phy_reserved)) {
+                       printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
+                       return PHY_ERROR;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:24 2007
+Message-Id: <20070807204124.839027546@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:29 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ayaz Abdulla <aabdulla@nvidia.com>
+Subject: [2.6.22.2 review 55/84] forcedeth bug fix: vitesse phy
+Content-Disposition: inline; filename=forcedeth-bug-fix-vitesse-phy.patch
+Status: RO
+Content-Length: 4807
+Lines: 125
+
+From: Ayaz Abdulla <aabdulla@nvidia.com>
+
+This patch contains errata fixes for the vitesse phy. It only renamed the
+defines to be phy specific.
+
+Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/forcedeth.c |   88 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 88 insertions(+)
+
+--- a/drivers/net/forcedeth.c
++++ b/drivers/net/forcedeth.c
+@@ -550,6 +550,7 @@ union ring_type {
+ /* PHY defines */
+ #define PHY_OUI_MARVELL       0x5043
+ #define PHY_OUI_CICADA        0x03f1
++#define PHY_OUI_VITESSE       0x01c1
+ #define PHYID1_OUI_MASK       0x03ff
+ #define PHYID1_OUI_SHFT       6
+ #define PHYID2_OUI_MASK       0xfc00
+@@ -563,6 +564,23 @@ union ring_type {
+ #define PHY_CICADA_INIT4      0x0200
+ #define PHY_CICADA_INIT5      0x0004
+ #define PHY_CICADA_INIT6      0x02000
++#define PHY_VITESSE_INIT_REG1 0x1f
++#define PHY_VITESSE_INIT_REG2 0x10
++#define PHY_VITESSE_INIT_REG3 0x11
++#define PHY_VITESSE_INIT_REG4 0x12
++#define PHY_VITESSE_INIT_MSK1 0xc
++#define PHY_VITESSE_INIT_MSK2 0x0180
++#define PHY_VITESSE_INIT1     0x52b5
++#define PHY_VITESSE_INIT2     0xaf8a
++#define PHY_VITESSE_INIT3     0x8
++#define PHY_VITESSE_INIT4     0x8f8a
++#define PHY_VITESSE_INIT5     0xaf86
++#define PHY_VITESSE_INIT6     0x8f86
++#define PHY_VITESSE_INIT7     0xaf82
++#define PHY_VITESSE_INIT8     0x0100
++#define PHY_VITESSE_INIT9     0x8f82
++#define PHY_VITESSE_INIT10    0x0
++
+ #define PHY_GIGABIT   0x0100
+ #define PHY_TIMEOUT   0x1
+@@ -1162,6 +1180,76 @@ static int phy_init(struct net_device *d
+                       return PHY_ERROR;
+               }
+       }
++      if (np->phy_oui == PHY_OUI_VITESSE) {
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG1, PHY_VITESSE_INIT1)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT2)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, MII_READ);
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, MII_READ);
++              phy_reserved &= ~PHY_VITESSE_INIT_MSK1;
++              phy_reserved |= PHY_VITESSE_INIT3;
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT4)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT5)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, MII_READ);
++              phy_reserved &= ~PHY_VITESSE_INIT_MSK1;
++              phy_reserved |= PHY_VITESSE_INIT3;
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, MII_READ);
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT6)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT7)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, MII_READ);
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG4, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              phy_reserved = mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, MII_READ);
++              phy_reserved &= ~PHY_VITESSE_INIT_MSK2;
++              phy_reserved |= PHY_VITESSE_INIT8;
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG3, phy_reserved)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG2, PHY_VITESSE_INIT9)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_VITESSE_INIT_REG1, PHY_VITESSE_INIT10)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++      }
+       /* some phys clear out pause advertisment on reset, set it back */
+       mii_rw(dev, np->phyaddr, MII_ADVERTISE, reg);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204124.972958205@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:30 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ayaz Abdulla <aabdulla@nvidia.com>
+Subject: [2.6.22.2 review 56/84] forcedeth bug fix: realtek phy
+Content-Disposition: inline; filename=forcedeth-bug-fix-realtek-phy.patch
+Status: RO
+Content-Length: 3403
+Lines: 98
+
+From: Ayaz Abdulla <aabdulla@nvidia.com>
+
+This patch contains errata fixes for the realtek phy. It only renamed the
+defines to be phy specific.
+
+Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/forcedeth.c |   54 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+--- a/drivers/net/forcedeth.c
++++ b/drivers/net/forcedeth.c
+@@ -551,6 +551,7 @@ union ring_type {
+ #define PHY_OUI_MARVELL       0x5043
+ #define PHY_OUI_CICADA        0x03f1
+ #define PHY_OUI_VITESSE       0x01c1
++#define PHY_OUI_REALTEK       0x01c1
+ #define PHYID1_OUI_MASK       0x03ff
+ #define PHYID1_OUI_SHFT       6
+ #define PHYID2_OUI_MASK       0xfc00
+@@ -580,6 +581,13 @@ union ring_type {
+ #define PHY_VITESSE_INIT8     0x0100
+ #define PHY_VITESSE_INIT9     0x8f82
+ #define PHY_VITESSE_INIT10    0x0
++#define PHY_REALTEK_INIT_REG1 0x1f
++#define PHY_REALTEK_INIT_REG2 0x19
++#define PHY_REALTEK_INIT_REG3 0x13
++#define PHY_REALTEK_INIT1     0x0000
++#define PHY_REALTEK_INIT2     0x8e00
++#define PHY_REALTEK_INIT3     0x0001
++#define PHY_REALTEK_INIT4     0xad17
+ #define PHY_GIGABIT   0x0100
+@@ -1114,6 +1122,28 @@ static int phy_init(struct net_device *d
+                       return PHY_ERROR;
+               }
+       }
++      if (np->phy_oui == PHY_OUI_REALTEK) {
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT1)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG2, PHY_REALTEK_INIT2)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT3)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG3, PHY_REALTEK_INIT4)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT1)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++      }
+       /* set advertise register */
+       reg = mii_rw(dev, np->phyaddr, MII_ADVERTISE, MII_READ);
+@@ -1250,6 +1280,30 @@ static int phy_init(struct net_device *d
+                       return PHY_ERROR;
+               }
+       }
++      if (np->phy_oui == PHY_OUI_REALTEK) {
++              /* reset could have cleared these out, set them back */
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT1)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG2, PHY_REALTEK_INIT2)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT3)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG3, PHY_REALTEK_INIT4)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++              if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT1)) {
++                      printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
++                      return PHY_ERROR;
++              }
++      }
++
+       /* some phys clear out pause advertisment on reset, set it back */
+       mii_rw(dev, np->phyaddr, MII_ADVERTISE, reg);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204125.121718828@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:31 -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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Subject: [2.6.22.2 review 57/84] acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
+Content-Disposition: inline; filename=acpi-cpufreq-proper-readmodifywrite-of-perf_ctl-msr.patch
+Status: RO
+Content-Length: 2001
+Lines: 59
+
+
+From: Venki Pallipadi <venkatesh.pallipadi@intel.com>
+
+[CPUFREQ] acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
+
+During recent acpi-cpufreq changes, writing to PERF_CTL msr
+changed from RMW of entire 64 bit to RMW of low 32 bit and clearing of
+upper 32 bit. Fix it back to do a proper RMW of the MSR.
+
+Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Signed-off-by: Dave Jones <davej@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c |   13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+--- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
++++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+@@ -167,11 +167,13 @@ static void do_drv_read(struct drv_cmd *
+ static void do_drv_write(struct drv_cmd *cmd)
+ {
+-      u32 h = 0;
++      u32 lo, hi;
+       switch (cmd->type) {
+       case SYSTEM_INTEL_MSR_CAPABLE:
+-              wrmsr(cmd->addr.msr.reg, cmd->val, h);
++              rdmsr(cmd->addr.msr.reg, lo, hi);
++              lo = (lo & ~INTEL_MSR_RANGE) | (cmd->val & INTEL_MSR_RANGE);
++              wrmsr(cmd->addr.msr.reg, lo, hi);
+               break;
+       case SYSTEM_IO_CAPABLE:
+               acpi_os_write_port((acpi_io_address)cmd->addr.io.port,
+@@ -372,7 +374,6 @@ static int acpi_cpufreq_target(struct cp
+       struct cpufreq_freqs freqs;
+       cpumask_t online_policy_cpus;
+       struct drv_cmd cmd;
+-      unsigned int msr;
+       unsigned int next_state = 0; /* Index into freq_table */
+       unsigned int next_perf_state = 0; /* Index into perf table */
+       unsigned int i;
+@@ -417,11 +418,7 @@ static int acpi_cpufreq_target(struct cp
+       case SYSTEM_INTEL_MSR_CAPABLE:
+               cmd.type = SYSTEM_INTEL_MSR_CAPABLE;
+               cmd.addr.msr.reg = MSR_IA32_PERF_CTL;
+-              msr =
+-                  (u32) perf->states[next_perf_state].
+-                  control & INTEL_MSR_RANGE;
+-              cmd.val = get_cur_val(online_policy_cpus);
+-              cmd.val = (cmd.val & ~INTEL_MSR_RANGE) | msr;
++              cmd.val = (u32) perf->states[next_perf_state].control;
+               break;
+       case SYSTEM_IO_CAPABLE:
+               cmd.type = SYSTEM_IO_CAPABLE;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204125.260681210@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:32 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ dev@openvz.org,
+ jack@suse.cz,
+ linux-ext4@vger.kernel.org
+Subject: [2.6.22.2 review 58/84] jbd commit: fix transaction dropping
+Content-Disposition: inline; filename=jbd-commit-fix-transaction-dropping.patch
+Status: RO
+Content-Length: 930
+Lines: 31
+
+
+From: Jan Kara <jack@suse.cz>
+
+We have to check that also the second checkpoint list is non-empty before
+dropping the transaction.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Cc: Kirill Korotaev <dev@openvz.org>
+Cc: <linux-ext4@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/jbd/commit.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/jbd/commit.c
++++ b/fs/jbd/commit.c
+@@ -887,7 +887,8 @@ restart_loop:
+       journal->j_committing_transaction = NULL;
+       spin_unlock(&journal->j_state_lock);
+-      if (commit_transaction->t_checkpoint_list == NULL) {
++      if (commit_transaction->t_checkpoint_list == NULL &&
++          commit_transaction->t_checkpoint_io_list == NULL) {
+               __journal_drop_transaction(journal, commit_transaction);
+       } else {
+               if (journal->j_checkpoint_transactions == NULL) {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204125.426944566@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:33 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ dev@openvz.org,
+ jack@suse.cz,
+ linux-ext4@vger.kernel.org
+Subject: [2.6.22.2 review 59/84] jbd2 commit: fix transaction dropping
+Content-Disposition: inline; filename=jbd2-commit-fix-transaction-dropping.patch
+Status: RO
+Content-Length: 938
+Lines: 31
+
+
+From: Jan Kara <jack@suse.cz>
+
+We have to check that also the second checkpoint list is non-empty before
+dropping the transaction.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Cc: Kirill Korotaev <dev@openvz.org>
+Cc: <linux-ext4@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/jbd2/commit.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/jbd2/commit.c
++++ b/fs/jbd2/commit.c
+@@ -896,7 +896,8 @@ restart_loop:
+       journal->j_committing_transaction = NULL;
+       spin_unlock(&journal->j_state_lock);
+-      if (commit_transaction->t_checkpoint_list == NULL) {
++      if (commit_transaction->t_checkpoint_list == NULL &&
++          commit_transaction->t_checkpoint_io_list == NULL) {
+               __jbd2_journal_drop_transaction(journal, commit_transaction);
+       } else {
+               if (journal->j_checkpoint_transactions == NULL) {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204125.573102405@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:34 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ joe.jin@oracle.com,
+ gurudas.pai@oracle.com
+Subject: [2.6.22.2 review 60/84] hugetlb: fix race in alloc_fresh_huge_page()
+Content-Disposition: inline; filename=hugetlb-fix-race-in-alloc_fresh_huge_page.patch
+Status: RO
+Content-Length: 1198
+Lines: 43
+
+
+From: Joe Jin <joe.jin@oracle.com>
+
+That static `nid' index needs locking.  Without it we can end up calling
+alloc_pages_node() with an illegal node ID and the kernel crashes.
+
+Acked-by: Gurudas Pai <gurudas.pai@oracle.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/hugetlb.c |   15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -101,13 +101,20 @@ static void free_huge_page(struct page *
+ static int alloc_fresh_huge_page(void)
+ {
+-      static int nid = 0;
++      static int prev_nid;
+       struct page *page;
+-      page = alloc_pages_node(nid, GFP_HIGHUSER|__GFP_COMP|__GFP_NOWARN,
+-                                      HUGETLB_PAGE_ORDER);
+-      nid = next_node(nid, node_online_map);
++      static DEFINE_SPINLOCK(nid_lock);
++      int nid;
++
++      spin_lock(&nid_lock);
++      nid = next_node(prev_nid, node_online_map);
+       if (nid == MAX_NUMNODES)
+               nid = first_node(node_online_map);
++      prev_nid = nid;
++      spin_unlock(&nid_lock);
++
++      page = alloc_pages_node(nid, GFP_HIGHUSER|__GFP_COMP|__GFP_NOWARN,
++                                      HUGETLB_PAGE_ORDER);
+       if (page) {
+               set_compound_page_dtor(page, free_huge_page);
+               spin_lock(&hugetlb_lock);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:25 2007
+Message-Id: <20070807204125.725088064@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:35 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Herbert.van.den.Bergh@oracle.com,
+ chris.mason@oracle.com,
+ herbert.van.den.bergh@oracle.com
+Subject: [2.6.22.2 review 61/84] do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY
+Content-Disposition: inline; filename=do-not-limit-locked-memory-when-rlimit_memlock-is-rlim_infinity.patch
+Status: RO
+Content-Length: 1146
+Lines: 35
+
+
+From: Herbert van den Bergh <Herbert.van.den.Bergh@oracle.com>
+
+Fix a bug in mm/mlock.c on 32-bit architectures that prevents a user from
+locking more than 4GB of shared memory, or allocating more than 4GB of
+shared memory in hugepages, when rlim[RLIMIT_MEMLOCK] is set to
+RLIM_INFINITY.
+
+Signed-off-by: Herbert van den Bergh <herbert.van.den.bergh@oracle.com>
+Acked-by: Chris Mason <chris.mason@oracle.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/mlock.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/mm/mlock.c
++++ b/mm/mlock.c
+@@ -244,9 +244,12 @@ int user_shm_lock(size_t size, struct us
+       locked = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
+       lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
++      if (lock_limit == RLIM_INFINITY)
++              allowed = 1;
+       lock_limit >>= PAGE_SHIFT;
+       spin_lock(&shmlock_user_lock);
+-      if (locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK))
++      if (!allowed &&
++          locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK))
+               goto out;
+       get_uid(user);
+       user->locked_shm += locked;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204125.865576145@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:36 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ jdike@linux.intel.com,
+ blaisorblade@yahoo.it,
+ jdike@addtoit.com
+Subject: [2.6.22.2 review 62/84] uml: limit request size on COWed devices
+Content-Disposition: inline; filename=uml-limit-request-size-on-cowed-devices.patch
+Status: RO
+Content-Length: 1028
+Lines: 31
+
+
+From: Jeff Dike <jdike@addtoit.com>
+
+COWed devices can't handle more than 32 (64 on x86_64) sectors in one request
+due to the size of the bitmap being carried around in the io_thread_req.
+
+Enforce that by telling the block layer not to put too many sectors in
+requests to COWed devices.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/drivers/ubd_kern.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/um/drivers/ubd_kern.c
++++ b/arch/um/drivers/ubd_kern.c
+@@ -712,6 +712,8 @@ static int ubd_add(int n, char **error_o
+       ubd_dev->queue->queuedata = ubd_dev;
+       blk_queue_max_hw_segments(ubd_dev->queue, MAX_SG);
++      if(ubd_dev->cow.file != NULL)
++              blk_queue_max_sectors(ubd_dev->queue, 8 * sizeof(long));
+       err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]);
+       if(err){
+               *error_out = "Failed to register device";
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.076402173@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stelian Pop <stelian@popies.net>,
+ Len Brown <lenb@kernel.org>,
+ Andrei Paskevich <andrei@capet.iut-fbleau.fr>,
+ Mattia Dongili <malattia@linux.it>
+Subject: [2.6.22.2 review 63/84] sony-laptop: fix bug in event handling
+Content-Disposition: inline; filename=sony-laptop-fix-bug-in-event-handling.patch
+Status: RO
+Content-Length: 2489
+Lines: 82
+
+From: Mattia Dongili <malattia@linux.it>
+
+The rewritten event reading code from sonypi was absolutely wrong,
+this patche makes things functional for type2 and type1 models.
+
+Cc: Andrei Paskevich <andrei@capet.iut-fbleau.fr>
+Signed-off-by: Mattia Dongili <malattia@linux.it>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/sony-laptop.c |   30 ++++++++++++++++++++++--------
+ 1 file changed, 22 insertions(+), 8 deletions(-)
+
+--- a/drivers/misc/sony-laptop.c
++++ b/drivers/misc/sony-laptop.c
+@@ -908,7 +908,9 @@ static struct acpi_driver sony_nc_driver
+ #define SONYPI_DEVICE_TYPE2   0x00000002
+ #define SONYPI_DEVICE_TYPE3   0x00000004
+-#define SONY_PIC_EV_MASK      0xff
++#define SONYPI_TYPE1_OFFSET   0x04
++#define SONYPI_TYPE2_OFFSET   0x12
++#define SONYPI_TYPE3_OFFSET   0x12
+ struct sony_pic_ioport {
+       struct acpi_resource_io io;
+@@ -922,6 +924,7 @@ struct sony_pic_irq {
+ struct sony_pic_dev {
+       int                     model;
++      u16                     evport_offset;
+       u8                      camera_power;
+       u8                      bluetooth_power;
+       u8                      wwan_power;
+@@ -1998,20 +2001,17 @@ end:
+ static irqreturn_t sony_pic_irq(int irq, void *dev_id)
+ {
+       int i, j;
+-      u32 port_val = 0;
+       u8 ev = 0;
+       u8 data_mask = 0;
+       u8 device_event = 0;
+       struct sony_pic_dev *dev = (struct sony_pic_dev *) dev_id;
+-      acpi_os_read_port(dev->cur_ioport->io.minimum, &port_val,
+-                      dev->cur_ioport->io.address_length);
+-      ev = port_val & SONY_PIC_EV_MASK;
+-      data_mask = 0xff & (port_val >> (dev->cur_ioport->io.address_length - 8));
++      ev = inb_p(dev->cur_ioport->io.minimum);
++      data_mask = inb_p(dev->cur_ioport->io.minimum + dev->evport_offset);
+-      dprintk("event (0x%.8x [%.2x] [%.2x]) at port 0x%.4x\n",
+-                      port_val, ev, data_mask, dev->cur_ioport->io.minimum);
++      dprintk("event ([%.2x] [%.2x]) at port 0x%.4x(+0x%.2x)\n",
++                      ev, data_mask, dev->cur_ioport->io.minimum, dev->evport_offset);
+       if (ev == 0x00 || ev == 0xff)
+               return IRQ_HANDLED;
+@@ -2102,6 +2102,20 @@ static int sony_pic_add(struct acpi_devi
+       spic_dev.model = sony_pic_detect_device_type();
+       mutex_init(&spic_dev.lock);
++      /* model specific characteristics */
++      switch(spic_dev.model) {
++              case SONYPI_DEVICE_TYPE1:
++                      spic_dev.evport_offset = SONYPI_TYPE1_OFFSET;
++                      break;
++              case SONYPI_DEVICE_TYPE3:
++                      spic_dev.evport_offset = SONYPI_TYPE3_OFFSET;
++                      break;
++              case SONYPI_DEVICE_TYPE2:
++              default:
++                      spic_dev.evport_offset = SONYPI_TYPE2_OFFSET;
++                      break;
++      }
++
+       /* read _PRS resources */
+       result = sony_pic_possible_resources(device);
+       if (result) {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.243097871@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:38 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ vatsa@in.ibm.com,
+ mschmidt@redhat.com,
+ oleg@tv-sign.ru
+Subject: [2.6.22.2 review 64/84] destroy_workqueue() can livelock
+Content-Disposition: inline; filename=destroy_workqueue-can-livelock.patch
+Status: RO
+Content-Length: 1942
+Lines: 55
+
+
+From: Oleg Nesterov <oleg@tv-sign.ru>
+
+Pointed out by Michal Schmidt <mschmidt@redhat.com>.
+
+The bug was introduced in 2.6.22 by me.
+
+cleanup_workqueue_thread() does flush_cpu_workqueue(cwq) in a loop until
+->worklist becomes empty.  This is live-lockable, a re-niced caller can get
+CPU after wake_up() and insert a new barrier before the lower-priority
+cwq->thread has a chance to clear ->current_work.
+
+Change cleanup_workqueue_thread() to do flush_cpu_workqueue(cwq) only once.
+ We can rely on the fact that run_workqueue() won't return until it flushes
+all works.  So it is safe to call kthread_stop() after that, the "should
+stop" request won't be noticed until run_workqueue() returns.
+
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Cc: Michal Schmidt <mschmidt@redhat.com>
+Cc: Srivatsa Vaddagiri <vatsa@in.ibm.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/workqueue.c |   11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -739,18 +739,17 @@ static void cleanup_workqueue_thread(str
+       if (cwq->thread == NULL)
+               return;
++      flush_cpu_workqueue(cwq);
+       /*
+-       * If the caller is CPU_DEAD the single flush_cpu_workqueue()
+-       * is not enough, a concurrent flush_workqueue() can insert a
+-       * barrier after us.
++       * If the caller is CPU_DEAD and cwq->worklist was not empty,
++       * a concurrent flush_workqueue() can insert a barrier after us.
++       * However, in that case run_workqueue() won't return and check
++       * kthread_should_stop() until it flushes all work_struct's.
+        * When ->worklist becomes empty it is safe to exit because no
+        * more work_structs can be queued on this cwq: flush_workqueue
+        * checks list_empty(), and a "normal" queue_work() can't use
+        * a dead CPU.
+        */
+-      while (flush_cpu_workqueue(cwq))
+-              ;
+-
+       kthread_stop(cwq->thread);
+       cwq->thread = NULL;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.394957248@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:39 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ adaplas@pol.net,
+ michal.k.k.piotrowski@gmail.com,
+ bunk@stusta.de
+Subject: [2.6.22.2 review 65/84] drivers/video/macmodes.c:mac_find_mode() mustnt be __devinit
+Content-Disposition: inline; filename=drivers-video-macmodes.c-mac_find_mode-mustn-t-be-__devinit.patch
+Status: RO
+Content-Length: 1586
+Lines: 51
+
+
+From: Adrian Bunk <bunk@stusta.de>
+
+If it's EXPORT_SYMBOL'ed it can't be __devinit.
+
+Reported by Mikael Pettersson.
+
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+Cc: "Antonino A. Daplas" <adaplas@pol.net>
+Cc: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/macmodes.c |    5 ++---
+ drivers/video/macmodes.h |    8 ++++----
+ 2 files changed, 6 insertions(+), 7 deletions(-)
+
+--- a/drivers/video/macmodes.c
++++ b/drivers/video/macmodes.c
+@@ -369,9 +369,8 @@ EXPORT_SYMBOL(mac_map_monitor_sense);
+  *
+  */
+-int __devinit mac_find_mode(struct fb_var_screeninfo *var,
+-                          struct fb_info *info, const char *mode_option,
+-                          unsigned int default_bpp)
++int mac_find_mode(struct fb_var_screeninfo *var, struct fb_info *info,
++                const char *mode_option, unsigned int default_bpp)
+ {
+     const struct fb_videomode *db = NULL;
+     unsigned int dbsize = 0;
+--- a/drivers/video/macmodes.h
++++ b/drivers/video/macmodes.h
+@@ -55,10 +55,10 @@ extern int mac_vmode_to_var(int vmode, i
+ extern int mac_var_to_vmode(const struct fb_var_screeninfo *var, int *vmode,
+                           int *cmode);
+ extern int mac_map_monitor_sense(int sense);
+-extern int __devinit mac_find_mode(struct fb_var_screeninfo *var,
+-                                 struct fb_info *info,
+-                                 const char *mode_option,
+-                                 unsigned int default_bpp);
++extern int mac_find_mode(struct fb_var_screeninfo *var,
++                       struct fb_info *info,
++                       const char *mode_option,
++                       unsigned int default_bpp);
+     /*
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.529579794@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jens Axboe <jens.axboe@oracle.com>
+Subject: [2.6.22.2 review 66/84] cfq-iosched: fix async queue behaviour
+Content-Disposition: inline; filename=cfq-iosched-fix-async-queue-behaviour.patch
+Status: RO
+Content-Length: 3018
+Lines: 115
+
+From: Jens Axboe <jens.axboe@oracle.com>
+
+With the cfq_queue hash removal, we inadvertently got rid of the
+async queue sharing. This was not intentional, in fact CFQ purposely
+shares the async queue per priority level to get good merging for
+async writes.
+
+So put some logic in cfq_get_queue() to track the shared queues.
+
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ block/cfq-iosched.c    |   39 ++++++++++++++++++++++++++++++++++++---
+ include/linux/ioprio.h |    6 ++++--
+ 2 files changed, 40 insertions(+), 5 deletions(-)
+
+--- a/block/cfq-iosched.c
++++ b/block/cfq-iosched.c
+@@ -92,6 +92,8 @@ struct cfq_data {
+       struct cfq_queue *active_queue;
+       struct cfq_io_context *active_cic;
++      struct cfq_queue *async_cfqq[IOPRIO_BE_NR];
++
+       struct timer_list idle_class_timer;
+       sector_t last_position;
+@@ -1351,8 +1353,8 @@ static void cfq_ioc_set_ioprio(struct io
+ }
+ static struct cfq_queue *
+-cfq_get_queue(struct cfq_data *cfqd, int is_sync, struct task_struct *tsk,
+-            gfp_t gfp_mask)
++cfq_find_alloc_queue(struct cfq_data *cfqd, int is_sync,
++                   struct task_struct *tsk, gfp_t gfp_mask)
+ {
+       struct cfq_queue *cfqq, *new_cfqq = NULL;
+       struct cfq_io_context *cic;
+@@ -1405,12 +1407,35 @@ retry:
+       if (new_cfqq)
+               kmem_cache_free(cfq_pool, new_cfqq);
+-      atomic_inc(&cfqq->ref);
+ out:
+       WARN_ON((gfp_mask & __GFP_WAIT) && !cfqq);
+       return cfqq;
+ }
++static struct cfq_queue *
++cfq_get_queue(struct cfq_data *cfqd, int is_sync, struct task_struct *tsk,
++            gfp_t gfp_mask)
++{
++      const int ioprio = task_ioprio(tsk);
++      struct cfq_queue *cfqq = NULL;
++
++      if (!is_sync)
++              cfqq = cfqd->async_cfqq[ioprio];
++      if (!cfqq)
++              cfqq = cfq_find_alloc_queue(cfqd, is_sync, tsk, gfp_mask);
++
++      /*
++       * pin the queue now that it's allocated, scheduler exit will prune it
++       */
++      if (!is_sync && !cfqd->async_cfqq[ioprio]) {
++              atomic_inc(&cfqq->ref);
++              cfqd->async_cfqq[ioprio] = cfqq;
++      }
++
++      atomic_inc(&cfqq->ref);
++      return cfqq;
++}
++
+ /*
+  * We drop cfq io contexts lazily, so we may find a dead one.
+  */
+@@ -2019,6 +2044,7 @@ static void cfq_exit_queue(elevator_t *e
+ {
+       struct cfq_data *cfqd = e->elevator_data;
+       request_queue_t *q = cfqd->queue;
++      int i;
+       cfq_shutdown_timer_wq(cfqd);
+@@ -2035,6 +2061,13 @@ static void cfq_exit_queue(elevator_t *e
+               __cfq_exit_single_io_context(cfqd, cic);
+       }
++      /*
++       * Put the async queues
++       */
++      for (i = 0; i < IOPRIO_BE_NR; i++)
++              if (cfqd->async_cfqq[i])
++                      cfq_put_queue(cfqd->async_cfqq[i]);
++
+       spin_unlock_irq(q->queue_lock);
+       cfq_shutdown_timer_wq(cfqd);
+--- a/include/linux/ioprio.h
++++ b/include/linux/ioprio.h
+@@ -47,8 +47,10 @@ enum {
+ #define IOPRIO_NORM   (4)
+ static inline int task_ioprio(struct task_struct *task)
+ {
+-      WARN_ON(!ioprio_valid(task->ioprio));
+-      return IOPRIO_PRIO_DATA(task->ioprio);
++      if (ioprio_valid(task->ioprio))
++              return IOPRIO_PRIO_DATA(task->ioprio);
++
++      return IOPRIO_NORM;
+ }
+ static inline int task_nice_ioprio(struct task_struct *task)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.690543013@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:41 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Jeff Garzik <jeff@garzik.org>,
+ linux-ide@vger.kernel.org,
+ Serge van Thillo <nulleke@hotmail.com>
+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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tejun Heo <htejun@gmail.com>
+Subject: [2.6.22.2 review 67/84] libata: add FUJITSU MHV2080BH to NCQ blacklist
+Content-Disposition: inline; filename=libata-add-fujitsu-mhv2080bh-to-ncq-blacklist.patch
+Status: RO
+Content-Length: 901
+Lines: 30
+
+From: Tejun Heo <htejun@gmail.com>
+
+Please warmly welcome the first member from FUJITSU to the prestigious
+NCQ spurious completion club.
+
+This is reported by Serge Van Thillo in bugzilla bug 8730.
+
+  http://bugzilla.kernel.org/show_bug.cgi?id=8730
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>
+Cc: Serge van Thillo <nulleke@hotmail.com>
+Cc: Jeff Garzik <jeff@garzik.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-core.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -3800,6 +3800,7 @@ static const struct ata_blacklist_entry 
+       { "HTS541612J9SA00",    "SBDIC7JP",     ATA_HORKAGE_NONCQ, },
+       { "Hitachi HTS541616J9SA00", "SB4OC70P", ATA_HORKAGE_NONCQ, },
+       { "WDC WD740ADFD-00NLR1", NULL,         ATA_HORKAGE_NONCQ, },
++      { "FUJITSU MHV2080BH",  "00840028",     ATA_HORKAGE_NONCQ, },
+       /* Devices with NCQ limits */
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:26 2007
+Message-Id: <20070807204126.825893975@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Richter <stefanr@s5r6.in-berlin.de>
+Subject: [2.6.22.2 review 68/84] ieee1394: revert "sbp2: enforce 32bit DMA mapping"
+Content-Disposition: inline; filename=ieee1394-revert-sbp2-enforce-32bit-dma-mapping.patch
+Status: RO
+Content-Length: 1024
+Lines: 37
+
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Revert commit 0555659d63c285ceb7ead3115532e1b71b0f27a7 from 2.6.22-rc1.
+The dma_set_mask call somehow failed on a PowerMac G5, PPC64:
+http://lkml.org/lkml/2007/8/1/344
+
+Should there ever occur a DMA mapping beyond the physical DMA range, a
+proper SBP-2 firmware will report transport errors.  So let's leave it
+at that.
+
+Same as commit a9c2f18800753c82c45fc13b27bdc148849bdbb2.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Tested-by: Olaf Hering <olh@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ieee1394/sbp2.c |    5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/drivers/ieee1394/sbp2.c
++++ b/drivers/ieee1394/sbp2.c
+@@ -774,11 +774,6 @@ static struct sbp2_lu *sbp2_alloc_device
+                       SBP2_ERR("failed to register lower 4GB address range");
+                       goto failed_alloc;
+               }
+-#else
+-              if (dma_set_mask(hi->host->device.parent, DMA_32BIT_MASK)) {
+-                      SBP2_ERR("failed to set 4GB DMA mask");
+-                      goto failed_alloc;
+-              }
+ #endif
+       }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204126.977863080@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:43 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ neilb@suse.de,
+ bfields@citi.umich.edu,
+ akinobu.mita@gmail.com,
+ trond.myklebust@fys.uio.no
+Subject: [2.6.22.2 review 69/84] nfsd: fix possible oops on re-insertion of rpcsec_gss modules
+Content-Disposition: inline; filename=nfsd-fix-possible-oops-on-re-insertion-of-rpcsec_gss-modules.patch
+Status: RO
+Content-Length: 1334
+Lines: 42
+
+
+From: J. Bruce Fields <bfields@citi.umich.edu>
+
+The handling of the re-registration case is wrong here; the "test" that was
+returned from auth_domain_lookup will not be used again, so that reference
+should be put.  And auth_domain_lookup never did anything with "new" in
+this case, so we should just clean it up ourself.
+
+Thanks to Akinobu Mita for bug report, analysis, and testing.
+
+Cc: Akinobu Mita <akinobu.mita@gmail.com>
+Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
+Cc: Neil Brown <neilb@suse.de>
+Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sunrpc/auth_gss/svcauth_gss.c |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/net/sunrpc/auth_gss/svcauth_gss.c
++++ b/net/sunrpc/auth_gss/svcauth_gss.c
+@@ -760,11 +760,12 @@ svcauth_gss_register_pseudoflavor(u32 ps
+       new->h.flavour = &svcauthops_gss;
+       new->pseudoflavor = pseudoflavor;
++      stat = 0;
+       test = auth_domain_lookup(name, &new->h);
+-      if (test != &new->h) { /* XXX Duplicate registration? */
+-              auth_domain_put(&new->h);
+-              /* dangling ref-count... */
+-              goto out;
++      if (test != &new->h) { /* Duplicate registration */
++              auth_domain_put(test);
++              kfree(new->h.name);
++              goto out_free_dom;
+       }
+       return 0;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204127.194416978@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:44 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Linus Torvalds <torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Milan Broz <mbroz@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [2.6.22.2 review 70/84] dm raid1: fix status
+Content-Disposition: inline; filename=dm-raid1-fix-status.patch
+Status: RO
+Content-Length: 1019
+Lines: 35
+
+
+From: Milan Broz <mbroz@redhat.com>
+
+Fix mirror status line broken in dm-log-report-fault-status.patch:
+  - space missing between two words
+  - placeholder ("0") required for compatibility with a subsequent patch
+  - incorrect offset parameter
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-raid1.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/md/dm-raid1.c
++++ b/drivers/md/dm-raid1.c
+@@ -1288,12 +1288,12 @@ static int mirror_status(struct dm_targe
+               for (m = 0; m < ms->nr_mirrors; m++)
+                       DMEMIT("%s ", ms->mirror[m].dev->name);
+-              DMEMIT("%llu/%llu",
++              DMEMIT("%llu/%llu 0 ",
+                       (unsigned long long)ms->rh.log->type->
+                               get_sync_count(ms->rh.log),
+                       (unsigned long long)ms->nr_regions);
+-              sz = ms->rh.log->type->status(ms->rh.log, type, result, maxlen);
++              sz += ms->rh.log->type->status(ms->rh.log, type, result+sz, maxlen-sz);
+               break;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204127.350601175@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:45 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Linus Torvalds <torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "Junichi Nomura" <j-nomura@ce.jp.nec.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [2.6.22.2 review 71/84] dm io: fix another panic on large request
+Content-Disposition: inline; filename=dm-io-fix-panic-on-large-request-2.patch
+Status: RO
+Content-Length: 1032
+Lines: 30
+
+
+From: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
+
+bio_alloc_bioset() will return NULL if 'num_vecs' is too large.
+Use bio_get_nr_vecs() to get estimation of maximum number.
+
+Signed-off-by: Junichi Nomura <j-nomura@ce.jp.nec.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-io.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/dm-io.c
++++ b/drivers/md/dm-io.c
+@@ -293,7 +293,10 @@ static void do_region(int rw, unsigned i
+                * bvec for bio_get/set_region() and decrement bi_max_vecs
+                * to hide it from bio_add_page().
+                */
+-              num_bvecs = (remaining / (PAGE_SIZE >> SECTOR_SHIFT)) + 2;
++              num_bvecs = dm_sector_div_up(remaining,
++                                           (PAGE_SIZE >> SECTOR_SHIFT));
++              num_bvecs = 1 + min_t(int, bio_get_nr_vecs(where->bdev),
++                                    num_bvecs);
+               bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
+               bio->bi_sector = where->sector + (where->count - remaining);
+               bio->bi_bdev = where->bdev;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204127.515016915@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:46 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Linus Torvalds <torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Milan Broz <mbroz@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [2.6.22.2 review 72/84] dm snapshot: permit invalid activation
+Content-Disposition: inline; filename=dm-snapshot-permit-invalid-activation.patch
+Status: RO
+Content-Length: 1619
+Lines: 64
+
+
+From: Milan Broz <mbroz@redhat.com>
+
+Allow invalid snapshots to be activated instead of failing.
+
+This allows userspace to reinstate any given snapshot state - for
+example after an unscheduled reboot - and clean up the invalid snapshot
+at its leisure.
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/md/dm-exception-store.c |   11 ++++++-----
+ drivers/md/dm-snap.c            |    5 ++++-
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+--- a/drivers/md/dm-exception-store.c
++++ b/drivers/md/dm-exception-store.c
+@@ -457,11 +457,6 @@ static int persistent_read_metadata(stru
+               /*
+                * Sanity checks.
+                */
+-              if (!ps->valid) {
+-                      DMWARN("snapshot is marked invalid");
+-                      return -EINVAL;
+-              }
+-
+               if (ps->version != SNAPSHOT_DISK_VERSION) {
+                       DMWARN("unable to handle snapshot disk version %d",
+                              ps->version);
+@@ -469,6 +464,12 @@ static int persistent_read_metadata(stru
+               }
+               /*
++               * Metadata are valid, but snapshot is invalidated
++               */
++              if (!ps->valid)
++                      return 1;
++
++              /*
+                * Read the metadata.
+                */
+               r = read_exceptions(ps);
+--- a/drivers/md/dm-snap.c
++++ b/drivers/md/dm-snap.c
+@@ -522,9 +522,12 @@ static int snapshot_ctr(struct dm_target
+       /* Metadata must only be loaded into one table at once */
+       r = s->store.read_metadata(&s->store);
+-      if (r) {
++      if (r < 0) {
+               ti->error = "Failed to read snapshot metadata";
+               goto bad6;
++      } else if (r > 0) {
++              s->valid = 0;
++              DMWARN("Snapshot is marked invalid.");
+       }
+       bio_list_init(&s->queued_bios);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204127.642042812@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:47 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Linus Torvalds <torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Bader <shbader@de.ibm.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [2.6.22.2 review 73/84] dm: disable barriers
+Content-Disposition: inline; filename=dm-disable-barriers.patch
+Status: RO
+Content-Length: 2512
+Lines: 86
+
+
+From: Stefan Bader <shbader@de.ibm.com>
+
+This patch causes device-mapper to reject any barrier requests.  This is done
+since most of the targets won't handle this correctly anyway.  So until the
+situation improves it is better to reject these requests at the first place.
+Since barrier requests won't get to the targets, the checks there can be
+removed.
+
+Signed-off-by: Stefan Bader <shbader@de.ibm.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-crypt.c |    3 ---
+ drivers/md/dm-mpath.c |    3 ---
+ drivers/md/dm-snap.c  |    6 ------
+ drivers/md/dm.c       |    9 +++++++++
+ 4 files changed, 9 insertions(+), 12 deletions(-)
+
+--- a/drivers/md/dm-crypt.c
++++ b/drivers/md/dm-crypt.c
+@@ -943,9 +943,6 @@ static int crypt_map(struct dm_target *t
+       struct crypt_config *cc = ti->private;
+       struct crypt_io *io;
+-      if (bio_barrier(bio))
+-              return -EOPNOTSUPP;
+-
+       io = mempool_alloc(cc->io_pool, GFP_NOIO);
+       io->target = ti;
+       io->base_bio = bio;
+--- a/drivers/md/dm-mpath.c
++++ b/drivers/md/dm-mpath.c
+@@ -798,9 +798,6 @@ static int multipath_map(struct dm_targe
+       struct mpath_io *mpio;
+       struct multipath *m = (struct multipath *) ti->private;
+-      if (bio_barrier(bio))
+-              return -EOPNOTSUPP;
+-
+       mpio = mempool_alloc(m->mpio_pool, GFP_NOIO);
+       dm_bio_record(&mpio->details, bio);
+--- a/drivers/md/dm-snap.c
++++ b/drivers/md/dm-snap.c
+@@ -887,9 +887,6 @@ static int snapshot_map(struct dm_target
+       if (!s->valid)
+               return -EIO;
+-      if (unlikely(bio_barrier(bio)))
+-              return -EOPNOTSUPP;
+-
+       /* FIXME: should only take write lock if we need
+        * to copy an exception */
+       down_write(&s->lock);
+@@ -1160,9 +1157,6 @@ static int origin_map(struct dm_target *
+       struct dm_dev *dev = (struct dm_dev *) ti->private;
+       bio->bi_bdev = dev->bdev;
+-      if (unlikely(bio_barrier(bio)))
+-              return -EOPNOTSUPP;
+-
+       /* Only tell snapshots if this is a write */
+       return (bio_rw(bio) == WRITE) ? do_origin(dev, bio) : DM_MAPIO_REMAPPED;
+ }
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -802,6 +802,15 @@ static int dm_request(request_queue_t *q
+       int rw = bio_data_dir(bio);
+       struct mapped_device *md = q->queuedata;
++      /*
++       * There is no use in forwarding any barrier request since we can't
++       * guarantee it is (or can be) handled by the targets correctly.
++       */
++      if (unlikely(bio_barrier(bio))) {
++              bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
++              return 0;
++      }
++
+       down_read(&md->io_lock);
+       disk_stat_inc(dm_disk(md), ios[rw]);
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:27 2007
+Message-Id: <20070807204127.841844675@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:48 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ thomas@tungstengraphics.com,
+ jesper.juhl@gmail.com,
+ alanh@tungstengraphics.com
+Subject: [2.6.22.2 review 74/84] cr_backlight_probe() allocates too little storage for struct cr_panel
+Content-Disposition: inline; filename=cr_backlight_probe-allocates-too-little-storage-for-struct-cr_panel.patch
+Status: RO
+Content-Length: 831
+Lines: 29
+
+
+From: Jesper Juhl <jesper.juhl@gmail.com>
+
+The Coverity checker noticed that we allocate too little storage for
+"struct cr_panel *crp" in cr_backlight_probe().
+
+Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
+Cc: Thomas Hellstrom <thomas@tungstengraphics.com>
+Cc: Alan Hourihane <alanh@tungstengraphics.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/backlight/cr_bllcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/video/backlight/cr_bllcd.c
++++ b/drivers/video/backlight/cr_bllcd.c
+@@ -174,7 +174,7 @@ static int cr_backlight_probe(struct pla
+       struct cr_panel *crp;
+       u8 dev_en;
+-      crp = kzalloc(sizeof(crp), GFP_KERNEL);
++      crp = kzalloc(sizeof(*crp), GFP_KERNEL);
+       if (crp == NULL)
+               return -ENOMEM;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204127.988998159@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Len Brown <len.brown@intel.com>,
+ Kristen Carlson Accardi <kristen.c.accardi@intel.com>
+Subject: [2.6.22.2 review 75/84] ACPI: dock: fix opps after dock driver fails to initialize
+Content-Disposition: inline; filename=acpi-dock-fix-opps-after-dock-driver-fails-to-initialize.patch
+Status: RO
+Content-Length: 2334
+Lines: 80
+
+
+From: Chuck Ebbert <cebbert@redhat.com>
+
+ACPI: dock: fix opps after dock driver fails to initialize
+
+The driver tests the dock_station pointer for nonnull
+to check whether it has initialized properly. But in
+some cases dock_station will be non-null after being
+freed when driver init fails. Fix by zeroing the
+pointer after freeing.
+
+Signed-off-by: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/dock.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/acpi/dock.c
++++ b/drivers/acpi/dock.c
+@@ -716,6 +716,7 @@ static int dock_add(acpi_handle handle)
+       if (ret) {
+               printk(KERN_ERR PREFIX "Error %d registering dock device\n", ret);
+               kfree(dock_station);
++              dock_station = NULL;
+               return ret;
+       }
+       ret = device_create_file(&dock_device.dev, &dev_attr_docked);
+@@ -723,6 +724,7 @@ static int dock_add(acpi_handle handle)
+               printk("Error %d adding sysfs file\n", ret);
+               platform_device_unregister(&dock_device);
+               kfree(dock_station);
++              dock_station = NULL;
+               return ret;
+       }
+       ret = device_create_file(&dock_device.dev, &dev_attr_undock);
+@@ -731,6 +733,7 @@ static int dock_add(acpi_handle handle)
+               device_remove_file(&dock_device.dev, &dev_attr_docked);
+               platform_device_unregister(&dock_device);
+               kfree(dock_station);
++              dock_station = NULL;
+               return ret;
+       }
+       ret = device_create_file(&dock_device.dev, &dev_attr_uid);
+@@ -738,6 +741,7 @@ static int dock_add(acpi_handle handle)
+               printk("Error %d adding sysfs file\n", ret);
+               platform_device_unregister(&dock_device);
+               kfree(dock_station);
++              dock_station = NULL;
+               return ret;
+       }
+@@ -750,6 +754,7 @@ static int dock_add(acpi_handle handle)
+       dd = alloc_dock_dependent_device(handle);
+       if (!dd) {
+               kfree(dock_station);
++              dock_station = NULL;
+               ret = -ENOMEM;
+               goto dock_add_err_unregister;
+       }
+@@ -777,6 +782,7 @@ dock_add_err_unregister:
+       device_remove_file(&dock_device.dev, &dev_attr_undock);
+       platform_device_unregister(&dock_device);
+       kfree(dock_station);
++      dock_station = NULL;
+       return ret;
+ }
+@@ -810,6 +816,7 @@ static int dock_remove(void)
+       /* free dock station memory */
+       kfree(dock_station);
++      dock_station = NULL;
+       return 0;
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204128.145016543@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Marcel Holtmann <marcel@holtmann.org>
+Subject: [2.6.22.2 review 76/84] Hangup TTY before releasing rfcomm_dev
+Content-Disposition: inline; filename=hangup-tty-before-releasing-rfcomm_dev.patch
+Status: RO
+Content-Length: 937
+Lines: 32
+
+From: Mikko Rapeli <mikko.rapeli@iki.fi>
+
+The core problem is that RFCOMM socket layer ioctl can release
+rfcomm_dev struct while RFCOMM TTY layer is still actively using
+it. Calling tty_vhangup() is needed for a synchronous hangup before
+rfcomm_dev is freed.
+
+Addresses the oops at http://bugzilla.kernel.org/show_bug.cgi?id=7509
+
+Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/bluetooth/rfcomm/tty.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/net/bluetooth/rfcomm/tty.c
++++ b/net/bluetooth/rfcomm/tty.c
+@@ -383,6 +383,10 @@ static int rfcomm_release_dev(void __use
+       if (req.flags & (1 << RFCOMM_HANGUP_NOW))
+               rfcomm_dlc_close(dev->dlc, 0);
++      /* Shut down TTY synchronously before freeing rfcomm_dev */
++      if (dev->tty)
++              tty_vhangup(dev->tty);
++
+       rfcomm_dev_del(dev);
+       rfcomm_dev_put(dev);
+       return 0;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204128.331325977@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ville Tervo <ville.tervo@nokia.com>,
+ Marcel Holtmann <marcel@holtmann.org>
+Subject: [2.6.22.2 review 77/84] Keep rfcomm_dev on the list until it is freed
+Content-Disposition: inline; filename=keep-rfcomm_dev-on-the-list-until-it-is-freed.patch
+Status: RO
+Content-Length: 3030
+Lines: 108
+
+From: Ville Tervo <ville.tervo@nokia.com>
+
+This patch changes the RFCOMM TTY release process so that the TTY is kept
+on the list until it is really freed. A new device flag is used to keep
+track of released TTYs.
+
+Signed-off-by: Ville Tervo <ville.tervo@nokia.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/net/bluetooth/rfcomm.h |    1 +
+ net/bluetooth/rfcomm/tty.c     |   30 ++++++++++++++++++++++--------
+ 2 files changed, 23 insertions(+), 8 deletions(-)
+
+--- a/include/net/bluetooth/rfcomm.h
++++ b/include/net/bluetooth/rfcomm.h
+@@ -323,6 +323,7 @@ int  rfcomm_connect_ind(struct rfcomm_se
+ #define RFCOMM_RELEASE_ONHUP  1
+ #define RFCOMM_HANGUP_NOW     2
+ #define RFCOMM_TTY_ATTACHED   3
++#define RFCOMM_TTY_RELEASED   4
+ struct rfcomm_dev_req {
+       s16      dev_id;
+--- a/net/bluetooth/rfcomm/tty.c
++++ b/net/bluetooth/rfcomm/tty.c
+@@ -95,6 +95,10 @@ static void rfcomm_dev_destruct(struct r
+       BT_DBG("dev %p dlc %p", dev, dlc);
++      write_lock_bh(&rfcomm_dev_lock);
++      list_del_init(&dev->list);
++      write_unlock_bh(&rfcomm_dev_lock);
++
+       rfcomm_dlc_lock(dlc);
+       /* Detach DLC if it's owned by this dev */
+       if (dlc->owner == dev)
+@@ -156,8 +160,13 @@ static inline struct rfcomm_dev *rfcomm_
+       read_lock(&rfcomm_dev_lock);
+       dev = __rfcomm_dev_get(id);
+-      if (dev)
+-              rfcomm_dev_hold(dev);
++
++      if (dev) {
++              if (test_bit(RFCOMM_TTY_RELEASED, &dev->flags))
++                      dev = NULL;
++              else
++                      rfcomm_dev_hold(dev);
++      }
+       read_unlock(&rfcomm_dev_lock);
+@@ -265,6 +274,12 @@ out:
+       dev->tty_dev = tty_register_device(rfcomm_tty_driver, dev->id, NULL);
++      if (IS_ERR(dev->tty_dev)) {
++              list_del(&dev->list);
++              kfree(dev);
++              return PTR_ERR(dev->tty_dev);
++      }
++
+       return dev->id;
+ }
+@@ -272,10 +287,7 @@ static void rfcomm_dev_del(struct rfcomm
+ {
+       BT_DBG("dev %p", dev);
+-      write_lock_bh(&rfcomm_dev_lock);
+-      list_del_init(&dev->list);
+-      write_unlock_bh(&rfcomm_dev_lock);
+-
++      set_bit(RFCOMM_TTY_RELEASED, &dev->flags);
+       rfcomm_dev_put(dev);
+ }
+@@ -329,7 +341,7 @@ static int rfcomm_create_dev(struct sock
+       if (copy_from_user(&req, arg, sizeof(req)))
+               return -EFAULT;
+-      BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags);
++      BT_DBG("sk %p dev_id %d flags 0x%x", sk, req.dev_id, req.flags);
+       if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN))
+               return -EPERM;
+@@ -370,7 +382,7 @@ static int rfcomm_release_dev(void __use
+       if (copy_from_user(&req, arg, sizeof(req)))
+               return -EFAULT;
+-      BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags);
++      BT_DBG("dev_id %d flags 0x%x", req.dev_id, req.flags);
+       if (!(dev = rfcomm_dev_get(req.dev_id)))
+               return -ENODEV;
+@@ -419,6 +431,8 @@ static int rfcomm_get_dev_list(void __us
+       list_for_each(p, &rfcomm_dev_list) {
+               struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list);
++              if (test_bit(RFCOMM_TTY_RELEASED, &dev->flags))
++                      continue;
+               (di + n)->id      = dev->id;
+               (di + n)->flags   = dev->flags;
+               (di + n)->state   = dev->dlc->state;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204128.466674076@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Netfilter Development Mailinglist <netfilter-devel@lists.netfilter.org>,
+ "David S. Miller" <davem@davemloft.net>,
+ Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>,
+ Adrian Bunk <bunk@stusta.de>,
+ Patrick McHardy <kaber@trash.net>
+Subject: [2.6.22.2 review 78/84] nf_conntrack: dont track locally generated special ICMP error
+Content-Disposition: inline; filename=nf_conntrack-don-t-track-locally-generated-special-icmp-error.patch
+Status: RO
+Content-Length: 2248
+Lines: 65
+
+From: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
+
+[NETFILTER]: nf_conntrack: don't track locally generated special ICMP error
+
+The conntrack assigned to locally generated ICMP error is usually the one
+assigned to the original packet which has caused the error. But if
+the original packet is handled as invalid by nf_conntrack, no conntrack
+is assigned to the original packet. Then nf_ct_attach() cannot assign
+any conntrack to the ICMP error packet. In that case the current
+nf_conntrack_icmp assigns appropriate conntrack to it. But the current
+code mistakes the direction of the packet. As a result, NAT code mistakes
+the address to be mangled.
+
+To fix the bug, this changes nf_conntrack_icmp not to assign conntrack
+to such ICMP error. Actually no address is necessary to be mangled
+in this case.
+
+Spotted by Jordan Russell.
+
+Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
+
+Upstream commit ID: 130e7a83d7ec8c5c673225e0fa8ea37b1ed507a5
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/netfilter/nf_conntrack_proto_icmp.c |   22 +++++-----------------
+ 1 file changed, 5 insertions(+), 17 deletions(-)
+
+--- a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
++++ b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
+@@ -189,25 +189,13 @@ icmp_error_message(struct sk_buff *skb,
+       h = nf_conntrack_find_get(&innertuple, NULL);
+       if (!h) {
+-              /* Locally generated ICMPs will match inverted if they
+-                 haven't been SNAT'ed yet */
+-              /* FIXME: NAT code has to handle half-done double NAT --RR */
+-              if (hooknum == NF_IP_LOCAL_OUT)
+-                      h = nf_conntrack_find_get(&origtuple, NULL);
+-
+-              if (!h) {
+-                      DEBUGP("icmp_error_message: no match\n");
+-                      return -NF_ACCEPT;
+-              }
+-
+-              /* Reverse direction from that found */
+-              if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
+-                      *ctinfo += IP_CT_IS_REPLY;
+-      } else {
+-              if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
+-                      *ctinfo += IP_CT_IS_REPLY;
++              DEBUGP("icmp_error_message: no match\n");
++              return -NF_ACCEPT;
+       }
++      if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
++              *ctinfo += IP_CT_IS_REPLY;
++
+       /* Update skb to refer to this connection */
+       skb->nfct = &nf_ct_tuplehash_to_ctrack(h)->ct_general;
+       skb->nfctinfo = *ctinfo;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204128.669003009@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>,
+ Marcus Meissner <meissner@suse.de>
+Subject: [2.6.22.2 review 79/84] IPV6: /proc/net/anycast6 unbalanced inet6_dev refcnt
+Content-Disposition: inline; filename=proc-net-anycast6-unbalanced-inet6_dev-refcnt.patch
+Status: RO
+Content-Length: 677
+Lines: 26
+
+From: David Stevens <dlstevens@us.ibm.com>
+
+Reading /proc/net/anycast6 when there is no anycast address
+on an interface results in an ever-increasing inet6_dev reference
+count, as well as a reference to the netdevice you can't get rid of.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Marcus Meissner <meissner@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/anycast.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/net/ipv6/anycast.c
++++ b/net/ipv6/anycast.c
+@@ -66,6 +66,7 @@ ip6_onlink(struct in6_addr *addr, struct
+                               break;
+               }
+               read_unlock_bh(&idev->lock);
++              in6_dev_put(idev);
+       }
+       rcu_read_unlock();
+       return onlink;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:28 2007
+Message-Id: <20070807204128.819174646@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:54 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [2.6.22.2 review 80/84] sysfs: release mutex when kmalloc() failed in sysfs_open_file().
+Content-Disposition: inline; filename=sysfs-release-mutex-when-kmalloc-failed-in-sysfs_open_file.patch
+Status: RO
+Content-Length: 527
+Lines: 24
+
+
+From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+
+
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ fs/sysfs/file.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/sysfs/file.c
++++ b/fs/sysfs/file.c
+@@ -283,6 +283,7 @@ static int sysfs_open_file(struct inode 
+       mutex_lock(&inode->i_mutex);
+       if (!(set = inode->i_private)) {
+               if (!(set = inode->i_private = kmalloc(sizeof(struct sysfs_buffer_collection), GFP_KERNEL))) {
++                      mutex_unlock(&inode->i_mutex);
+                       error = -ENOMEM;
+                       goto Done;
+               } else {
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:29 2007
+Message-Id: <20070807204128.954427755@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Netfilter Development Mailinglist <netfilter-devel@lists.netfilter.org>,
+ "David S. Miller" <davem@davemloft.net>,
+ Patrick McHardy <kaber@trash.net>
+Subject: [2.6.22.2 review 81/84] Netfilter: Fix logging regression
+Content-Disposition: inline; filename=netfilter-fix-logging-regression.patch
+Status: RO
+Content-Length: 2604
+Lines: 85
+
+From: Patrick McHardy <kaber@trash.net>
+
+[NETFILTER]: Fix logging regression
+
+Loading one of the LOG target fails if a different target has already
+registered itself as backend for the same family. This can affect the
+ipt_LOG and ipt_ULOG modules when both are loaded.
+
+Reported and tested by: <t.artem@mailcity.com>
+Upstream-commit: 7e2acc7e
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/bridge/netfilter/ebt_log.c  |    6 ++----
+ net/bridge/netfilter/ebt_ulog.c |    8 ++------
+ net/ipv4/netfilter/ipt_LOG.c    |    6 ++----
+ net/ipv6/netfilter/ip6t_LOG.c   |    6 ++----
+ 4 files changed, 8 insertions(+), 18 deletions(-)
+
+--- a/net/bridge/netfilter/ebt_log.c
++++ b/net/bridge/netfilter/ebt_log.c
+@@ -196,10 +196,8 @@ static int __init ebt_log_init(void)
+       ret = ebt_register_watcher(&log);
+       if (ret < 0)
+               return ret;
+-      ret = nf_log_register(PF_BRIDGE, &ebt_log_logger);
+-      if (ret < 0 && ret != -EEXIST)
+-              ebt_unregister_watcher(&log);
+-      return ret;
++      nf_log_register(PF_BRIDGE, &ebt_log_logger);
++      return 0;
+ }
+ static void __exit ebt_log_fini(void)
+--- a/net/bridge/netfilter/ebt_ulog.c
++++ b/net/bridge/netfilter/ebt_ulog.c
+@@ -308,12 +308,8 @@ static int __init ebt_ulog_init(void)
+       else if ((ret = ebt_register_watcher(&ulog)))
+               sock_release(ebtulognl->sk_socket);
+-      if (nf_log_register(PF_BRIDGE, &ebt_ulog_logger) < 0) {
+-              printk(KERN_WARNING "ebt_ulog: not logging via ulog "
+-                     "since somebody else already registered for PF_BRIDGE\n");
+-              /* we cannot make module load fail here, since otherwise
+-               * ebtables userspace would abort */
+-      }
++      if (ret == 0)
++              nf_log_register(PF_BRIDGE, &ebt_ulog_logger);
+       return ret;
+ }
+--- a/net/ipv4/netfilter/ipt_LOG.c
++++ b/net/ipv4/netfilter/ipt_LOG.c
+@@ -477,10 +477,8 @@ static int __init ipt_log_init(void)
+       ret = xt_register_target(&ipt_log_reg);
+       if (ret < 0)
+               return ret;
+-      ret = nf_log_register(PF_INET, &ipt_log_logger);
+-      if (ret < 0 && ret != -EEXIST)
+-              xt_unregister_target(&ipt_log_reg);
+-      return ret;
++      nf_log_register(PF_INET, &ipt_log_logger);
++      return 0;
+ }
+ static void __exit ipt_log_fini(void)
+--- a/net/ipv6/netfilter/ip6t_LOG.c
++++ b/net/ipv6/netfilter/ip6t_LOG.c
+@@ -490,10 +490,8 @@ static int __init ip6t_log_init(void)
+       ret = xt_register_target(&ip6t_log_reg);
+       if (ret < 0)
+               return ret;
+-      ret = nf_log_register(PF_INET6, &ip6t_logger);
+-      if (ret < 0 && ret != -EEXIST)
+-              xt_unregister_target(&ip6t_log_reg);
+-      return ret;
++      nf_log_register(PF_INET6, &ip6t_logger);
++      return 0;
+ }
+ static void __exit ip6t_log_fini(void)
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:29 2007
+Message-Id: <20070807204129.106003212@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41: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>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oliver Neukum <oneukum@suse.de>
+Subject: [2.6.22.2 review 82/84] USB: fix for ftdi_sio quirk handling
+Content-Disposition: inline; filename=usb-fix-for-ftdi_sio-quirk-handling.patch
+Status: RO
+Content-Length: 7219
+Lines: 200
+
+From: Oliver Neukum <oliver@neukum.org>
+
+this one fixes an oops with quirky ftdi_sio devices. As it fixes a
+regression, I propose that it be included in 2.6.22
+
+Signed-off-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |  104 +++++++++++++++++-------------------------
+ 1 file changed, 44 insertions(+), 60 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -271,26 +271,58 @@ static int debug;
+ static __u16 vendor = FTDI_VID;
+ static __u16 product;
++struct ftdi_private {
++      ftdi_chip_type_t chip_type;
++                              /* type of the device, either SIO or FT8U232AM */
++      int baud_base;          /* baud base clock for divisor setting */
++      int custom_divisor;     /* custom_divisor kludge, this is for baud_base (different from what goes to the chip!) */
++      __u16 last_set_data_urb_value ;
++                              /* the last data state set - needed for doing a break */
++        int write_offset;       /* This is the offset in the usb data block to write the serial data -
++                               * it is different between devices
++                               */
++      int flags;              /* some ASYNC_xxxx flags are supported */
++      unsigned long last_dtr_rts;     /* saved modem control outputs */
++        wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
++      char prev_status, diff_status;        /* Used for TIOCMIWAIT */
++      __u8 rx_flags;          /* receive state flags (throttling) */
++      spinlock_t rx_lock;     /* spinlock for receive state */
++      struct delayed_work rx_work;
++      struct usb_serial_port *port;
++      int rx_processed;
++      unsigned long rx_bytes;
++
++      __u16 interface;        /* FT2232C port interface (0 for FT232/245) */
++
++      int force_baud;         /* if non-zero, force the baud rate to this value */
++      int force_rtscts;       /* if non-zero, force RTS-CTS to always be enabled */
++
++      spinlock_t tx_lock;     /* spinlock for transmit state */
++      unsigned long tx_bytes;
++      unsigned long tx_outstanding_bytes;
++      unsigned long tx_outstanding_urbs;
++};
++
+ /* struct ftdi_sio_quirk is used by devices requiring special attention. */
+ struct ftdi_sio_quirk {
+       int (*probe)(struct usb_serial *);
+-      void (*setup)(struct usb_serial *); /* Special settings during startup. */
++      void (*port_probe)(struct ftdi_private *); /* Special settings for probed ports. */
+ };
+ static int   ftdi_olimex_probe                (struct usb_serial *serial);
+-static void  ftdi_USB_UIRT_setup      (struct usb_serial *serial);
+-static void  ftdi_HE_TIRA1_setup      (struct usb_serial *serial);
++static void  ftdi_USB_UIRT_setup      (struct ftdi_private *priv);
++static void  ftdi_HE_TIRA1_setup      (struct ftdi_private *priv);
+ static struct ftdi_sio_quirk ftdi_olimex_quirk = {
+       .probe  = ftdi_olimex_probe,
+ };
+ static struct ftdi_sio_quirk ftdi_USB_UIRT_quirk = {
+-      .setup = ftdi_USB_UIRT_setup,
++      .port_probe = ftdi_USB_UIRT_setup,
+ };
+ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
+-      .setup = ftdi_HE_TIRA1_setup,
++      .port_probe = ftdi_HE_TIRA1_setup,
+ };
+ /*
+@@ -567,38 +599,6 @@ static const char *ftdi_chip_name[] = {
+ #define THROTTLED             0x01
+ #define ACTUALLY_THROTTLED    0x02
+-struct ftdi_private {
+-      ftdi_chip_type_t chip_type;
+-                              /* type of the device, either SIO or FT8U232AM */
+-      int baud_base;          /* baud base clock for divisor setting */
+-      int custom_divisor;     /* custom_divisor kludge, this is for baud_base (different from what goes to the chip!) */
+-      __u16 last_set_data_urb_value ;
+-                              /* the last data state set - needed for doing a break */
+-        int write_offset;       /* This is the offset in the usb data block to write the serial data -
+-                               * it is different between devices
+-                               */
+-      int flags;              /* some ASYNC_xxxx flags are supported */
+-      unsigned long last_dtr_rts;     /* saved modem control outputs */
+-        wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
+-      char prev_status, diff_status;        /* Used for TIOCMIWAIT */
+-      __u8 rx_flags;          /* receive state flags (throttling) */
+-      spinlock_t rx_lock;     /* spinlock for receive state */
+-      struct delayed_work rx_work;
+-      struct usb_serial_port *port;
+-      int rx_processed;
+-      unsigned long rx_bytes;
+-
+-      __u16 interface;        /* FT2232C port interface (0 for FT232/245) */
+-
+-      int force_baud;         /* if non-zero, force the baud rate to this value */
+-      int force_rtscts;       /* if non-zero, force RTS-CTS to always be enabled */
+-
+-      spinlock_t tx_lock;     /* spinlock for transmit state */
+-      unsigned long tx_bytes;
+-      unsigned long tx_outstanding_bytes;
+-      unsigned long tx_outstanding_urbs;
+-};
+-
+ /* Used for TIOCMIWAIT */
+ #define FTDI_STATUS_B0_MASK   (FTDI_RS0_CTS | FTDI_RS0_DSR | FTDI_RS0_RI | FTDI_RS0_RLSD)
+ #define FTDI_STATUS_B1_MASK   (FTDI_RS_BI)
+@@ -609,7 +609,6 @@ struct ftdi_private {
+ /* function prototypes for a FTDI serial converter */
+ static int  ftdi_sio_probe    (struct usb_serial *serial, const struct usb_device_id *id);
+-static int  ftdi_sio_attach           (struct usb_serial *serial);
+ static void ftdi_shutdown             (struct usb_serial *serial);
+ static int  ftdi_sio_port_probe       (struct usb_serial_port *port);
+ static int  ftdi_sio_port_remove      (struct usb_serial_port *port);
+@@ -663,7 +662,6 @@ static struct usb_serial_driver ftdi_sio
+       .ioctl =                ftdi_ioctl,
+       .set_termios =          ftdi_set_termios,
+       .break_ctl =            ftdi_break_ctl,
+-      .attach =               ftdi_sio_attach,
+       .shutdown =             ftdi_shutdown,
+ };
+@@ -1198,6 +1196,8 @@ static int ftdi_sio_probe (struct usb_se
+ static int ftdi_sio_port_probe(struct usb_serial_port *port)
+ {
+       struct ftdi_private *priv;
++      struct ftdi_sio_quirk *quirk = usb_get_serial_data(port->serial);
++
+       dbg("%s",__FUNCTION__);
+@@ -1214,6 +1214,9 @@ static int ftdi_sio_port_probe(struct us
+          than queue a task to deliver them */
+       priv->flags = ASYNC_LOW_LATENCY;
++      if (quirk && quirk->port_probe)
++              quirk->port_probe(priv);
++
+       /* Increase the size of read buffers */
+       kfree(port->bulk_in_buffer);
+       port->bulk_in_buffer = kmalloc (BUFSZ, GFP_KERNEL);
+@@ -1244,29 +1247,13 @@ static int ftdi_sio_port_probe(struct us
+       return 0;
+ }
+-/* attach subroutine */
+-static int ftdi_sio_attach (struct usb_serial *serial)
+-{
+-      /* Check for device requiring special set up. */
+-      struct ftdi_sio_quirk *quirk = usb_get_serial_data(serial);
+-
+-      if (quirk && quirk->setup)
+-              quirk->setup(serial);
+-
+-      return 0;
+-} /* ftdi_sio_attach */
+-
+-
+ /* Setup for the USB-UIRT device, which requires hardwired
+  * baudrate (38400 gets mapped to 312500) */
+ /* Called from usbserial:serial_probe */
+-static void ftdi_USB_UIRT_setup (struct usb_serial *serial)
++static void ftdi_USB_UIRT_setup (struct ftdi_private *priv)
+ {
+-      struct ftdi_private *priv;
+-
+       dbg("%s",__FUNCTION__);
+-      priv = usb_get_serial_port_data(serial->port[0]);
+       priv->flags |= ASYNC_SPD_CUST;
+       priv->custom_divisor = 77;
+       priv->force_baud = B38400;
+@@ -1274,13 +1261,10 @@ static void ftdi_USB_UIRT_setup (struct 
+ /* Setup for the HE-TIRA1 device, which requires hardwired
+  * baudrate (38400 gets mapped to 100000) and RTS-CTS enabled.  */
+-static void ftdi_HE_TIRA1_setup (struct usb_serial *serial)
++static void ftdi_HE_TIRA1_setup (struct ftdi_private *priv)
+ {
+-      struct ftdi_private *priv;
+-
+       dbg("%s",__FUNCTION__);
+-      priv = usb_get_serial_port_data(serial->port[0]);
+       priv->flags |= ASYNC_SPD_CUST;
+       priv->custom_divisor = 240;
+       priv->force_baud = B38400;
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:29 2007
+Message-Id: <20070807204129.257569659@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:57 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ torvalds@linux-foundation.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>,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ gmurray@webwayone.co.uk,
+ jirislaby@gmail.com
+Subject: [2.6.22.2 review 83/84] sx: switch subven and subid values
+Content-Disposition: inline; filename=sx-switch-subven-and-subid-values.patch
+Status: RO
+Content-Length: 949
+Lines: 30
+
+
+From: Jiri Slaby <jirislaby@gmail.com>
+
+sx.c is failing to locate Graham's card.
+
+Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
+Cc: Graham Murray <gmurray@webwayone.co.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/sx.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/char/sx.c
++++ b/drivers/char/sx.c
+@@ -2721,9 +2721,9 @@ static void __devexit sx_pci_remove(stru
+    its because the standard requires it. So check for SUBVENDOR_ID. */
+ static struct pci_device_id sx_pci_tbl[] = {
+       { PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8,
+-              .subvendor = 0x0200,.subdevice = PCI_ANY_ID },
++              .subvendor = PCI_ANY_ID, .subdevice = 0x0200 },
+       { PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8,
+-              .subvendor = 0x0300,.subdevice = PCI_ANY_ID },
++              .subvendor = PCI_ANY_ID, .subdevice = 0x0300 },
+       { 0 }
+ };
+
+-- 
+
+From gregkh@mini.kroah.org Tue Aug  7 13:41:29 2007
+Message-Id: <20070807204129.414920341@mini.kroah.org>
+References: <20070807204034.882009319@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Tue, 07 Aug 2007 13:41:58 -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>,
+ 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: [2.6.22.2 review 84/84] UML: exports for hostfs
+Content-Disposition: inline; filename=uml-exports-for-hostfs.patch
+Status: RO
+Content-Length: 1912
+Lines: 62
+
+From: Jeff Dike <jdike@addtoit.com>
+
+Add some exports for hostfs that are required after Alberto Bertogli's
+fixes for accessing unlinked host files.
+
+Also did some style cleanups while I was here.
+
+Signed-off-by: Jeff Dike <jdike@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/um/os-Linux/user_syms.c |   20 ++++++++------------
+ 1 file changed, 8 insertions(+), 12 deletions(-)
+
+--- a/arch/um/os-Linux/user_syms.c
++++ b/arch/um/os-Linux/user_syms.c
+@@ -5,7 +5,8 @@
+  * so I *must* declare good prototypes for them and then EXPORT them.
+  * The kernel code uses the macro defined by include/linux/string.h,
+  * so I undef macros; the userspace code does not include that and I
+- * add an EXPORT for the glibc one.*/
++ * add an EXPORT for the glibc one.
++ */
+ #undef strlen
+ #undef strstr
+@@ -61,12 +62,18 @@ EXPORT_SYMBOL_PROTO(dup2);
+ EXPORT_SYMBOL_PROTO(__xstat);
+ EXPORT_SYMBOL_PROTO(__lxstat);
+ EXPORT_SYMBOL_PROTO(__lxstat64);
++EXPORT_SYMBOL_PROTO(__fxstat64);
+ EXPORT_SYMBOL_PROTO(lseek);
+ EXPORT_SYMBOL_PROTO(lseek64);
+ EXPORT_SYMBOL_PROTO(chown);
++EXPORT_SYMBOL_PROTO(fchown);
+ EXPORT_SYMBOL_PROTO(truncate);
++EXPORT_SYMBOL_PROTO(ftruncate64);
+ EXPORT_SYMBOL_PROTO(utime);
++EXPORT_SYMBOL_PROTO(utimes);
++EXPORT_SYMBOL_PROTO(futimes);
+ EXPORT_SYMBOL_PROTO(chmod);
++EXPORT_SYMBOL_PROTO(fchmod);
+ EXPORT_SYMBOL_PROTO(rename);
+ EXPORT_SYMBOL_PROTO(__xmknod);
+@@ -102,14 +109,3 @@ EXPORT_SYMBOL(__stack_smash_handler);
+ extern long __guard __attribute__((weak));
+ EXPORT_SYMBOL(__guard);
+-
+-/*
+- * Overrides for Emacs so that we follow Linus's tabbing style.
+- * Emacs will notice this stuff at the end of the file and automatically
+- * adjust the settings for this buffer only.  This must remain at the end
+- * of the file.
+- * ---------------------------------------------------------------------------
+- * Local variables:
+- * c-file-style: "linux"
+- * End:
+- */
+
+-- 
+
similarity index 100%
rename from queue-2.6.22/series
rename to review-2.6.22/series