]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Linux 2.6.28.9 v2.6.28.9
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 23 Mar 2009 21:56:38 +0000 (14:56 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 23 Mar 2009 21:56:38 +0000 (14:56 -0700)
46 files changed:
releases/2.6.28.9/add-fwrapv-to-gcc-cflags.patch [moved from queue-2.6.28/add-fwrapv-to-gcc-cflags.patch with 100% similarity]
releases/2.6.28.9/alsa-fix-vunmap-and-free-order-in-snd_free_sgbuf_pages.patch [moved from queue-2.6.28/alsa-fix-vunmap-and-free-order-in-snd_free_sgbuf_pages.patch with 100% similarity]
releases/2.6.28.9/alsa-hda-fix-dma-mask-for-ati-controllers.patch [moved from queue-2.6.28/alsa-hda-fix-dma-mask-for-ati-controllers.patch with 100% similarity]
releases/2.6.28.9/alsa-hda-workaround-for-buggy-dma-position-on-ati-controllers.patch [moved from queue-2.6.28/alsa-hda-workaround-for-buggy-dma-position-on-ati-controllers.patch with 100% similarity]
releases/2.6.28.9/alsa-mixart-fix-lock-imbalance.patch [moved from queue-2.6.28/alsa-mixart-fix-lock-imbalance.patch with 100% similarity]
releases/2.6.28.9/alsa-opl3sa2-fix-null-dereference-when-suspending-snd_opl3sa2.patch [moved from queue-2.6.28/alsa-opl3sa2-fix-null-dereference-when-suspending-snd_opl3sa2.patch with 100% similarity]
releases/2.6.28.9/alsa-pcm_oss-fix-locking-typo.patch [moved from queue-2.6.28/alsa-pcm_oss-fix-locking-typo.patch with 100% similarity]
releases/2.6.28.9/ata_piix-add-workaround-for-samsung-db-p70.patch [moved from queue-2.6.28/ata_piix-add-workaround-for-samsung-db-p70.patch with 100% similarity]
releases/2.6.28.9/build-fix-for-__early_pfn_to_nid-undefined-link-error.patch [moved from queue-2.6.28/build-fix-for-__early_pfn_to_nid-undefined-link-error.patch with 100% similarity]
releases/2.6.28.9/dm-crypt-fix-kcryptd_async_done-parameter.patch [moved from queue-2.6.28/dm-crypt-fix-kcryptd_async_done-parameter.patch with 100% similarity]
releases/2.6.28.9/dm-crypt-wait-for-endio-to-complete-before-destruction.patch [moved from queue-2.6.28/dm-crypt-wait-for-endio-to-complete-before-destruction.patch with 100% similarity]
releases/2.6.28.9/dm-io-respect-bio_max_pages-limit.patch [moved from queue-2.6.28/dm-io-respect-bio_max_pages-limit.patch with 100% similarity]
releases/2.6.28.9/dm-ioctl-validate-name-length-when-renaming.patch [moved from queue-2.6.28/dm-ioctl-validate-name-length-when-renaming.patch with 100% similarity]
releases/2.6.28.9/drm-i915-don-t-allow-objects-to-get-bound-while-vt-switched.patch [moved from queue-2.6.28/drm-i915-don-t-allow-objects-to-get-bound-while-vt-switched.patch with 100% similarity]
releases/2.6.28.9/drm-i915-don-t-double-unpin-buffers-if-we-take-a-signal-in-evict_everything.patch [moved from queue-2.6.28/drm-i915-don-t-double-unpin-buffers-if-we-take-a-signal-in-evict_everything.patch with 100% similarity]
releases/2.6.28.9/drm-i915-don-t-enable-vblanks-on-disabled-pipes.patch [moved from queue-2.6.28/drm-i915-don-t-enable-vblanks-on-disabled-pipes.patch with 100% similarity]
releases/2.6.28.9/drm-i915-don-t-print-to-dmesg-when-taking-signal-during-object_pin.patch [moved from queue-2.6.28/drm-i915-don-t-print-to-dmesg-when-taking-signal-during-object_pin.patch with 100% similarity]
releases/2.6.28.9/drm-i915-set-vblank-enabled-flag-correctly-across-irq-install-uninstall.patch [moved from queue-2.6.28/drm-i915-set-vblank-enabled-flag-correctly-across-irq-install-uninstall.patch with 100% similarity]
releases/2.6.28.9/ecryptfs-allocate-a-variable-number-of-pages-for-file-headers.patch [new file with mode: 0644]
releases/2.6.28.9/eventfd-remove-fput-call-from-possible-irq-context.patch [moved from queue-2.6.28/eventfd-remove-fput-call-from-possible-irq-context.patch with 100% similarity]
releases/2.6.28.9/fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch [moved from queue-2.6.28/fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch with 100% similarity]
releases/2.6.28.9/mbox [new file with mode: 0644]
releases/2.6.28.9/menu-fix-embedded-menu-snafu.patch [moved from queue-2.6.28/menu-fix-embedded-menu-snafu.patch with 100% similarity]
releases/2.6.28.9/move-cc-option-to-below-arch-specific-setup.patch [moved from queue-2.6.28/move-cc-option-to-below-arch-specific-setup.patch with 100% similarity]
releases/2.6.28.9/nfsd-nfsd-should-drop-cap_mknod-for-non-root.patch [moved from queue-2.6.28/nfsd-nfsd-should-drop-cap_mknod-for-non-root.patch with 100% similarity]
releases/2.6.28.9/nfsd-provide-encode-routine-for-op_openattr.patch [moved from queue-2.6.28/nfsd-provide-encode-routine-for-op_openattr.patch with 100% similarity]
releases/2.6.28.9/powerpc-remove-extra-semicolon-in-fsl_soc.c.patch [moved from queue-2.6.28/powerpc-remove-extra-semicolon-in-fsl_soc.c.patch with 100% similarity]
releases/2.6.28.9/s390-__div64_31-broken-for-config_march_g5.patch [moved from queue-2.6.28/s390-__div64_31-broken-for-config_march_g5.patch with 100% similarity]
releases/2.6.28.9/series [moved from queue-2.6.28/series with 97% similarity]
releases/2.6.28.9/thinkpad-acpi-fix-module-autoloading-for-older-models.patch [moved from queue-2.6.28/thinkpad-acpi-fix-module-autoloading-for-older-models.patch with 100% similarity]
releases/2.6.28.9/usb-add-device-id-for-option-gtm380-to-option-driver.patch [moved from queue-2.6.28/usb-add-device-id-for-option-gtm380-to-option-driver.patch with 100% similarity]
releases/2.6.28.9/usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch [moved from queue-2.6.28/usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch with 100% similarity]
releases/2.6.28.9/usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch [moved from queue-2.6.28/usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch with 100% similarity]
releases/2.6.28.9/usb-ehci-fix-isochronous-urb-leak.patch [moved from queue-2.6.28/usb-ehci-fix-isochronous-urb-leak.patch with 100% similarity]
releases/2.6.28.9/usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch [moved from queue-2.6.28/usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch with 100% similarity]
releases/2.6.28.9/usb-option.c-add-zte-622-modem-device.patch [moved from queue-2.6.28/usb-option.c-add-zte-622-modem-device.patch with 100% similarity]
releases/2.6.28.9/usb-serial-add-ftdi-usb-serial-converter-devices.patch [moved from queue-2.6.28/usb-serial-add-ftdi-usb-serial-converter-devices.patch with 100% similarity]
releases/2.6.28.9/usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch [moved from queue-2.6.28/usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch with 100% similarity]
releases/2.6.28.9/usb-serial-new-cp2101-device-id.patch [moved from queue-2.6.28/usb-serial-new-cp2101-device-id.patch with 100% similarity]
releases/2.6.28.9/usb-storage-unusual-usb-device-prolific-2507-variation-added.patch [moved from queue-2.6.28/usb-storage-unusual-usb-device-prolific-2507-variation-added.patch with 100% similarity]
releases/2.6.28.9/usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch [moved from queue-2.6.28/usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch with 100% similarity]
releases/2.6.28.9/usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch [moved from queue-2.6.28/usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch with 100% similarity]
releases/2.6.28.9/usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch [moved from queue-2.6.28/usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch with 100% similarity]
releases/2.6.28.9/usb-usbtmc-add-protocol-1-support.patch [moved from queue-2.6.28/usb-usbtmc-add-protocol-1-support.patch with 100% similarity]
releases/2.6.28.9/usb-usbtmc-fix-stupid-bug-in-open.patch [moved from queue-2.6.28/usb-usbtmc-fix-stupid-bug-in-open.patch with 100% similarity]
releases/2.6.28.9/v4l-dvb-cx23885-fix-oops-for-mixed-install-of-analog-and-digital-only-cards.patch [moved from queue-2.6.28/v4l-dvb-cx23885-fix-oops-for-mixed-install-of-analog-and-digital-only-cards.patch with 100% similarity]

diff --git a/releases/2.6.28.9/ecryptfs-allocate-a-variable-number-of-pages-for-file-headers.patch b/releases/2.6.28.9/ecryptfs-allocate-a-variable-number-of-pages-for-file-headers.patch
new file mode 100644 (file)
index 0000000..0efe846
--- /dev/null
@@ -0,0 +1,146 @@
+From 8faece5f906725c10e7a1f6caf84452abadbdc7b Mon Sep 17 00:00:00 2001
+From: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+Date: Fri, 20 Mar 2009 01:25:09 -0500
+Subject: eCryptfs: Allocate a variable number of pages for file headers
+
+From: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+
+commit 8faece5f906725c10e7a1f6caf84452abadbdc7b upstream.
+
+When allocating the memory used to store the eCryptfs header contents, a
+single, zeroed page was being allocated with get_zeroed_page().
+However, the size of an eCryptfs header is either PAGE_CACHE_SIZE or
+ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE (8192), whichever is larger, and is
+stored in the file's private_data->crypt_stat->num_header_bytes_at_front
+field.
+
+ecryptfs_write_metadata_to_contents() was using
+num_header_bytes_at_front to decide how many bytes should be written to
+the lower filesystem for the file header.  Unfortunately, at least 8K
+was being written from the page, despite the chance of the single,
+zeroed page being smaller than 8K.  This resulted in random areas of
+kernel memory being written between the 0x1000 and 0x1FFF bytes offsets
+in the eCryptfs file headers if PAGE_SIZE was 4K.
+
+This patch allocates a variable number of pages, calculated with
+num_header_bytes_at_front, and passes the number of allocated pages
+along to ecryptfs_write_metadata_to_contents().
+
+Thanks to Florian Streibelt for reporting the data leak and working with
+me to find the problem.  2.6.28 is the only kernel release with this
+vulnerability.  Corresponds to CVE-2009-0787
+
+Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+Acked-by: Dustin Kirkland <kirkland@canonical.com>
+Reviewed-by: Eric Sandeen <sandeen@redhat.com>
+Reviewed-by: Eugene Teo <eugeneteo@kernel.sg>
+Cc: dann frazier <dannf@dannf.org>
+Cc: Serge E. Hallyn <serue@us.ibm.com>
+Cc: Florian Streibelt <florian@f-streibelt.de>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ecryptfs/crypto.c |   39 ++++++++++++++++++++++++++-------------
+ 1 file changed, 26 insertions(+), 13 deletions(-)
+
+--- a/fs/ecryptfs/crypto.c
++++ b/fs/ecryptfs/crypto.c
+@@ -1310,14 +1310,13 @@ static int ecryptfs_write_headers_virt(c
+ }
+ static int
+-ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat,
+-                                  struct dentry *ecryptfs_dentry,
+-                                  char *virt)
++ecryptfs_write_metadata_to_contents(struct dentry *ecryptfs_dentry,
++                                  char *virt, size_t virt_len)
+ {
+       int rc;
+       rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, virt,
+-                                0, crypt_stat->num_header_bytes_at_front);
++                                0, virt_len);
+       if (rc)
+               printk(KERN_ERR "%s: Error attempting to write header "
+                      "information to lower file; rc = [%d]\n", __func__,
+@@ -1327,7 +1326,6 @@ ecryptfs_write_metadata_to_contents(stru
+ static int
+ ecryptfs_write_metadata_to_xattr(struct dentry *ecryptfs_dentry,
+-                               struct ecryptfs_crypt_stat *crypt_stat,
+                                char *page_virt, size_t size)
+ {
+       int rc;
+@@ -1337,6 +1335,17 @@ ecryptfs_write_metadata_to_xattr(struct 
+       return rc;
+ }
++static unsigned long ecryptfs_get_zeroed_pages(gfp_t gfp_mask,
++                                             unsigned int order)
++{
++      struct page *page;
++
++      page = alloc_pages(gfp_mask | __GFP_ZERO, order);
++      if (page)
++              return (unsigned long) page_address(page);
++      return 0;
++}
++
+ /**
+  * ecryptfs_write_metadata
+  * @ecryptfs_dentry: The eCryptfs dentry
+@@ -1353,7 +1362,9 @@ int ecryptfs_write_metadata(struct dentr
+ {
+       struct ecryptfs_crypt_stat *crypt_stat =
+               &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
++      unsigned int order;
+       char *virt;
++      size_t virt_len;
+       size_t size = 0;
+       int rc = 0;
+@@ -1369,33 +1380,35 @@ int ecryptfs_write_metadata(struct dentr
+               rc = -EINVAL;
+               goto out;
+       }
++      virt_len = crypt_stat->num_header_bytes_at_front;
++      order = get_order(virt_len);
+       /* Released in this function */
+-      virt = (char *)get_zeroed_page(GFP_KERNEL);
++      virt = (char *)ecryptfs_get_zeroed_pages(GFP_KERNEL, order);
+       if (!virt) {
+               printk(KERN_ERR "%s: Out of memory\n", __func__);
+               rc = -ENOMEM;
+               goto out;
+       }
+-      rc = ecryptfs_write_headers_virt(virt, PAGE_CACHE_SIZE, &size,
+-                                       crypt_stat, ecryptfs_dentry);
++      rc = ecryptfs_write_headers_virt(virt, virt_len, &size, crypt_stat,
++                                       ecryptfs_dentry);
+       if (unlikely(rc)) {
+               printk(KERN_ERR "%s: Error whilst writing headers; rc = [%d]\n",
+                      __func__, rc);
+               goto out_free;
+       }
+       if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
+-              rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry,
+-                                                    crypt_stat, virt, size);
++              rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry, virt,
++                                                    size);
+       else
+-              rc = ecryptfs_write_metadata_to_contents(crypt_stat,
+-                                                       ecryptfs_dentry, virt);
++              rc = ecryptfs_write_metadata_to_contents(ecryptfs_dentry, virt,
++                                                       virt_len);
+       if (rc) {
+               printk(KERN_ERR "%s: Error writing metadata out to lower file; "
+                      "rc = [%d]\n", __func__, rc);
+               goto out_free;
+       }
+ out_free:
+-      free_page((unsigned long)virt);
++      free_pages((unsigned long)virt, order);
+ out:
+       return rc;
+ }
diff --git a/releases/2.6.28.9/mbox b/releases/2.6.28.9/mbox
new file mode 100644 (file)
index 0000000..225ba4d
--- /dev/null
@@ -0,0 +1,3887 @@
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222922.939065975@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:11 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tony Luck <tony.luck@intel.com>
+Subject: [patch 01/43] [IA64] Build fix for __early_pfn_to_nid() undefined link error
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=build-fix-for-__early_pfn_to_nid-undefined-link-error.patch
+Content-Length: 925
+Lines: 35
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tony Luck <tony.luck@intel.com>
+
+commit 334f85b647bc46ff4d27ace55aa65f44d6a2f4db upstream.
+
+ia64 only defines __early_pfn_to_nid() for SPARSEMEM && NUMA configurations,
+so the recent:
+
+       commit: f2dbcfa738368c8a40d4a5f0b65dc9879577cb21
+       mm: clean up for early_pfn_to_nid()
+
+ends up with some link problems for certain configuration files.
+
+Fix arch/ia64/Kconfig to only define HAVE_ARCH_EARLY_PFN_TO_NID in the
+cases where we do provide this function.
+
+Signed-off-by: Tony Luck <tony.luck@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/ia64/Kconfig |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/arch/ia64/Kconfig
++++ b/arch/ia64/Kconfig
+@@ -479,8 +479,7 @@ config HOLES_IN_ZONE
+       default y if VIRTUAL_MEM_MAP
+ config HAVE_ARCH_EARLY_PFN_TO_NID
+-      def_bool y
+-      depends on NEED_MULTIPLE_NODES
++      def_bool NUMA && SPARSEMEM
+ config HAVE_ARCH_NODEDATA_EXTENSION
+       def_bool y
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222923.128981119@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:12 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ingo Molnar <mingo@elte.hu>,
+ "H. Peter Anvin" <hpa@linux.intel.com>,
+ Joe Korty <joe.korty@ccur.com>
+Subject: [patch 02/43] Fix misreporting of #cores as #hyperthreads for Q9550
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch
+Content-Length: 3627
+Lines: 94
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Joe Korty <joe.korty@ccur.com>
+
+For the Q9550, in x86_64 mode, /proc/cpuinfo mistakenly
+thinks the #cores present is the #hyperthreads present.
+i386 mode was not examined but is assumed to have the
+same problem.
+
+A backport of the following three 2.6.29-rc1 patches
+fixes the problem:
+
+ 066941bd4eeb159307a5d7d795100d0887c00442:
+    [PATCH] x86: unmask CPUID levels on Intel CPUs
+ 99fb4d349db7e7dacb2099c5cc320a9e2d31c1ef:
+    [PATCH] x86: unmask CPUID levels on Intel CPUs, fix
+ bdf21a49bab28f0d9613e8d8724ef9c9168b61b9:
+    [PATCH] x86: add MSR_IA32_MISC_ENABLE bits to <asm/msr-index.h>
+
+>From the first patch: "If the CPUID limit bit in
+MSR_IA32_MISC_ENABLE is set, clear it to make all CPUID
+information available.  This is required for some features
+to work, in particular XSAVE."
+
+Originally-Developed-by: H. Peter Anvin <hpa@linux.intel.com>
+Backported-by: Joe Korty <joe.korty@ccur.com>
+Signed-off-by: Joe Korty <joe.korty@ccur.com>
+Cc: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/include/asm/msr-index.h |   29 +++++++++++++++++++++++++++++
+ arch/x86/kernel/cpu/intel.c      |   13 +++++++++++++
+ 2 files changed, 42 insertions(+)
+
+--- a/arch/x86/include/asm/msr-index.h
++++ b/arch/x86/include/asm/msr-index.h
+@@ -200,6 +200,35 @@
+ #define MSR_IA32_THERM_STATUS         0x0000019c
+ #define MSR_IA32_MISC_ENABLE          0x000001a0
++/* MISC_ENABLE bits: architectural */
++#define MSR_IA32_MISC_ENABLE_FAST_STRING      (1ULL << 0)
++#define MSR_IA32_MISC_ENABLE_TCC              (1ULL << 1)
++#define MSR_IA32_MISC_ENABLE_EMON             (1ULL << 7)
++#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL      (1ULL << 11)
++#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL     (1ULL << 12)
++#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP       (1ULL << 16)
++#define MSR_IA32_MISC_ENABLE_MWAIT            (1ULL << 18)
++#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID      (1ULL << 22)
++#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE     (1ULL << 23)
++#define MSR_IA32_MISC_ENABLE_XD_DISABLE               (1ULL << 34)
++
++/* MISC_ENABLE bits: model-specific, meaning may vary from core to core */
++#define MSR_IA32_MISC_ENABLE_X87_COMPAT               (1ULL << 2)
++#define MSR_IA32_MISC_ENABLE_TM1              (1ULL << 3)
++#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE       (1ULL << 4)
++#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE  (1ULL << 6)
++#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK    (1ULL << 8)
++#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << 9)
++#define MSR_IA32_MISC_ENABLE_FERR             (1ULL << 10)
++#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX   (1ULL << 10)
++#define MSR_IA32_MISC_ENABLE_TM2              (1ULL << 13)
++#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << 19)
++#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK   (1ULL << 20)
++#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT      (1ULL << 24)
++#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << 37)
++#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE    (1ULL << 38)
++#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE  (1ULL << 39)
++
+ /* Intel Model 6 */
+ #define MSR_P6_EVNTSEL0                       0x00000186
+ #define MSR_P6_EVNTSEL1                       0x00000187
+--- a/arch/x86/kernel/cpu/intel.c
++++ b/arch/x86/kernel/cpu/intel.c
+@@ -30,6 +30,19 @@
+ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
+ {
++      /* Unmask CPUID levels if masked: */
++      if (c->x86 == 6 && c->x86_model >= 15) {
++              u64 misc_enable;
++
++              rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++
++              if (misc_enable & MSR_IA32_MISC_ENABLE_LIMIT_CPUID) {
++                      misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
++                      wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++                      c->cpuid_level = cpuid_eax(0);
++              }
++      }
++
+       if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
+               (c->x86 == 0x6 && c->x86_model >= 0x0e))
+               set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222923.301362657@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:13 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Davide Libenzi <davidel@xmailserver.org>,
+ Benjamin LaHaise <bcrl@kvack.org>,
+ Trond Myklebust <trond.myklebust@fys.uio.no>,
+ Eric Dumazet <dada1@cosmosbay.com>,
+ Jeff Moyer <jmoyer@redhat.com>,
+ Zach Brown <zach.brown@oracle.com>
+Subject: [patch 03/43] eventfd: remove fput() call from possible IRQ context
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=eventfd-remove-fput-call-from-possible-irq-context.patch
+Content-Length: 4152
+Lines: 122
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Davide Libenzi <davidel@xmailserver.org>
+
+commit 87c3a86e1c220121d0ced59d1a71e78ed9abc6dd upstream.
+
+Remove a source of fput() call from inside IRQ context.  Myself, like Eric,
+wasn't able to reproduce an fput() call from IRQ context, but Jeff said he was
+able to, with the attached test program.  Independently from this, the bug is
+conceptually there, so we might be better off fixing it.  This patch adds an
+optimization similar to the one we already do on ->ki_filp, on ->ki_eventfd.
+Playing with ->f_count directly is not pretty in general, but the alternative
+here would be to add a brand new delayed fput() infrastructure, that I'm not
+sure is worth it.
+
+Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
+Cc: Benjamin LaHaise <bcrl@kvack.org>
+Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
+Cc: Eric Dumazet <dada1@cosmosbay.com>
+Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
+Cc: Zach Brown <zach.brown@oracle.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/aio.c |   37 +++++++++++++++++++++++++++----------
+ 1 file changed, 27 insertions(+), 10 deletions(-)
+
+--- a/fs/aio.c
++++ b/fs/aio.c
+@@ -428,7 +428,7 @@ static struct kiocb *__aio_get_req(struc
+       req->private = NULL;
+       req->ki_iovec = NULL;
+       INIT_LIST_HEAD(&req->ki_run_list);
+-      req->ki_eventfd = ERR_PTR(-EINVAL);
++      req->ki_eventfd = NULL;
+       /* Check if the completion queue has enough free space to
+        * accept an event from this io.
+@@ -470,8 +470,6 @@ static inline void really_put_req(struct
+ {
+       assert_spin_locked(&ctx->ctx_lock);
+-      if (!IS_ERR(req->ki_eventfd))
+-              fput(req->ki_eventfd);
+       if (req->ki_dtor)
+               req->ki_dtor(req);
+       if (req->ki_iovec != &req->ki_inline_vec)
+@@ -493,8 +491,11 @@ static void aio_fput_routine(struct work
+               list_del(&req->ki_list);
+               spin_unlock_irq(&fput_lock);
+-              /* Complete the fput */
+-              __fput(req->ki_filp);
++              /* Complete the fput(s) */
++              if (req->ki_filp != NULL)
++                      __fput(req->ki_filp);
++              if (req->ki_eventfd != NULL)
++                      __fput(req->ki_eventfd);
+               /* Link the iocb into the context's free list */
+               spin_lock_irq(&ctx->ctx_lock);
+@@ -512,12 +513,14 @@ static void aio_fput_routine(struct work
+  */
+ static int __aio_put_req(struct kioctx *ctx, struct kiocb *req)
+ {
++      int schedule_putreq = 0;
++
+       dprintk(KERN_DEBUG "aio_put(%p): f_count=%ld\n",
+               req, atomic_long_read(&req->ki_filp->f_count));
+       assert_spin_locked(&ctx->ctx_lock);
+-      req->ki_users --;
++      req->ki_users--;
+       BUG_ON(req->ki_users < 0);
+       if (likely(req->ki_users))
+               return 0;
+@@ -525,10 +528,23 @@ static int __aio_put_req(struct kioctx *
+       req->ki_cancel = NULL;
+       req->ki_retry = NULL;
+-      /* Must be done under the lock to serialise against cancellation.
+-       * Call this aio_fput as it duplicates fput via the fput_work.
++      /*
++       * Try to optimize the aio and eventfd file* puts, by avoiding to
++       * schedule work in case it is not __fput() time. In normal cases,
++       * we would not be holding the last reference to the file*, so
++       * this function will be executed w/out any aio kthread wakeup.
+        */
+-      if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count))) {
++      if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count)))
++              schedule_putreq++;
++      else
++              req->ki_filp = NULL;
++      if (req->ki_eventfd != NULL) {
++              if (unlikely(atomic_long_dec_and_test(&req->ki_eventfd->f_count)))
++                      schedule_putreq++;
++              else
++                      req->ki_eventfd = NULL;
++      }
++      if (unlikely(schedule_putreq)) {
+               get_ioctx(ctx);
+               spin_lock(&fput_lock);
+               list_add(&req->ki_list, &fput_head);
+@@ -992,7 +1008,7 @@ int aio_complete(struct kiocb *iocb, lon
+        * eventfd. The eventfd_signal() function is safe to be called
+        * from IRQ context.
+        */
+-      if (!IS_ERR(iocb->ki_eventfd))
++      if (iocb->ki_eventfd != NULL)
+               eventfd_signal(iocb->ki_eventfd, 1);
+ put_rq:
+@@ -1596,6 +1612,7 @@ static int io_submit_one(struct kioctx *
+               req->ki_eventfd = eventfd_fget((int) iocb->aio_resfd);
+               if (IS_ERR(req->ki_eventfd)) {
+                       ret = PTR_ERR(req->ki_eventfd);
++                      req->ki_eventfd = NULL;
+                       goto out_put_req;
+               }
+       }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222923.469852861@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:14 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Martin Schwidefsky <schwidefsky@de.ibm.com>
+Subject: [patch 04/43] S390: __div64_31 broken for CONFIG_MARCH_G5
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=s390-__div64_31-broken-for-config_march_g5.patch
+Content-Length: 1095
+Lines: 32
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+commit 4fa81ed27781a12f6303b9263056635ae74e3e21 upstream.
+
+The implementation of __div64_31 for G5 machines is broken. The comments
+in __div64_31 are correct, only the code does not do what the comments
+say. The part "If the remainder has overflown subtract base and increase
+the quotient" is only partially realized, the base is subtracted correctly
+but the quotient is only increased if the dividend had the last bit set.
+Using the correct instruction fixes the problem.
+
+Reported-by: Frans Pop <elendil@planet.nl>
+Tested-by: Frans Pop <elendil@planet.nl>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/s390/lib/div64.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/s390/lib/div64.c
++++ b/arch/s390/lib/div64.c
+@@ -61,7 +61,7 @@ static uint32_t __div64_31(uint64_t *n, 
+               "       clr     %0,%3\n"
+               "       jl      0f\n"
+               "       slr     %0,%3\n"
+-              "       alr     %1,%2\n"
++              "       ahi     %1,1\n"
+               "0:\n"
+               : "+d" (reg2), "+d" (reg3), "=d" (tmp)
+               : "d" (base), "2" (1UL) : "cc" );
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222923.632902504@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:15 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Beulich <jbeulich@novell.com>,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 05/43] ALSA: Fix vunmap and free order in snd_free_sgbuf_pages()
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-fix-vunmap-and-free-order-in-snd_free_sgbuf_pages.patch
+Content-Length: 1203
+Lines: 42
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 6af845e4eb36fb91b322aaf77ec1cab2220a48ad upstream.
+
+In snd_free_sgbuf_pags(), vunmap() is called after releasing the SG
+pages, and it causes errors on Xen as Xen manages the pages
+differently.  Although no significant errors have been reported on
+the actual hardware, this order should be fixed other way round,
+first vunmap() then free pages.
+
+Cc: Jan Beulich <jbeulich@novell.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/core/sgbuf.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/sound/core/sgbuf.c
++++ b/sound/core/sgbuf.c
+@@ -38,6 +38,10 @@ int snd_free_sgbuf_pages(struct snd_dma_
+       if (! sgbuf)
+               return -EINVAL;
++      if (dmab->area)
++              vunmap(dmab->area);
++      dmab->area = NULL;
++
+       tmpb.dev.type = SNDRV_DMA_TYPE_DEV;
+       tmpb.dev.dev = sgbuf->dev;
+       for (i = 0; i < sgbuf->pages; i++) {
+@@ -48,9 +52,6 @@ int snd_free_sgbuf_pages(struct snd_dma_
+               tmpb.bytes = (sgbuf->table[i].addr & ~PAGE_MASK) << PAGE_SHIFT;
+               snd_dma_free_pages(&tmpb);
+       }
+-      if (dmab->area)
+-              vunmap(dmab->area);
+-      dmab->area = NULL;
+       kfree(sgbuf->table);
+       kfree(sgbuf->page_table);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:23 2009
+Message-Id: <20090320222923.800315181@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:16 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jiri Slaby <jirislaby@gmail.com>,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 06/43] ALSA: mixart, fix lock imbalance
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-mixart-fix-lock-imbalance.patch
+Content-Length: 669
+Lines: 25
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jiri Slaby <jirislaby@gmail.com>
+
+commit 82f5d57163abed2e5ff271d03217b6f90c616eb8 upstream.
+
+There is an omitted unlock in one snd_mixart_hw_params fail path. Fix it.
+
+Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/mixart/mixart.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/mixart/mixart.c
++++ b/sound/pci/mixart/mixart.c
+@@ -607,6 +607,7 @@ static int snd_mixart_hw_params(struct s
+       /* set the format to the board */
+       err = mixart_set_format(stream, format);
+       if(err < 0) {
++              mutex_unlock(&mgr->setup_mutex);
+               return err;
+       }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222923.991758234@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:17 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jiri Slaby <jirislaby@gmail.com>,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 07/43] ALSA: pcm_oss, fix locking typo
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-pcm_oss-fix-locking-typo.patch
+Content-Length: 1091
+Lines: 36
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jiri Slaby <jirislaby@gmail.com>
+
+commit 91054598f794fb5d8a0b1e747ff8e2e8fc2115b3 upstream.
+
+s/mutex_lock/mutex_unlock/ on 2 fail paths in snd_pcm_oss_proc_write.
+Probably a typo, lock should be unlocked when leaving the function.
+
+Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/core/oss/pcm_oss.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/core/oss/pcm_oss.c
++++ b/sound/core/oss/pcm_oss.c
+@@ -2872,7 +2872,7 @@ static void snd_pcm_oss_proc_write(struc
+                       setup = kmalloc(sizeof(*setup), GFP_KERNEL);
+                       if (! setup) {
+                               buffer->error = -ENOMEM;
+-                              mutex_lock(&pstr->oss.setup_mutex);
++                              mutex_unlock(&pstr->oss.setup_mutex);
+                               return;
+                       }
+                       if (pstr->oss.setup_list == NULL)
+@@ -2886,7 +2886,7 @@ static void snd_pcm_oss_proc_write(struc
+                       if (! template.task_name) {
+                               kfree(setup);
+                               buffer->error = -ENOMEM;
+-                              mutex_lock(&pstr->oss.setup_mutex);
++                              mutex_unlock(&pstr->oss.setup_mutex);
+                               return;
+                       }
+               }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222924.155325468@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:18 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 08/43] ALSA: hda - Fix DMA mask for ATI controllers
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-hda-fix-dma-mask-for-ati-controllers.patch
+Content-Length: 1156
+Lines: 36
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 09240cf429505891d6123ce14a29f58f2a60121e upstream.
+
+ATI controllers (at least some SB0600 models) appear buggy to handle
+64bit DMA.  As a workaround, reset GCAP bit0 and let the driver to
+use only 32bit DMA on these controllers.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2208,9 +2208,17 @@ static int __devinit azx_create(struct s
+       gcap = azx_readw(chip, GCAP);
+       snd_printdd("chipset global capabilities = 0x%x\n", gcap);
++      /* ATI chips seems buggy about 64bit DMA addresses */
++      if (chip->driver_type == AZX_DRIVER_ATI)
++              gcap &= ~0x01;
++
+       /* allow 64bit DMA address if supported by H/W */
+       if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK))
+               pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK);
++      else {
++              pci_set_dma_mask(pci, DMA_32BIT_MASK);
++              pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK);
++      }
+       /* read number of streams from GCAP register instead of using
+        * hardcoded value
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222924.315647229@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:19 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 09/43] ALSA: hda - Workaround for buggy DMA position on ATI controllers
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-hda-workaround-for-buggy-dma-position-on-ati-controllers.patch
+Content-Length: 1708
+Lines: 63
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit c673ba1c23941173c16ff24c7cb34199e826c8b5 upstream.
+
+The position-buffer on ATI controllers are unreliable as well as
+on VIA chips, thus the same workaround for DMA position reading as
+VIA is useful for ATI.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c |   31 ++++++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 13 deletions(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2063,26 +2063,31 @@ static int __devinit check_position_fix(
+ {
+       const struct snd_pci_quirk *q;
+-      /* Check VIA HD Audio Controller exist */
+-      if (chip->pci->vendor == PCI_VENDOR_ID_VIA &&
+-          chip->pci->device == VIA_HDAC_DEVICE_ID) {
++      switch (fix) {
++      case POS_FIX_LPIB:
++      case POS_FIX_POSBUF:
++              return fix;
++      }
++
++      /* Check VIA/ATI HD Audio Controller exist */
++      switch (chip->driver_type) {
++      case AZX_DRIVER_VIA:
++      case AZX_DRIVER_ATI:
+               chip->via_dmapos_patch = 1;
+               /* Use link position directly, avoid any transfer problem. */
+               return POS_FIX_LPIB;
+       }
+       chip->via_dmapos_patch = 0;
+-      if (fix == POS_FIX_AUTO) {
+-              q = snd_pci_quirk_lookup(chip->pci, position_fix_list);
+-              if (q) {
+-                      printk(KERN_INFO
+-                                  "hda_intel: position_fix set to %d "
+-                                  "for device %04x:%04x\n",
+-                                  q->value, q->subvendor, q->subdevice);
+-                      return q->value;
+-              }
++      q = snd_pci_quirk_lookup(chip->pci, position_fix_list);
++      if (q) {
++              printk(KERN_INFO
++                     "hda_intel: position_fix set to %d "
++                     "for device %04x:%04x\n",
++                     q->value, q->subvendor, q->subdevice);
++              return q->value;
+       }
+-      return fix;
++      return POS_FIX_AUTO;
+ }
+ /*
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222924.477204359@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:20 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Krzysztof Helt <krzysztof.h1@wp.pl>,
+ Takashi Iwai <tiwai@suse.de>
+Subject: [patch 10/43] ALSA: opl3sa2 - Fix NULL dereference when suspending snd_opl3sa2
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=alsa-opl3sa2-fix-null-dereference-when-suspending-snd_opl3sa2.patch
+Content-Length: 1423
+Lines: 53
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Krzysztof Helt <krzysztof.h1@wp.pl>
+
+commit dde332b660cf0bc2baaba678b52768a0fb6e6da2 upstream.
+
+Fix the OOPS during a opl3sa2 card suspend
+and resume if the driver is loaded but the card
+is not found.
+
+Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/isa/opl3sa2.c |   18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+--- a/sound/isa/opl3sa2.c
++++ b/sound/isa/opl3sa2.c
+@@ -550,21 +550,27 @@ static int __devinit snd_opl3sa2_mixer(s
+ #ifdef CONFIG_PM
+ static int snd_opl3sa2_suspend(struct snd_card *card, pm_message_t state)
+ {
+-      struct snd_opl3sa2 *chip = card->private_data;
++      if (card) {
++              struct snd_opl3sa2 *chip = card->private_data;
+-      snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+-      chip->wss->suspend(chip->wss);
+-      /* power down */
+-      snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
++              snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
++              chip->wss->suspend(chip->wss);
++              /* power down */
++              snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
++      }
+       return 0;
+ }
+ static int snd_opl3sa2_resume(struct snd_card *card)
+ {
+-      struct snd_opl3sa2 *chip = card->private_data;
++      struct snd_opl3sa2 *chip;
+       int i;
++      if (!card)
++              return 0;
++
++      chip = card->private_data;
+       /* power up */
+       snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222924.649248510@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "J. Bruce Fields" <bfields@citi.umich.edu>
+Subject: [patch 11/43] nfsd: nfsd should drop CAP_MKNOD for non-root
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=nfsd-nfsd-should-drop-cap_mknod-for-non-root.patch
+Content-Length: 1400
+Lines: 36
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: J. Bruce Fields <bfields@citi.umich.edu>
+
+commit 76a67ec6fb79ff3570dcb5342142c16098299911 upstream.
+
+Since creating a device node is normally an operation requiring special
+privilege, Igor Zhbanov points out that it is surprising (to say the
+least) that a client can, for example, create a device node on a
+filesystem exported with root_squash.
+
+So, make sure CAP_MKNOD is among the capabilities dropped when an nfsd
+thread handles a request from a non-root user.
+
+Reported-by: Igor Zhbanov <izh1979@gmail.com>
+Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/capability.h |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/include/linux/capability.h
++++ b/include/linux/capability.h
+@@ -382,8 +382,10 @@ typedef struct kernel_cap_struct {
+ # define CAP_FULL_SET     ((kernel_cap_t){{ ~0, ~0 }})
+ # define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
+ # define CAP_FS_SET       ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } })
+-# define CAP_NFSD_SET     ((kernel_cap_t){{ CAP_FS_MASK_B0|CAP_TO_MASK(CAP_SYS_RESOURCE), \
+-                                      CAP_FS_MASK_B1 } })
++# define CAP_NFSD_SET     ((kernel_cap_t){{ CAP_FS_MASK_B0 \
++                                          | CAP_TO_MASK(CAP_SYS_RESOURCE) \
++                                          | CAP_TO_MASK(CAP_MKNOD), \
++                                          CAP_FS_MASK_B1 } })
+ #endif /* _KERNEL_CAPABILITY_U32S != 2 */
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:24 2009
+Message-Id: <20090320222924.801209502@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Benny Halevy <bhalevy@panasas.com>,
+ "J. Bruce Fields" <bfields@citi.umich.edu>
+Subject: [patch 12/43] NFSD: provide encode routine for OP_OPENATTR
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=nfsd-provide-encode-routine-for-op_openattr.patch
+Content-Length: 1137
+Lines: 33
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Benny Halevy <bhalevy@panasas.com>
+
+commit 84f09f46b4ee9e4e9b6381f8af31817516d2091b upstream.
+
+Although this operation is unsupported by our implementation
+we still need to provide an encode routine for it to
+merely encode its (error) status back in the compound reply.
+
+Thanks for Bill Baker at sun.com for testing with the Sun
+OpenSolaris' client, finding, and reporting this bug at
+Connectathon 2009.
+
+This bug was introduced in 2.6.27
+
+Signed-off-by: Benny Halevy <bhalevy@panasas.com>
+Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/nfsd/nfs4xdr.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/nfsd/nfs4xdr.c
++++ b/fs/nfsd/nfs4xdr.c
+@@ -2598,6 +2598,7 @@ static nfsd4_enc nfsd4_enc_ops[] = {
+       [OP_LOOKUPP]            = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_NVERIFY]            = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_OPEN]               = (nfsd4_enc)nfsd4_encode_open,
++      [OP_OPENATTR]           = (nfsd4_enc)nfsd4_encode_noop,
+       [OP_OPEN_CONFIRM]       = (nfsd4_enc)nfsd4_encode_open_confirm,
+       [OP_OPEN_DOWNGRADE]     = (nfsd4_enc)nfsd4_encode_open_downgrade,
+       [OP_PUTFH]              = (nfsd4_enc)nfsd4_encode_noop,
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222924.954615735@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Milan Broz <mbroz@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [patch 13/43] dm ioctl: validate name length when renaming
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=dm-ioctl-validate-name-length-when-renaming.patch
+Content-Length: 1293
+Lines: 37
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Milan Broz <mbroz@redhat.com>
+
+commit bc0fd67feba2e0770aad85393500ba77c6489f1c upstream.
+
+When renaming a mapped device validate the length of the new name.
+
+The rename ioctl accepted any correctly-terminated string enclosed
+within the data passed from userspace.  The other ioctls enforce a
+size limit of DM_NAME_LEN.  If the name is changed and becomes longer
+than that, the device can no longer be addressed by name.
+
+Fix it by properly checking for device name length (including
+terminating zero).
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Reviewed-by: Jonathan Brassow <jbrassow@redhat.com>
+Reviewed-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-ioctl.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/dm-ioctl.c
++++ b/drivers/md/dm-ioctl.c
+@@ -704,7 +704,8 @@ static int dev_rename(struct dm_ioctl *p
+       char *new_name = (char *) param + param->data_start;
+       if (new_name < param->data ||
+-          invalid_str(new_name, (void *) param + param_size)) {
++          invalid_str(new_name, (void *) param + param_size) ||
++          strlen(new_name) > DM_NAME_LEN - 1) {
+               DMWARN("Invalid new logical volume name supplied.");
+               return -EINVAL;
+       }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222925.117322176@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:24 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mikulas Patocka <mpatocka@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [patch 14/43] dm io: respect BIO_MAX_PAGES limit
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=dm-io-respect-bio_max_pages-limit.patch
+Content-Length: 1079
+Lines: 31
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Mikulas Patocka <mpatocka@redhat.com>
+
+commit d659e6cc98766a1a61d6bdd283f95d149abd7719 upstream.
+
+dm-io calls bio_get_nr_vecs to get the maximum number of pages to use
+for a given device.  It allocates one additional bio_vec to use
+internally but failed to respect BIO_MAX_PAGES, so fix this.
+
+This was the likely cause of:
+  https://bugzilla.redhat.com/show_bug.cgi?id=173153
+
+Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-io.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/md/dm-io.c
++++ b/drivers/md/dm-io.c
+@@ -292,6 +292,8 @@ static void do_region(int rw, unsigned r
+                                            (PAGE_SIZE >> SECTOR_SHIFT));
+               num_bvecs = 1 + min_t(int, bio_get_nr_vecs(where->bdev),
+                                     num_bvecs);
++              if (unlikely(num_bvecs > BIO_MAX_PAGES))
++                      num_bvecs = BIO_MAX_PAGES;
+               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 Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222925.285081963@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:25 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Huang Ying <ying.huang@intel.com>,
+ Herbert Xu <herbert@gondor.apana.org.au>,
+ Milan Broz <mbroz@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [patch 15/43] dm crypt: fix kcryptd_async_done parameter
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=dm-crypt-fix-kcryptd_async_done-parameter.patch
+Content-Length: 3545
+Lines: 101
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Huang Ying <ying.huang@intel.com>
+
+commit b2174eebd1fadb76454dad09a1dacbc17081e6b0 upstream.
+
+In the async encryption-complete function (kcryptd_async_done), the
+crypto_async_request passed in may be different from the one passed to
+crypto_ablkcipher_encrypt/decrypt.  Only crypto_async_request->data is
+guaranteed to be same as the one passed in.  The current
+kcryptd_async_done uses the passed-in crypto_async_request directly
+which may cause the AES-NI-based AES algorithm implementation to panic.
+
+This patch fixes this bug by only using crypto_async_request->data,
+which points to dm_crypt_request, the crypto_async_request passed in.
+The original data (convert_context) is gotten from dm_crypt_request.
+
+[mbroz@redhat.com: reworked]
+Signed-off-by: Huang Ying <ying.huang@intel.com>
+Cc: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Alasdair G Kergon <agk@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/dm-crypt.c |   26 +++++++++++++++++++++-----
+ 1 file changed, 21 insertions(+), 5 deletions(-)
+
+--- a/drivers/md/dm-crypt.c
++++ b/drivers/md/dm-crypt.c
+@@ -60,6 +60,7 @@ struct dm_crypt_io {
+ };
+ struct dm_crypt_request {
++      struct convert_context *ctx;
+       struct scatterlist sg_in;
+       struct scatterlist sg_out;
+ };
+@@ -335,6 +336,18 @@ static void crypt_convert_init(struct cr
+       init_completion(&ctx->restart);
+ }
++static struct dm_crypt_request *dmreq_of_req(struct crypt_config *cc,
++                                           struct ablkcipher_request *req)
++{
++      return (struct dm_crypt_request *)((char *)req + cc->dmreq_start);
++}
++
++static struct ablkcipher_request *req_of_dmreq(struct crypt_config *cc,
++                                             struct dm_crypt_request *dmreq)
++{
++      return (struct ablkcipher_request *)((char *)dmreq - cc->dmreq_start);
++}
++
+ static int crypt_convert_block(struct crypt_config *cc,
+                              struct convert_context *ctx,
+                              struct ablkcipher_request *req)
+@@ -345,10 +358,11 @@ static int crypt_convert_block(struct cr
+       u8 *iv;
+       int r = 0;
+-      dmreq = (struct dm_crypt_request *)((char *)req + cc->dmreq_start);
++      dmreq = dmreq_of_req(cc, req);
+       iv = (u8 *)ALIGN((unsigned long)(dmreq + 1),
+                        crypto_ablkcipher_alignmask(cc->tfm) + 1);
++      dmreq->ctx = ctx;
+       sg_init_table(&dmreq->sg_in, 1);
+       sg_set_page(&dmreq->sg_in, bv_in->bv_page, 1 << SECTOR_SHIFT,
+                   bv_in->bv_offset + ctx->offset_in);
+@@ -395,8 +409,9 @@ static void crypt_alloc_req(struct crypt
+               cc->req = mempool_alloc(cc->req_pool, GFP_NOIO);
+       ablkcipher_request_set_tfm(cc->req, cc->tfm);
+       ablkcipher_request_set_callback(cc->req, CRYPTO_TFM_REQ_MAY_BACKLOG |
+-                                           CRYPTO_TFM_REQ_MAY_SLEEP,
+-                                           kcryptd_async_done, ctx);
++                                      CRYPTO_TFM_REQ_MAY_SLEEP,
++                                      kcryptd_async_done,
++                                      dmreq_of_req(cc, cc->req));
+ }
+ /*
+@@ -821,7 +836,8 @@ static void kcryptd_crypt_read_convert(s
+ static void kcryptd_async_done(struct crypto_async_request *async_req,
+                              int error)
+ {
+-      struct convert_context *ctx = async_req->data;
++      struct dm_crypt_request *dmreq = async_req->data;
++      struct convert_context *ctx = dmreq->ctx;
+       struct dm_crypt_io *io = container_of(ctx, struct dm_crypt_io, ctx);
+       struct crypt_config *cc = io->target->private;
+@@ -830,7 +846,7 @@ static void kcryptd_async_done(struct cr
+               return;
+       }
+-      mempool_free(ablkcipher_request_cast(async_req), cc->req_pool);
++      mempool_free(req_of_dmreq(cc, dmreq), cc->req_pool);
+       if (!atomic_dec_and_test(&ctx->pending))
+               return;
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222925.453417607@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:26 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Milan Broz <mbroz@redhat.com>,
+ Alasdair G Kergon <agk@redhat.com>
+Subject: [patch 16/43] dm crypt: wait for endio to complete before destruction
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=dm-crypt-wait-for-endio-to-complete-before-destruction.patch
+Content-Length: 4580
+Lines: 154
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Milan Broz <mbroz@redhat.com>
+
+commit b35f8caa0890169000fec22902290d9a15274cbd upstream.
+
+The following oops has been reported when dm-crypt runs over a loop device.
+
+...
+[   70.381058] Process loop0 (pid: 4268, ti=cf3b2000 task=cf1cc1f0 task.ti=cf3b2000)
+...
+[   70.381058] Call Trace:
+[   70.381058]  [<d0d76601>] ? crypt_dec_pending+0x5e/0x62 [dm_crypt]
+[   70.381058]  [<d0d767b8>] ? crypt_endio+0xa2/0xaa [dm_crypt]
+[   70.381058]  [<d0d76716>] ? crypt_endio+0x0/0xaa [dm_crypt]
+[   70.381058]  [<c01a2f24>] ? bio_endio+0x2b/0x2e
+[   70.381058]  [<d0806530>] ? dec_pending+0x224/0x23b [dm_mod]
+[   70.381058]  [<d08066e4>] ? clone_endio+0x79/0xa4 [dm_mod]
+[   70.381058]  [<d080666b>] ? clone_endio+0x0/0xa4 [dm_mod]
+[   70.381058]  [<c01a2f24>] ? bio_endio+0x2b/0x2e
+[   70.381058]  [<c02bad86>] ? loop_thread+0x380/0x3b7
+[   70.381058]  [<c02ba8a1>] ? do_lo_send_aops+0x0/0x165
+[   70.381058]  [<c013754f>] ? autoremove_wake_function+0x0/0x33
+[   70.381058]  [<c02baa06>] ? loop_thread+0x0/0x3b7
+
+When a table is being replaced, it waits for I/O to complete
+before destroying the mempool, but the endio function doesn't
+call mempool_free() until after completing the bio.
+
+Fix it by swapping the order of those two operations.
+
+The same problem occurs in dm.c with md referenced after dec_pending.
+Again, we swap the order.
+
+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-crypt.c |   17 ++++++++++-------
+ drivers/md/dm.c       |   32 +++++++++++++++++++-------------
+ 2 files changed, 29 insertions(+), 20 deletions(-)
+
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -480,9 +480,12 @@ static int __noflush_suspending(struct m
+ static void dec_pending(struct dm_io *io, int error)
+ {
+       unsigned long flags;
++      int io_error;
++      struct bio *bio;
++      struct mapped_device *md = io->md;
+       /* Push-back supersedes any I/O errors */
+-      if (error && !(io->error > 0 && __noflush_suspending(io->md)))
++      if (error && !(io->error > 0 && __noflush_suspending(md)))
+               io->error = error;
+       if (atomic_dec_and_test(&io->io_count)) {
+@@ -492,25 +495,28 @@ static void dec_pending(struct dm_io *io
+                        * This must be handled before the sleeper on
+                        * suspend queue merges the pushback list.
+                        */
+-                      spin_lock_irqsave(&io->md->pushback_lock, flags);
+-                      if (__noflush_suspending(io->md))
+-                              bio_list_add(&io->md->pushback, io->bio);
++                      spin_lock_irqsave(&md->pushback_lock, flags);
++                      if (__noflush_suspending(md))
++                              bio_list_add(&md->pushback, io->bio);
+                       else
+                               /* noflush suspend was interrupted. */
+                               io->error = -EIO;
+-                      spin_unlock_irqrestore(&io->md->pushback_lock, flags);
++                      spin_unlock_irqrestore(&md->pushback_lock, flags);
+               }
+               end_io_acct(io);
+-              if (io->error != DM_ENDIO_REQUEUE) {
+-                      blk_add_trace_bio(io->md->queue, io->bio,
++              io_error = io->error;
++              bio = io->bio;
++
++              free_io(md, io);
++
++              if (io_error != DM_ENDIO_REQUEUE) {
++                      blk_add_trace_bio(md->queue, io->bio,
+                                         BLK_TA_COMPLETE);
+-                      bio_endio(io->bio, io->error);
++                      bio_endio(bio, io_error);
+               }
+-
+-              free_io(io->md, io);
+       }
+ }
+@@ -518,6 +524,7 @@ static void clone_endio(struct bio *bio,
+ {
+       int r = 0;
+       struct dm_target_io *tio = bio->bi_private;
++      struct dm_io *io = tio->io;
+       struct mapped_device *md = tio->io->md;
+       dm_endio_fn endio = tio->ti->type->end_io;
+@@ -541,15 +548,14 @@ static void clone_endio(struct bio *bio,
+               }
+       }
+-      dec_pending(tio->io, error);
+-
+       /*
+        * Store md for cleanup instead of tio which is about to get freed.
+        */
+       bio->bi_private = md->bs;
+-      bio_put(bio);
+       free_tio(md, tio);
++      bio_put(bio);
++      dec_pending(io, error);
+ }
+ static sector_t max_io_len(struct mapped_device *md,
+--- a/drivers/md/dm-crypt.c
++++ b/drivers/md/dm-crypt.c
+@@ -568,19 +568,22 @@ static void crypt_inc_pending(struct dm_
+ static void crypt_dec_pending(struct dm_crypt_io *io)
+ {
+       struct crypt_config *cc = io->target->private;
++      struct bio *base_bio = io->base_bio;
++      struct dm_crypt_io *base_io = io->base_io;
++      int error = io->error;
+       if (!atomic_dec_and_test(&io->pending))
+               return;
+-      if (likely(!io->base_io))
+-              bio_endio(io->base_bio, io->error);
++      mempool_free(io, cc->io_pool);
++
++      if (likely(!base_io))
++              bio_endio(base_bio, error);
+       else {
+-              if (io->error && !io->base_io->error)
+-                      io->base_io->error = io->error;
+-              crypt_dec_pending(io->base_io);
++              if (error && !base_io->error)
++                      base_io->error = error;
++              crypt_dec_pending(base_io);
+       }
+-
+-      mempool_free(io, cc->io_pool);
+ }
+ /*
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222925.618177174@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tejun Heo <tj@kernel.org>,
+ Jeff Garzik <jgarzik@redhat.com>
+Subject: [patch 17/43] ata_piix: add workaround for Samsung DB-P70
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=ata_piix-add-workaround-for-samsung-db-p70.patch
+Content-Length: 2744
+Lines: 81
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Tejun Heo <tj@kernel.org>
+
+commit e9c1670c2a14ef9cc20d86b24b829f3947aad34e upstream.
+
+Samsung DB-P70 somehow botched the first ICH9 SATA port.  The board
+doesn't expose the first port but somehow SStatus reports link online
+while failing SRST protocol leading to repeated probe failures and
+thus long boot delay.
+
+Because the BIOS doesn't carry any identifying DMI information, the
+port can't be blacklisted safely.  Fortunately, the controller does
+have subsystem vendor and ID set.  It's unclear whether the subsystem
+IDs are used only for the board but it can be safely worked around by
+disabling SIDPR access and just using SRST works around the problem.
+Even when the workaround is triggered on an unaffected board the only
+side effect will be missing SCR access.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Reported-by: Joseph Jang <josephjang@gmail.com>
+Reported-by: Jonghyon Sohn <mrsohn@gmail.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ata_piix.c |   37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+--- a/drivers/ata/ata_piix.c
++++ b/drivers/ata/ata_piix.c
+@@ -1294,6 +1294,39 @@ static const int *__devinit piix_init_sa
+       return map;
+ }
++static bool piix_no_sidpr(struct ata_host *host)
++{
++      struct pci_dev *pdev = to_pci_dev(host->dev);
++
++      /*
++       * Samsung DB-P70 only has three ATA ports exposed and
++       * curiously the unconnected first port reports link online
++       * while not responding to SRST protocol causing excessive
++       * detection delay.
++       *
++       * Unfortunately, the system doesn't carry enough DMI
++       * information to identify the machine but does have subsystem
++       * vendor and device set.  As it's unclear whether the
++       * subsystem vendor/device is used only for this specific
++       * board, the port can't be disabled solely with the
++       * information; however, turning off SIDPR access works around
++       * the problem.  Turn it off.
++       *
++       * This problem is reported in bnc#441240.
++       *
++       * https://bugzilla.novell.com/show_bug.cgi?id=441420
++       */
++      if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x2920 &&
++          pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG &&
++          pdev->subsystem_device == 0xb049) {
++              dev_printk(KERN_WARNING, host->dev,
++                         "Samsung DB-P70 detected, disabling SIDPR\n");
++              return true;
++      }
++
++      return false;
++}
++
+ static int __devinit piix_init_sidpr(struct ata_host *host)
+ {
+       struct pci_dev *pdev = to_pci_dev(host->dev);
+@@ -1307,6 +1340,10 @@ static int __devinit piix_init_sidpr(str
+               if (hpriv->map[i] == IDE)
+                       return 0;
++      /* is it blacklisted? */
++      if (piix_no_sidpr(host))
++              return 0;
++
+       if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR))
+               return 0;
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:25 2009
+Message-Id: <20090320222925.793762675@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mark Jenks <mjenks1968@gmail.com>,
+ Andy Walls <awalls@radix.net>,
+ Mauro Carvalho Chehab <mchehab@redhat.com>,
+ Jarod Wilson <jarod@redhat.com>
+Subject: [patch 18/43] V4L/DVB (10218): cx23885: Fix Oops for mixed install of analog and digital only cards
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=v4l-dvb-cx23885-fix-oops-for-mixed-install-of-analog-and-digital-only-cards.patch
+Content-Length: 2101
+Lines: 65
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Andy Walls <awalls@radix.net>
+
+commit cd8f894eacf13996d920fdd2aef1afc55156b191 upstream.
+
+Analog support for HVR-1250 has not been completed, but does exist for
+the HVR-1800.
+
+Since both cards use the same driver, it tries to create the analog
+dev for both devices, which is not possible.
+
+This causes a NULL error to show up in video_open and mpeg_open.
+
+-Mark
+
+Iterations through the cx23885_devlist must check for NULL
+pointers as some supported devices only have DVB support at the moment.
+Mark Jenks encoutered an Oops in a system with both an HVR-1250 and HVR-1800
+installed.
+
+-Andy
+
+Reported-by: Mark Jenks <mjenks1968@gmail.com>
+Tested-by: Mark Jenks <mjenks1968@gmail.com>
+Signed-off-by: Mark Jenks <mjenks1968@gmail.com>
+Signed-off-by: Andy Walls <awalls@radix.net>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Jarod Wilson <jarod@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/cx23885/cx23885-417.c   |    3 ++-
+ drivers/media/video/cx23885/cx23885-video.c |    5 +++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/media/video/cx23885/cx23885-417.c
++++ b/drivers/media/video/cx23885/cx23885-417.c
+@@ -1585,7 +1585,8 @@ static int mpeg_open(struct inode *inode
+       lock_kernel();
+       list_for_each(list, &cx23885_devlist) {
+               h = list_entry(list, struct cx23885_dev, devlist);
+-              if (h->v4l_device->minor == minor) {
++              if (h->v4l_device &&
++                  h->v4l_device->minor == minor) {
+                       dev = h;
+                       break;
+               }
+--- a/drivers/media/video/cx23885/cx23885-video.c
++++ b/drivers/media/video/cx23885/cx23885-video.c
+@@ -730,12 +730,13 @@ static int video_open(struct inode *inod
+       lock_kernel();
+       list_for_each(list, &cx23885_devlist) {
+               h = list_entry(list, struct cx23885_dev, devlist);
+-              if (h->video_dev->minor == minor) {
++              if (h->video_dev &&
++                  h->video_dev->minor == minor) {
+                       dev  = h;
+                       type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+               }
+               if (h->vbi_dev &&
+-                 h->vbi_dev->minor == minor) {
++                  h->vbi_dev->minor == minor) {
+                       dev  = h;
+                       type = V4L2_BUF_TYPE_VBI_CAPTURE;
+               }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222925.949394608@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mathieu Chouquet-Stringer <mchouque@free.fr>,
+ Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
+ Len Brown <len.brown@intel.com>
+Subject: [patch 19/43] thinkpad-acpi: fix module autoloading for older models
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=thinkpad-acpi-fix-module-autoloading-for-older-models.patch
+Content-Length: 2137
+Lines: 55
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Mathieu Chouquet-Stringer <mchouque@free.fr>
+
+commit b36a50f92d1c4300a88f606b4d2bbdc4f442a2d7 upstream.
+
+Looking at the source, there seems to be a missing * to match my DMI
+string.  I mean for newer IBM and Lenovo's laptops you match either one
+of the following:
+MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
+MODULE_ALIAS("dmi:bvnLENOVO:*:svnLENOVO:*:pvrThinkPad*:rvnLENOVO:*");
+
+While for older Thinkpads, you do this (for instance):
+IBM_BIOS_MODULE_ALIAS("1[0,3,6,8,A-G,I,K,M-P,S,T]");
+
+with IBM_BIOS_MODULE_ALIAS being MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW")
+
+Note there's no * terminating the string.  As result, udev doesn't load
+anything because modprobe cannot find anything matching this (my
+machine actually):
+
+udevtest: run: '/sbin/modprobe dmi:bvnIBM:bvr1IET71WW(2.10):bd06/16/2006:svnIBM:pn236621U:pvrNotAv
+
+Signed-off-by: Mathieu Chouquet-Stringer <mchouque@free.fr>
+Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/thinkpad_acpi.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/misc/thinkpad_acpi.c
++++ b/drivers/misc/thinkpad_acpi.c
+@@ -6927,7 +6927,7 @@ MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
+  * if it is not there yet.
+  */
+ #define IBM_BIOS_MODULE_ALIAS(__type) \
+-      MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW")
++      MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*")
+ /* Non-ancient thinkpads */
+ MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
+@@ -6936,9 +6936,9 @@ MODULE_ALIAS("dmi:bvnLENOVO:*:svnLENOVO:
+ /* Ancient thinkpad BIOSes have to be identified by
+  * BIOS type or model number, and there are far less
+  * BIOS types than model numbers... */
+-IBM_BIOS_MODULE_ALIAS("I[B,D,H,I,M,N,O,T,W,V,Y,Z]");
+-IBM_BIOS_MODULE_ALIAS("1[0,3,6,8,A-G,I,K,M-P,S,T]");
+-IBM_BIOS_MODULE_ALIAS("K[U,X-Z]");
++IBM_BIOS_MODULE_ALIAS("I[BDHIMNOTWVYZ]");
++IBM_BIOS_MODULE_ALIAS("1[0368A-GIKM-PST]");
++IBM_BIOS_MODULE_ALIAS("K[UX-Z]");
+ MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
+ MODULE_DESCRIPTION(TPACPI_DESC);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222926.112576670@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 20/43] Add -fwrapv to gcc CFLAGS
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=add-fwrapv-to-gcc-cflags.patch
+Content-Length: 1149
+Lines: 38
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 68df3755e383e6fecf2354a67b08f92f18536594 upstream.
+
+This makes sure that gcc doesn't try to optimize away wrapping
+arithmetic, which the kernel occasionally uses for overflow testing, ie
+things like
+
+       if (ptr + offset < ptr)
+
+which technically is undefined for non-unsigned types. See
+
+       http://bugzilla.kernel.org/show_bug.cgi?id=12597
+
+for details.
+
+Not all versions of gcc support it, so we need to make it conditional
+(it looks like it was introduced in gcc-3.4).
+
+Reminded-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Makefile |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/Makefile
++++ b/Makefile
+@@ -341,6 +341,7 @@ KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXI
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+                  -fno-strict-aliasing -fno-common \
+                  -Werror-implicit-function-declaration
++KBUILD_CFLAGS += $(call cc-option,-fwrapv)
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222926.284011924@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28: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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 21/43] Move cc-option to below arch-specific setup
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=move-cc-option-to-below-arch-specific-setup.patch
+Content-Length: 1424
+Lines: 41
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit d0115552cdb0b4d4146975889fee2e9355515c4b upstream.
+
+Sam Ravnborg says:
+ "We have several architectures that plays strange games with $(CC) and
+  $(CROSS_COMPILE).
+
+  So we need to postpone any use of $(call cc-option..) until we have
+  included the arch specific Makefile so we try with the correct $(CC)
+  version."
+
+Requested-by: Sam Ravnborg <sam@ravnborg.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Makefile |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -341,7 +341,6 @@ KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXI
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+                  -fno-strict-aliasing -fno-common \
+                  -Werror-implicit-function-declaration
+-KBUILD_CFLAGS += $(call cc-option,-fwrapv)
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+@@ -556,6 +555,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wdecl
+ # disable pointer signed / unsigned warnings in gcc 4.0
+ KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
++# disable invalid "can't wrap" optimzations for signed / pointers
++KBUILD_CFLAGS += $(call cc-option,-fwrapv)
++
+ # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
+ # But warn user when we do so
+ warn-assign = \
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222926.440885637@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:32 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Thomas Bartosik <tbartdev@gmx-topmail.de>
+Subject: [patch 22/43] USB: storage: Unusual USB device Prolific 2507 variation added
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-storage-unusual-usb-device-prolific-2507-variation-added.patch
+Content-Length: 1647
+Lines: 44
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Thomas Bartosik <tbartdev@gmx-topmail.de>
+
+commit 8a0845c51b2e300f5204a323b874f7f58ea0eff7 upstream.
+
+The "c-enter" USB to Toshiba 1.8" IDE enclosure needs special treatment
+to work flawlessly. This patch is absolutely trivial, as the integrated
+USB-IDE bridge is already identified to be an "unusual" device, only the
+bcdDevice is different (lower) to the bcdDeviceMin already included in
+the kernel.
+It is a Prolific 2507 bridge.
+
+T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
+D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
+P:  Vendor=067b ProdID=2507 Rev= 0.01
+S:  Manufacturer=Prolific Technology Inc.
+S:  Product=ATAPI-6 Bridge Controller
+S:  SerialNumber=00000272
+C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+
+Signed-off-by: Thomas Bartosik <tbartdev@gmx-topmail.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -913,7 +913,9 @@ UNUSUAL_DEV( 0x066f, 0x8000, 0x0001, 0x0
+               US_FL_FIX_CAPACITY ),
+ /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */
+-UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0100,
++/* Change to bcdDeviceMin (0x0100 to 0x0001) reported by
++ * Thomas Bartosik <tbartdev@gmx-topmail.de> */
++UNUSUAL_DEV( 0x067b, 0x2507, 0x0001, 0x0100,
+               "Prolific Technology Inc.",
+               "Mass Storage Device",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222926.575954209@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:33 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dirk Hohndel <hohndel@infradead.org>
+Subject: [patch 23/43] USB: Add Vendor/Product ID for new CDMA U727 to option driver
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch
+Content-Length: 1687
+Lines: 34
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Dirk Hohndel <hohndel@infradead.org>
+
+commit 56a21827439a4d715b510bfaf488534e6f4ad2f8 upstream.
+
+* newer versions of the Novatel Wireless U727 CDMA 3G USB stick
+   have a different Product ID (0x5010); adding this ID makes them
+   work just fine with the option driver
+
+Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -190,6 +190,7 @@ static int  option_send_setup(struct tty
+ /* OVATION PRODUCTS */
+ #define NOVATELWIRELESS_PRODUCT_MC727         0x4100
+ #define NOVATELWIRELESS_PRODUCT_MC950D                0x4400
++#define NOVATELWIRELESS_PRODUCT_U727          0x5010
+ /* FUTURE NOVATEL PRODUCTS */
+ #define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED        0X6000
+@@ -402,6 +403,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel MC727/U727/USB727 */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:26 2009
+Message-Id: <20090320222926.721059657@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:34 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Albert Pauw <albert.pauw@gmail.com>
+Subject: [patch 24/43] USB: option.c: add ZTE 622 modem device
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-option.c-add-zte-622-modem-device.patch
+Content-Length: 1201
+Lines: 33
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Albert Pauw <albert.pauw@gmail.com>
+
+commit 9ea19b82f3126da4e47d6b94563a3c2cd586f6e2 upstream.
+
+Please consider this small patch for the usb option-card driver.
+This patch adds the ZTE 622 usb modem device.
+
+Signed-off-by: Albert Pauw <albert.pauw@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -282,6 +282,7 @@ static int  option_send_setup(struct tty
+ /* ZTE PRODUCTS */
+ #define ZTE_VENDOR_ID                         0x19d2
++#define ZTE_PRODUCT_MF622                     0x0001
+ #define ZTE_PRODUCT_MF628                     0x0015
+ #define ZTE_PRODUCT_MF626                     0x0031
+ #define ZTE_PRODUCT_CDMA_TECH                 0xfffe
+@@ -499,6 +500,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+       { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
++      { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222926.883392924@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:35 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Achilleas Kotsis <akots@exponent.gr>
+Subject: [patch 25/43] USB: Add device id for Option GTM380 to option driver
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-add-device-id-for-option-gtm380-to-option-driver.patch
+Content-Length: 1406
+Lines: 33
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Achilleas Kotsis <akots@exponent.gr>
+
+commit e7f2f0d77a7b483a26054f29ba8393831b25a8a4 upstream.
+
+Option GTM380 in Modem mode uses Product ID 0x7201. This has been tested and works
+on production systems for over 6 months.
+
+Signed-off-by: Achilleas Kotsis <akots@exponent.gr>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -89,6 +89,7 @@ static int  option_send_setup(struct tty
+ #define OPTION_PRODUCT_ETNA_MODEM_GT          0x7041
+ #define OPTION_PRODUCT_ETNA_MODEM_EX          0x7061
+ #define OPTION_PRODUCT_ETNA_KOI_MODEM         0x7100
++#define OPTION_PRODUCT_GTM380_MODEM           0x7201
+ #define HUAWEI_VENDOR_ID                      0x12D1
+ #define HUAWEI_PRODUCT_E600                   0x1001
+@@ -319,6 +320,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_GT) },
+       { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_EX) },
+       { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) },
++      { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTM380_MODEM) },
+       { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) },
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.035552913@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:36 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dan Williams <dcbw@redhat.com>
+Subject: [patch 26/43] USB: Option: let cdc-acm handle Sony Ericsson F3507g / Dell 5530
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch
+Content-Length: 2291
+Lines: 46
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit 0cc6bfe901b946df125d8e37186d8e45f876457d upstream.
+
+The generic cdc-acm driver is now the best one to handle Sony Ericsson
+F3507g-based devices (which the Dell 5530 is a rebrand of), now that all
+the pieces are in place (ie, cac477e8f1038c41b6f29d3161ce351462ef3df7).
+Removing the IDs from option allows cdc-acm to handle the device.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    6 ------
+ 1 file changed, 6 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -288,10 +288,6 @@ static int  option_send_setup(struct tty
+ #define ZTE_PRODUCT_MF626                     0x0031
+ #define ZTE_PRODUCT_CDMA_TECH                 0xfffe
+-/* Ericsson products */
+-#define ERICSSON_VENDOR_ID                    0x0bdb
+-#define ERICSSON_PRODUCT_F3507G                       0x1900
+-
+ #define BENQ_VENDOR_ID                                0x04a5
+ #define BENQ_PRODUCT_H10                      0x4068
+@@ -434,7 +430,6 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) },    /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) },   /* Dell Wireless HSDPA 5520 */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) },   /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
+-      { USB_DEVICE(DELL_VENDOR_ID, 0x8147) },                                 /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) },      /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) },       /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) },         /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+@@ -506,7 +501,6 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+-      { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
+       { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
+       { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */
+       { } /* Terminating entry */
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.184495306@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:37 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Moritz Muehlenhoff <jmm@debian.org>,
+ Phil Dibowitz <phil@ipom.com>
+Subject: [patch 27/43] USB: Updated unusual-devs entry for USB mass storage on Nokia 6233
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch
+Content-Length: 964
+Lines: 30
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Moritz Muehlenhoff <jmm@debian.org>
+
+commit 716a9c8561d9c50ec454f4fbd39a265892feda2c upstream.
+
+Current firmware revision 5.60 still behaves the same,
+so update the quirk up a (non-existing) 99.99 revision.
+
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493415
+
+Signed-off-by: Moritz Muehlenhoff <jmm@debian.org>
+Tested-by: Jan Heitkoetter <devnull@heitkoetter.net>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -219,7 +219,7 @@ UNUSUAL_DEV(  0x0421, 0x047c, 0x0370, 0x
+               US_FL_MAX_SECTORS_64 ),
+ /* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */
+-UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452,
++UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x9999,
+               "Nokia",
+               "Nokia 6233",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.323747141@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:38 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Dumon <j.dumon@option.com>,
+ Phil Dibowitz <phil@ipom.com>
+Subject: [patch 28/43] USB: unusual_devs: Add support for GI 0431 SD-Card interface
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch
+Content-Length: 3229
+Lines: 79
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jan Dumon <j.dumon@option.com>
+
+commit c497e715f93d148d751c055401568684eea0bf6b upstream.
+
+Enable the SD-Card interface on the GI 0431 HSUPA stick from Option.
+
+The unusual_devs.h entry is necessary because the device descriptor is
+vendor-specific. That prevents usb-storage from binding to it as an
+interface driver.
+
+T:  Bus=07 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 15 Spd=480 MxCh= 0
+D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
+P:  Vendor=0af0 ProdID=7501 Rev= 0.00
+S:  Manufacturer=Option N.V.
+S:  Product=Globetrotter HSUPA Modem
+C:* #Ifs=11 Cfg#= 1 Atr=a0 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
+E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#=10 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+Signed-off-by: Jan Dumon <j.dumon@option.com>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1330,6 +1330,16 @@ UNUSUAL_DEV( 0x0af0, 0x7401, 0x0000, 0x0
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               0 ),
++/* Reported by Jan Dumon <j.dumon@option.com>
++ * This device (wrongly) has a vendor-specific device descriptor.
++ * The entry is needed so usb-storage can bind to it's mass-storage
++ * interface as an interface driver */
++UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0000,
++              "Option",
++              "GI 0431 SD-Card",
++              US_SC_DEVICE, US_PR_DEVICE, NULL,
++              0 ),
++
+ #ifdef CONFIG_USB_STORAGE_ISD200
+ UNUSUAL_DEV(  0x0bf6, 0xa001, 0x0100, 0x0110,
+               "ATI",
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.486077903@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:39 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Axel Wachtler <axel.wachtler@atmel.com>,
+ Robert Richter <robert.richter@amd.com>
+Subject: [patch 29/43] USB: serial: add FTDI USB/Serial converter devices
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-serial-add-ftdi-usb-serial-converter-devices.patch
+Content-Length: 1850
+Lines: 60
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Axel Wachtler <axel.wachtler@atmel.com>
+
+commit 7f82b6dd7015aabca2fd55fb690248f742cd67f3 upstream.
+
+Add the following devices to the USB FTDI SIO device table:
+
+ Bus 001 Device 009: ID 03eb:2109 Atmel Corp.
+ http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4187
+
+ Bus 001 Device 008: ID 1cf1:0001
+ http://www.dresden-elektronik.de/shop/prod75.html
+
+ Bus 001 Device 007: ID 1c1f:0004
+ http://www.dresden-elektronik.de/shop/prod64.html
+
+Signed-off-by: Axel Wachtler <axel.wachtler@atmel.com>
+Signed-off-by: Robert Richter <robert.richter@amd.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    3 +++
+ drivers/usb/serial/ftdi_sio.h |   13 +++++++++++++
+ 2 files changed, 16 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -660,6 +660,9 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
++      { USB_DEVICE(ATMEL_VID, STK541_PID) },
++      { USB_DEVICE(DE_VID, STB_PID) },
++      { USB_DEVICE(DE_VID, WHT_PID) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -881,6 +881,19 @@
+ #define RATOC_PRODUCT_ID_USB60F       0xb020
+ /*
++ * Atmel STK541
++ */
++#define ATMEL_VID             0x03eb /* Vendor ID */
++#define STK541_PID            0x2109 /* Zigbee Controller */
++
++/*
++ * Dresden Elektronic Sensor Terminal Board
++ */
++#define DE_VID                        0x1cf1 /* Vendor ID */
++#define STB_PID                       0x0001 /* Sensor Terminal Board */
++#define WHT_PID                       0x0004 /* Wireless Handheld Terminal */
++
++/*
+  *   BmRequestType:  1100 0000b
+  *   bRequest:       FTDI_E2_READ
+  *   wValue:         0
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.635390673@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:40 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Michael Hennerich <michael.hennerich@analog.com>,
+ Bryan Wu <cooloney@kernel.org>
+Subject: [patch 30/43] USB: serial: ftdi: enable UART detection on gnICE JTAG adaptors blacklist interface0
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch
+Content-Length: 1285
+Lines: 42
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Michael Hennerich <michael.hennerich@analog.com>
+
+commit b0d659002168146ec6b03d1ef062d8dcf05ff510 upstream.
+
+Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
+Signed-off-by: Bryan Wu <cooloney@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    2 ++
+ drivers/usb/serial/ftdi_sio.h |    7 +++++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -663,6 +663,8 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(ATMEL_VID, STK541_PID) },
+       { USB_DEVICE(DE_VID, STB_PID) },
+       { USB_DEVICE(DE_VID, WHT_PID) },
++      { USB_DEVICE(ADI_VID, ADI_GNICE_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -894,6 +894,13 @@
+ #define WHT_PID                       0x0004 /* Wireless Handheld Terminal */
+ /*
++ * Blackfin gnICE JTAG
++ * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
++ */
++#define ADI_VID               0x0456
++#define ADI_GNICE_PID                 0xF000
++
++/*
+  *   BmRequestType:  1100 0000b
+  *   bRequest:       FTDI_E2_READ
+  *   wValue:         0
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:27 2009
+Message-Id: <20090320222927.797760877@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:41 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 31/43] USB: serial: new cp2101 device id
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-serial-new-cp2101-device-id.patch
+Content-Length: 861
+Lines: 22
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Robert M. Kenney <rmk@unh.edu>
+
+commit c6535668798b0644e1af5934c2aec0e912280449 upstream.
+
+From: Robert M. Kenney <rmk@unh.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp2101.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp2101.c
++++ b/drivers/usb/serial/cp2101.c
+@@ -79,6 +79,7 @@ static struct usb_device_id id_table [] 
+       { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
+       { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
+       { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
++      { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
+       { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
+       { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
+       { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222927.951096921@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:42 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 32/43] USB: usbtmc: fix stupid bug in open()
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-usbtmc-fix-stupid-bug-in-open.patch
+Content-Length: 866
+Lines: 34
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 5b10916ea0a62920204517e1c4ce14560b4f96ab upstream.
+
+open() will never succeed, as we always return -ENODEV.  Fix this
+obvious bug.
+
+Thanks to Jouni Ryno for reporting it.
+
+Reported-by: Jouni Ryno <Jouni.Ryno@fmi.fi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/usbtmc.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/class/usbtmc.c
++++ b/drivers/usb/class/usbtmc.c
+@@ -105,12 +105,13 @@ static int usbtmc_open(struct inode *ino
+ {
+       struct usb_interface *intf;
+       struct usbtmc_device_data *data;
+-      int retval = -ENODEV;
++      int retval = 0;
+       intf = usb_find_interface(&usbtmc_driver, iminor(inode));
+       if (!intf) {
+               printk(KERN_ERR KBUILD_MODNAME
+                      ": can not find device for minor %d", iminor(inode));
++              retval = -ENODEV;
+               goto exit;
+       }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222928.107324607@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:43 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 33/43] USB: usbtmc: add protocol 1 support
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-usbtmc-add-protocol-1-support.patch
+Content-Length: 781
+Lines: 27
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 228dd05dbfdd0fced8ab1a28ed73b500ba6bb0a6 upstream.
+
+The driver already supports the 1 protocol support, so just add it to
+the MODULE_DEVICE_TABLE entry so it properly picks up these devices.
+
+Thanks to Jouni Rynö for pointing this out.
+
+Reported-by: Jouni Ryno <Jouni.Ryno@fmi.fi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/usbtmc.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/class/usbtmc.c
++++ b/drivers/usb/class/usbtmc.c
+@@ -49,6 +49,7 @@
+ static struct usb_device_id usbtmc_devices[] = {
+       { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), },
++      { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 1), },
+       { 0, } /* terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, usbtmc_devices);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222928.261453123@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:44 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>
+Subject: [patch 34/43] USB: usbfs: keep async URBs until the device file is closed
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch
+Content-Length: 2120
+Lines: 65
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 6ff10464096540e14d7575a72c50d0316d003714 upstream.
+
+The usbfs driver manages a list of completed asynchronous URBs.  But
+it is too eager to free the entries on this list: destroy_async() gets
+called whenever an interface is unbound or a device is removed, and it
+deallocates the outstanding struct async entries for all URBs on that
+interface or device.  This is wrong; the user program should be able
+to reap an URB any time after it has completed, regardless of whether
+or not the interface is still bound or the device is still present.
+
+This patch (as1222) moves the code for deallocating the completed list
+entries from destroy_async() to usbdev_release().  The outstanding
+entries won't be freed until the user program has closed the device
+file, thereby eliminating any possibility that the remaining URBs
+might still be reaped.
+
+This fixes a bug in which a program can hang in the USBDEVFS_REAPURB
+ioctl when the device is unplugged.
+
+Reported-and-tested-by: Martin Poupe <martin.poupe@upek.com>
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/devio.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -359,11 +359,6 @@ static void destroy_async(struct dev_sta
+               spin_lock_irqsave(&ps->lock, flags);
+       }
+       spin_unlock_irqrestore(&ps->lock, flags);
+-      as = async_getcompleted(ps);
+-      while (as) {
+-              free_async(as);
+-              as = async_getcompleted(ps);
+-      }
+ }
+ static void destroy_async_on_interface(struct dev_state *ps,
+@@ -642,6 +637,7 @@ static int usbdev_release(struct inode *
+       struct dev_state *ps = file->private_data;
+       struct usb_device *dev = ps->dev;
+       unsigned int ifnum;
++      struct async *as;
+       usb_lock_device(dev);
+@@ -660,6 +656,12 @@ static int usbdev_release(struct inode *
+       usb_unlock_device(dev);
+       usb_put_dev(dev);
+       put_pid(ps->disc_pid);
++
++      as = async_getcompleted(ps);
++      while (as) {
++              free_async(as);
++              as = async_getcompleted(ps);
++      }
+       kfree(ps);
+       return 0;
+ }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222928.408831283@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:45 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Stern <stern@rowland.harvard.edu>,
+ David Brownell <dbrownell@users.sourceforge.net>
+Subject: [patch 35/43] USB: EHCI: expedite unlinks when the root hub is suspended
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch
+Content-Length: 1437
+Lines: 38
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 391016f6e2fe3b9979b4c6880a76e5e434d6947c upstream.
+
+This patch (as1225) fixes a bug in ehci-hcd.  The condition for
+whether unlinked QHs can become IDLE should not be that the controller
+is halted, but rather that the controller isn't running.  In other
+words when the root hub is suspended, the hardware doesn't own any
+QHs.
+
+This fixes a problem that can show up during hibernation: If a QH is
+only partially unlinked when the root hub is frozen, then when the
+root hub is thawed the QH won't be in the IDLE state.  As a result it
+can't be used properly for new URB submissions.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: Brandon Philips <brandon@ifup.org>
+Tested-by: Brandon Philips <brandon@ifup.org>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-q.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/ehci-q.c
++++ b/drivers/usb/host/ehci-q.c
+@@ -1095,7 +1095,8 @@ static void start_unlink_async (struct e
+       prev->qh_next = qh->qh_next;
+       wmb ();
+-      if (unlikely (ehci_to_hcd(ehci)->state == HC_STATE_HALT)) {
++      /* If the controller isn't running, we don't have to wait for it */
++      if (unlikely(!HC_IS_RUNNING(ehci_to_hcd(ehci)->state))) {
+               /* if (unlikely (qh->reclaim != 0))
+                *      this will recurse, probably not much
+                */
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222928.560756537@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:46 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Karsten Wiese <fzu@wemgehoertderstaat.de>,
+ David Brownell <david-b@pacbell.net>
+Subject: [patch 36/43] USB: EHCI: Fix isochronous URB leak
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=usb-ehci-fix-isochronous-urb-leak.patch
+Content-Length: 2613
+Lines: 76
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Karsten Wiese <fzuuzf@googlemail.com>
+
+commit 508db8c954d55ed30f870d2c24d741ba6269d13c upstream.
+
+ehci-hcd uses usb_get_urb() and usb_put_urb() in an unbalanced way causing
+isochronous URB's kref.counts incrementing once per usb_submit_urb() call.
+The culprit is *usb being set to NULL when usb_put_urb() is called after URB
+is given back.
+Due to other fixes there is no need for ehci-hcd to deal with usb_get_urb()
+nor usb_put_urb() anymore, so patch removes their usages in ehci-hcd.
+Patch also makes ehci_to_hcd(ehci)->self.bandwidth_allocated adjust, if a
+stream finishes.
+
+Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-sched.c |   10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -1536,7 +1536,7 @@ itd_link_urb (
+                                       struct ehci_itd, itd_list);
+                       list_move_tail (&itd->itd_list, &stream->td_list);
+                       itd->stream = iso_stream_get (stream);
+-                      itd->urb = usb_get_urb (urb);
++                      itd->urb = urb;
+                       itd_init (ehci, stream, itd);
+               }
+@@ -1645,7 +1645,7 @@ itd_complete (
+       (void) disable_periodic(ehci);
+       ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+-      if (unlikely (list_empty (&stream->td_list))) {
++      if (unlikely(list_is_singular(&stream->td_list))) {
+               ehci_to_hcd(ehci)->self.bandwidth_allocated
+                               -= stream->bandwidth;
+               ehci_vdbg (ehci,
+@@ -1656,7 +1656,6 @@ itd_complete (
+       iso_stream_put (ehci, stream);
+ done:
+-      usb_put_urb(urb);
+       itd->urb = NULL;
+       if (ehci->clock_frame != itd->frame || itd->index[7] != -1) {
+               /* OK to recycle this ITD now. */
+@@ -1949,7 +1948,7 @@ sitd_link_urb (
+                               struct ehci_sitd, sitd_list);
+               list_move_tail (&sitd->sitd_list, &stream->td_list);
+               sitd->stream = iso_stream_get (stream);
+-              sitd->urb = usb_get_urb (urb);
++              sitd->urb = urb;
+               sitd_patch(ehci, stream, sitd, sched, packet);
+               sitd_link (ehci, (next_uframe >> 3) % ehci->periodic_size,
+@@ -2034,7 +2033,7 @@ sitd_complete (
+       (void) disable_periodic(ehci);
+       ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+-      if (list_empty (&stream->td_list)) {
++      if (list_is_singular(&stream->td_list)) {
+               ehci_to_hcd(ehci)->self.bandwidth_allocated
+                               -= stream->bandwidth;
+               ehci_vdbg (ehci,
+@@ -2045,7 +2044,6 @@ sitd_complete (
+       iso_stream_put (ehci, stream);
+       /* OK to recycle this SITD now that its completion callback ran. */
+ done:
+-      usb_put_urb(urb);
+       sitd->urb = NULL;
+       sitd->stream = NULL;
+       list_move(&sitd->sitd_list, &stream->free_list);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:28 2009
+Message-Id: <20090320222928.729556895@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:47 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ 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>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ grant.likely@secretlab.ca,
+ afleming@freescale.com,
+ linuxppc-dev@ozlabs.org,
+ Johns Daniel <johns.daniel@gmail.com>
+Subject: [patch 37/43] powerpc: Remove extra semicolon in fsl_soc.c
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=powerpc-remove-extra-semicolon-in-fsl_soc.c.patch
+Content-Length: 860
+Lines: 29
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Johns Daniel <jdaniel@computer.org>
+
+TSEC/MDIO will not work with older device trees because of a semicolon
+at the end of a macro resulting in an empty for loop body.
+
+This fix only applies to 2.6.28; this code is gone in 2.6.29, according
+to Grant Likely!
+
+Signed-off-by: Johns Daniel <johns.daniel@gmail.com>
+Acked-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ arch/powerpc/sysdev/fsl_soc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/powerpc/sysdev/fsl_soc.c
++++ b/arch/powerpc/sysdev/fsl_soc.c
+@@ -257,7 +257,7 @@ static int __init gfar_mdio_of_init(void
+               gfar_mdio_of_init_one(np);
+       /* try the deprecated version */
+-      for_each_compatible_node(np, "mdio", "gianfar");
++      for_each_compatible_node(np, "mdio", "gianfar")
+               gfar_mdio_of_init_one(np);
+       return 0;
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222928.879548230@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:48 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Barnes <jbarnes@virtuousgeek.org>,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 38/43] drm/i915: set vblank enabled flag correctly across IRQ install/uninstall
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=drm-i915-set-vblank-enabled-flag-correctly-across-irq-install-uninstall.patch
+Content-Length: 2301
+Lines: 68
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jesse Barnes <jbarnes@virtuousgeek.org>
+
+commit dc1336ff4fe08ae7cfe8301bfd7f0b2cfd31d20a upstream.
+
+In the absence of kernel mode setting, many drivers disable IRQs across VT
+switch.  The core DRM vblank code is missing a check for this case however;
+even after IRQ disable, the vblank code will still have the vblank_enabled
+flag set, so unless we track the fact that they're disabled at IRQ uninstall
+time, when we VT switch back in we won't actually re-enable them, which means
+any apps waiting on vblank before the switch will hang.
+
+This patch does that and also adds a sanity check to the wait condition to
+look for the irq_enabled flag in general, as well as adding a wakeup to the
+IRQ uninstall path.
+
+Fixes fdo bug #18879 with compiz hangs at VT switch.
+
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/drm_irq.c |   18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/drm_irq.c
++++ b/drivers/gpu/drm/drm_irq.c
+@@ -259,7 +259,8 @@ EXPORT_SYMBOL(drm_irq_install);
+  */
+ int drm_irq_uninstall(struct drm_device * dev)
+ {
+-      int irq_enabled;
++      unsigned long irqflags;
++      int irq_enabled, i;
+       if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
+               return -EINVAL;
+@@ -269,6 +270,16 @@ int drm_irq_uninstall(struct drm_device 
+       dev->irq_enabled = 0;
+       mutex_unlock(&dev->struct_mutex);
++      /*
++       * Wake up any waiters so they don't hang.
++       */
++      spin_lock_irqsave(&dev->vbl_lock, irqflags);
++      for (i = 0; i < dev->num_crtcs; i++) {
++              DRM_WAKEUP(&dev->vbl_queue[i]);
++              dev->vblank_enabled[i] = 0;
++      }
++      spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
++
+       if (!irq_enabled)
+               return -EINVAL;
+@@ -617,8 +628,9 @@ int drm_wait_vblank(struct drm_device *d
+               DRM_DEBUG("waiting on vblank count %d, crtc %d\n",
+                         vblwait->request.sequence, crtc);
+               DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ,
+-                          ((drm_vblank_count(dev, crtc)
+-                            - vblwait->request.sequence) <= (1 << 23)));
++                          (((drm_vblank_count(dev, crtc) -
++                             vblwait->request.sequence) <= (1 << 23)) ||
++                           !dev->irq_enabled));
+               if (ret != -EINTR) {
+                       struct timeval now;
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222929.036450372@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:49 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Barnes <jbarnes@virtuousgeek.org>,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 39/43] drm/i915: dont enable vblanks on disabled pipes
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=drm-i915-don-t-enable-vblanks-on-disabled-pipes.patch
+Content-Length: 1062
+Lines: 33
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Jesse Barnes <jbarnes@virtuousgeek.org>
+
+commit 71e0ffa599f54058d9b8724b4b14d0486751681d upstream.
+
+In some cases userland may be confused and try to wait on vblank events from
+pipes that aren't actually enabled.  We shouldn't allow this, so return
+-EINVAL if the pipe isn't on.
+
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_irq.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -400,6 +400,12 @@ int i915_enable_vblank(struct drm_device
+ {
+       drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+       unsigned long irqflags;
++      int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
++      u32 pipeconf;
++
++      pipeconf = I915_READ(pipeconf_reg);
++      if (!(pipeconf & PIPEACONF_ENABLE))
++              return -EINVAL;
+       spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
+       if (IS_I965G(dev))
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222929.211666354@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:50 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 40/43] drm/i915: Dont double-unpin buffers if we take a signal in evict_everything().
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=drm-i915-don-t-double-unpin-buffers-if-we-take-a-signal-in-evict_everything.patch
+Content-Length: 837
+Lines: 27
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eric Anholt <eric@anholt.net>
+
+commit b117763627ef4d24086801dd5f74c9eb2f487790 upstream.
+
+We haven't seen this in practice, but it was visible when looking at a bug
+report from when i915_gem_evict_everything() was broken and would always
+return error.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_gem.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2036,6 +2036,7 @@ i915_gem_execbuffer(struct drm_device *d
+               /* unpin all of our buffers */
+               for (i = 0; i < pinned; i++)
+                       i915_gem_object_unpin(object_list[i]);
++              pinned = 0;
+               /* evict everyone we can from the aperture */
+               ret = i915_gem_evict_everything(dev);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222929.372941874@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:51 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 41/43] drm/i915: Dont print to dmesg when taking signal during object_pin.
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=drm-i915-don-t-print-to-dmesg-when-taking-signal-during-object_pin.patch
+Content-Length: 1230
+Lines: 39
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eric Anholt <eric@anholt.net>
+
+commit f1acec933848219c402c165686677b1c307407f8 upstream.
+
+This showed up in logs where people had a hung chip, so pinning was blocked
+on the chip unpinning other buffers, and the X Server took its scheduler
+signal during that time.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_gem.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2029,7 +2029,8 @@ i915_gem_execbuffer(struct drm_device *d
+               /* error other than GTT full, or we've already tried again */
+               if (ret != -ENOMEM || pin_tries >= 1) {
+-                      DRM_ERROR("Failed to pin buffers %d\n", ret);
++                      if (ret != -ERESTARTSYS)
++                              DRM_ERROR("Failed to pin buffers %d\n", ret);
+                       goto err;
+               }
+@@ -2179,7 +2180,8 @@ i915_gem_object_pin(struct drm_gem_objec
+       if (obj_priv->gtt_space == NULL) {
+               ret = i915_gem_object_bind_to_gtt(obj, alignment);
+               if (ret != 0) {
+-                      DRM_ERROR("Failure to bind: %d", ret);
++                      if (ret != -ERESTARTSYS)
++                              DRM_ERROR("Failure to bind: %d", ret);
+                       return ret;
+               }
+       }
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222929.545390755@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:52 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Anholt <eric@anholt.net>,
+ Dave Airlie <airlied@linux.ie>
+Subject: [patch 42/43] drm/i915: Dont allow objects to get bound while VT switched.
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=drm-i915-don-t-allow-objects-to-get-bound-while-vt-switched.patch
+Content-Length: 2050
+Lines: 67
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Eric Anholt <eric@anholt.net>
+
+commit 9bb2d6f94aeb9a185d69aedbd19421b6da4e3309 upstream.
+
+This avoids a BUG_ON in the enter_vt path due to objects being in the GTT
+when we shouldn't have ever let them be (as we're not supposed to touch the
+device during that time).
+
+This was triggered by a change in the 2D driver to use the GTT mapping of
+objects after pinning them to improve software fallback performance.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Dave Airlie <airlied@linux.ie>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_gem.c |   15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -1161,6 +1161,8 @@ i915_gem_object_bind_to_gtt(struct drm_g
+       struct drm_mm_node *free_space;
+       int page_count, ret;
++      if (dev_priv->mm.suspended)
++              return -EBUSY;
+       if (alignment == 0)
+               alignment = PAGE_SIZE;
+       if (alignment & (PAGE_SIZE - 1)) {
+@@ -2180,7 +2182,7 @@ i915_gem_object_pin(struct drm_gem_objec
+       if (obj_priv->gtt_space == NULL) {
+               ret = i915_gem_object_bind_to_gtt(obj, alignment);
+               if (ret != 0) {
+-                      if (ret != -ERESTARTSYS)
++                      if (ret != -EBUSY && ret != -ERESTARTSYS)
+                               DRM_ERROR("Failure to bind: %d", ret);
+                       return ret;
+               }
+@@ -2703,20 +2705,21 @@ i915_gem_entervt_ioctl(struct drm_device
+               dev_priv->mm.wedged = 0;
+       }
+-      ret = i915_gem_init_ringbuffer(dev);
+-      if (ret != 0)
+-              return ret;
+-
+       dev_priv->mm.gtt_mapping = io_mapping_create_wc(dev->agp->base,
+                                                       dev->agp->agp_info.aper_size
+                                                       * 1024 * 1024);
+       mutex_lock(&dev->struct_mutex);
++      dev_priv->mm.suspended = 0;
++
++      ret = i915_gem_init_ringbuffer(dev);
++      if (ret != 0)
++              return ret;
++
+       BUG_ON(!list_empty(&dev_priv->mm.active_list));
+       BUG_ON(!list_empty(&dev_priv->mm.flushing_list));
+       BUG_ON(!list_empty(&dev_priv->mm.inactive_list));
+       BUG_ON(!list_empty(&dev_priv->mm.request_list));
+-      dev_priv->mm.suspended = 0;
+       mutex_unlock(&dev->struct_mutex);
+       drm_irq_install(dev);
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:29 2009
+Message-Id: <20090320222929.694116500@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:53 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Randy Dunlap <randy.dunlap@oracle.com>
+Subject: [patch 43/43] menu: fix embedded menu snafu
+References: <20090320222810.386844059@mini.kroah.org>
+Content-Disposition: inline; filename=menu-fix-embedded-menu-snafu.patch
+Content-Length: 2610
+Lines: 80
+
+2.6.28-stable review patch.  If anyone has any objections, please let us know.
+
+------------------
+
+From: Randy Dunlap <randy.dunlap@oracle.com>
+
+commit b943c460ff8556a193b28e2145b513f8b978e869 upstream.
+
+The COMPAT_BRK kconfig symbol does not depend on EMBEDDED, but it is in
+the midst of the EMBEDDED menu symbols, so it mucks up the EMBEDDED menu.
+Fix by moving it to just after all of the EMBEDDED menu symbols.  Also,
+ANON_INODES has a similar problem, so move it to just above the EMBEDDED
+menu items since it is used in the EMBEDDED menu.
+
+Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ init/Kconfig |   30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -538,6 +538,9 @@ config CC_OPTIMIZE_FOR_SIZE
+ config SYSCTL
+       bool
++config ANON_INODES
++      bool
++
+ menuconfig EMBEDDED
+       bool "Configure standard kernel features (for small systems)"
+       help
+@@ -643,18 +646,6 @@ config PCSPKR_PLATFORM
+           This option allows to disable the internal PC-Speaker
+           support, saving some memory.
+-config COMPAT_BRK
+-      bool "Disable heap randomization"
+-      default y
+-      help
+-        Randomizing heap placement makes heap exploits harder, but it
+-        also breaks ancient binaries (including anything libc5 based).
+-        This option changes the bootup default to heap randomization
+-        disabled, and can be overriden runtime by setting
+-        /proc/sys/kernel/randomize_va_space to 2.
+-
+-        On non-ancient distros (post-2000 ones) N is usually a safe choice.
+-
+ config BASE_FULL
+       default y
+       bool "Enable full-sized data structures for core" if EMBEDDED
+@@ -672,9 +663,6 @@ config FUTEX
+         support for "fast userspace mutexes".  The resulting kernel may not
+         run glibc-based applications correctly.
+-config ANON_INODES
+-      bool
+-
+ config EPOLL
+       bool "Enable eventpoll support" if EMBEDDED
+       default y
+@@ -760,6 +748,18 @@ config SLUB_DEBUG
+         SLUB sysfs support. /sys/slab will not exist and there will be
+         no support for cache validation etc.
++config COMPAT_BRK
++      bool "Disable heap randomization"
++      default y
++      help
++        Randomizing heap placement makes heap exploits harder, but it
++        also breaks ancient binaries (including anything libc5 based).
++        This option changes the bootup default to heap randomization
++        disabled, and can be overriden runtime by setting
++        /proc/sys/kernel/randomize_va_space to 2.
++
++        On non-ancient distros (post-2000 ones) N is usually a safe choice.
++
+ choice
+       prompt "Choose SLAB allocator"
+       default SLUB
+
+
+From gregkh@mini.kroah.org Fri Mar 20 15:29:22 2009
+Message-Id: <20090320222810.386844059@mini.kroah.org>
+User-Agent: quilt/0.48-1
+Date: Fri, 20 Mar 2009 15:28:10 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/43] 2.6.28.9-stable review
+Content-Length: 3070
+Lines: 58
+
+This is the start of the stable review cycle for the 2.6.28.9 release.
+There are 43 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 Monday, March 23, 20:00:00 UTC.
+Anything received after that time might be too late.
+
+The whole patch series can be found in one patch at:
+       kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.28.9-rc1.gz
+and the diffstat can be found below.
+
+thanks,
+
+greg k-h
+
+ Makefile                                    |    5 ++-
+ arch/ia64/Kconfig                           |    3 +-
+ arch/powerpc/sysdev/fsl_soc.c               |    2 +-
+ arch/s390/lib/div64.c                       |    2 +-
+ arch/x86/include/asm/msr-index.h            |   29 ++++++++++++++++++
+ arch/x86/kernel/cpu/intel.c                 |   13 ++++++++
+ drivers/ata/ata_piix.c                      |   37 +++++++++++++++++++++++
+ drivers/gpu/drm/drm_irq.c                   |   18 +++++++++--
+ drivers/gpu/drm/i915/i915_gem.c             |   20 ++++++++----
+ drivers/gpu/drm/i915/i915_irq.c             |    6 ++++
+ drivers/md/dm-crypt.c                       |   43 +++++++++++++++++++-------
+ drivers/md/dm-io.c                          |    2 +
+ drivers/md/dm-ioctl.c                       |    3 +-
+ drivers/md/dm.c                             |   32 ++++++++++++--------
+ drivers/media/video/cx23885/cx23885-417.c   |    3 +-
+ drivers/media/video/cx23885/cx23885-video.c |    5 ++-
+ drivers/misc/thinkpad_acpi.c                |    8 ++--
+ drivers/usb/class/usbtmc.c                  |    4 ++-
+ drivers/usb/core/devio.c                    |   12 ++++---
+ drivers/usb/host/ehci-q.c                   |    3 +-
+ drivers/usb/host/ehci-sched.c               |   10 ++----
+ drivers/usb/serial/cp2101.c                 |    1 +
+ drivers/usb/serial/ftdi_sio.c               |    5 +++
+ drivers/usb/serial/ftdi_sio.h               |   20 ++++++++++++
+ drivers/usb/serial/option.c                 |   12 ++++----
+ drivers/usb/storage/unusual_devs.h          |   16 +++++++++-
+ fs/aio.c                                    |   37 +++++++++++++++++------
+ fs/nfsd/nfs4xdr.c                           |    1 +
+ include/linux/capability.h                  |    6 ++-
+ init/Kconfig                                |   30 +++++++++---------
+ sound/core/oss/pcm_oss.c                    |    4 +-
+ sound/core/sgbuf.c                          |    7 ++--
+ sound/isa/opl3sa2.c                         |   18 +++++++----
+ sound/pci/hda/hda_intel.c                   |   39 ++++++++++++++++--------
+ sound/pci/mixart/mixart.c                   |    1 +
+ 35 files changed, 337 insertions(+), 120 deletions(-)
+
similarity index 97%
rename from queue-2.6.28/series
rename to releases/2.6.28.9/series
index 1ccc3fcd5f0f694e93663055c9dcc252deee76d2..e168477976a55ac663699627589185cb8fc64230 100644 (file)
@@ -41,3 +41,4 @@ drm-i915-don-t-double-unpin-buffers-if-we-take-a-signal-in-evict_everything.patc
 drm-i915-don-t-print-to-dmesg-when-taking-signal-during-object_pin.patch
 drm-i915-don-t-allow-objects-to-get-bound-while-vt-switched.patch
 menu-fix-embedded-menu-snafu.patch
+ecryptfs-allocate-a-variable-number-of-pages-for-file-headers.patch