summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2012-01-09 16:33:18 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2012-01-09 16:33:18 -0800
commit2d376736812104449425a192eeb38dcaac0c600c (patch)
treef1518f47a4c10cc92218fcc81f03791ed39bf130
parent48483783eb7e784b9dc2f321c8798f6c5c2ac908 (diff)
downloadlongterm-queue-2.6.32-2d376736812104449425a192eeb38dcaac0c600c.tar.gz
2.6.32-stable patches
added patches: asix-new-device-id.patch drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch reiserfs-fix-quota-mount-option-parsing.patch reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch usb-isight-fix-kernel-bug-when-loading-firmware.patch usb-update-documentation-for-usbmon.patch
-rw-r--r--queue-2.6.32/asix-new-device-id.patch34
-rw-r--r--queue-2.6.32/drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch43
-rw-r--r--queue-2.6.32/reiserfs-fix-quota-mount-option-parsing.patch32
-rw-r--r--queue-2.6.32/reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch67
-rw-r--r--queue-2.6.32/series6
-rw-r--r--queue-2.6.32/usb-isight-fix-kernel-bug-when-loading-firmware.patch45
-rw-r--r--queue-2.6.32/usb-update-documentation-for-usbmon.patch52
7 files changed, 279 insertions, 0 deletions
diff --git a/queue-2.6.32/asix-new-device-id.patch b/queue-2.6.32/asix-new-device-id.patch
new file mode 100644
index 0000000..3bf29d1
--- /dev/null
+++ b/queue-2.6.32/asix-new-device-id.patch
@@ -0,0 +1,34 @@
+From e8303a3b2196272c3eb994d0fd1a189a958a2bdd Mon Sep 17 00:00:00 2001
+From: Aurelien Jacobs <aurel@gnuage.org>
+Date: Fri, 16 Dec 2011 10:49:22 +0000
+Subject: asix: new device id
+
+From: Aurelien Jacobs <aurel@gnuage.org>
+
+commit e8303a3b2196272c3eb994d0fd1a189a958a2bdd upstream.
+
+Adds the device id needed for the USB Ethernet Adapter delivered by
+ASUS with their Zenbook.
+
+Signed-off-by: Aurelien Jacobs <aurel@gnuage.org>
+Acked-by: Grant Grundler <grundler@chromium.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/usb/asix.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/net/usb/asix.c
++++ b/drivers/net/usb/asix.c
+@@ -1522,6 +1522,10 @@ static const struct usb_device_id produc
+ // ASIX 88772a
+ USB_DEVICE(0x0db0, 0xa877),
+ .driver_info = (unsigned long) &ax88772_info,
++}, {
++ // Asus USB Ethernet Adapter
++ USB_DEVICE (0x0b95, 0x7e2b),
++ .driver_info = (unsigned long) &ax88772_info,
+ },
+ { }, // END
+ };
diff --git a/queue-2.6.32/drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch b/queue-2.6.32/drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
new file mode 100644
index 0000000..c821f2b
--- /dev/null
+++ b/queue-2.6.32/drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
@@ -0,0 +1,43 @@
+From e7c8e8605d0bafc705ff27f9da98a1668427cc0f Mon Sep 17 00:00:00 2001
+From: Julia Lawall <julia@diku.dk>
+Date: Fri, 23 Dec 2011 14:02:55 +0100
+Subject: drivers/usb/class/cdc-acm.c: clear dangling pointer
+
+From: Julia Lawall <julia@diku.dk>
+
+commit e7c8e8605d0bafc705ff27f9da98a1668427cc0f upstream.
+
+On some failures, the country_code field of an acm structure is freed
+without freeing the acm structure itself. Elsewhere, operations including
+memcpy and kfree are performed on the country_code field. The patch sets
+the country_code field to NULL when it is freed, and likewise sets the
+country_code_size field to 0.
+
+Signed-off-by: Julia Lawall <julia@diku.dk>
+Acked-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-acm.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -1264,6 +1264,8 @@ made_compressed_probe:
+ i = device_create_file(&intf->dev, &dev_attr_wCountryCodes);
+ if (i < 0) {
+ kfree(acm->country_codes);
++ acm->country_codes = NULL;
++ acm->country_code_size = 0;
+ goto skip_countries;
+ }
+
+@@ -1272,6 +1274,8 @@ made_compressed_probe:
+ if (i < 0) {
+ device_remove_file(&intf->dev, &dev_attr_wCountryCodes);
+ kfree(acm->country_codes);
++ acm->country_codes = NULL;
++ acm->country_code_size = 0;
+ goto skip_countries;
+ }
+ }
diff --git a/queue-2.6.32/reiserfs-fix-quota-mount-option-parsing.patch b/queue-2.6.32/reiserfs-fix-quota-mount-option-parsing.patch
new file mode 100644
index 0000000..0d72e4a
--- /dev/null
+++ b/queue-2.6.32/reiserfs-fix-quota-mount-option-parsing.patch
@@ -0,0 +1,32 @@
+From a06d789b424190e9f59da391681f908486db2554 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Wed, 21 Dec 2011 17:35:34 +0100
+Subject: reiserfs: Fix quota mount option parsing
+
+From: Jan Kara <jack@suse.cz>
+
+commit a06d789b424190e9f59da391681f908486db2554 upstream.
+
+When jqfmt mount option is not specified on remount, we mistakenly clear
+s_jquota_fmt value stored in superblock. Fix the problem.
+
+CC: reiserfs-devel@vger.kernel.org
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/reiserfs/super.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/reiserfs/super.c
++++ b/fs/reiserfs/super.c
+@@ -1149,7 +1149,8 @@ static void handle_quota_files(struct su
+ kfree(REISERFS_SB(s)->s_qf_names[i]);
+ REISERFS_SB(s)->s_qf_names[i] = qf_names[i];
+ }
+- REISERFS_SB(s)->s_jquota_fmt = *qfmt;
++ if (*qfmt)
++ REISERFS_SB(s)->s_jquota_fmt = *qfmt;
+ }
+ #endif
+
diff --git a/queue-2.6.32/reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch b/queue-2.6.32/reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch
new file mode 100644
index 0000000..2b2f16a
--- /dev/null
+++ b/queue-2.6.32/reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch
@@ -0,0 +1,67 @@
+From a9e36da655e54545c3289b2a0700b5c443de0edd Mon Sep 17 00:00:00 2001
+From: Jeff Mahoney <jeffm@suse.com>
+Date: Wed, 21 Dec 2011 21:18:43 +0100
+Subject: reiserfs: Force inode evictions before umount to avoid crash
+
+From: Jeff Mahoney <jeffm@suse.com>
+
+commit a9e36da655e54545c3289b2a0700b5c443de0edd upstream.
+
+This patch fixes a crash in reiserfs_delete_xattrs during umount.
+
+When shrink_dcache_for_umount clears the dcache from
+generic_shutdown_super, delayed evictions are forced to disk. If an
+evicted inode has extended attributes associated with it, it will
+need to walk the xattr tree to locate and remove them.
+
+But since shrink_dcache_for_umount will BUG if it encounters active
+dentries, the xattr tree must be released before it's called or it will
+crash during every umount.
+
+This patch forces the evictions to occur before generic_shutdown_super
+by calling shrink_dcache_sb first. The additional evictions caused
+by the removal of each associated xattr file and dir will be automatically
+handled as they're added to the LRU list.
+
+CC: reiserfs-devel@vger.kernel.org
+Signed-off-by: Jeff Mahoney <jeffm@suse.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/reiserfs/super.c | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+--- a/fs/reiserfs/super.c
++++ b/fs/reiserfs/super.c
+@@ -445,16 +445,20 @@ int remove_save_link(struct inode *inode
+ static void reiserfs_kill_sb(struct super_block *s)
+ {
+ if (REISERFS_SB(s)) {
+- if (REISERFS_SB(s)->xattr_root) {
+- d_invalidate(REISERFS_SB(s)->xattr_root);
+- dput(REISERFS_SB(s)->xattr_root);
+- REISERFS_SB(s)->xattr_root = NULL;
+- }
+- if (REISERFS_SB(s)->priv_root) {
+- d_invalidate(REISERFS_SB(s)->priv_root);
+- dput(REISERFS_SB(s)->priv_root);
+- REISERFS_SB(s)->priv_root = NULL;
+- }
++ /*
++ * Force any pending inode evictions to occur now. Any
++ * inodes to be removed that have extended attributes
++ * associated with them need to clean them up before
++ * we can release the extended attribute root dentries.
++ * shrink_dcache_for_umount will BUG if we don't release
++ * those before it's called so ->put_super is too late.
++ */
++ shrink_dcache_sb(s);
++
++ dput(REISERFS_SB(s)->xattr_root);
++ REISERFS_SB(s)->xattr_root = NULL;
++ dput(REISERFS_SB(s)->priv_root);
++ REISERFS_SB(s)->priv_root = NULL;
+ }
+
+ kill_block_super(s);
diff --git a/queue-2.6.32/series b/queue-2.6.32/series
index f85d830..126360e 100644
--- a/queue-2.6.32/series
+++ b/queue-2.6.32/series
@@ -3,3 +3,9 @@ documentation-update-stable-address.patch
firmware-fix-an-oops-on-reading-fw_priv-fw-in-sysfs-loading-file.patch
offb-fix-setting-of-the-pseudo-palette-for-8bpp.patch
offb-fix-bug-in-calculating-requested-vram-size.patch
+asix-new-device-id.patch
+reiserfs-fix-quota-mount-option-parsing.patch
+reiserfs-force-inode-evictions-before-umount-to-avoid-crash.patch
+usb-update-documentation-for-usbmon.patch
+drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch
+usb-isight-fix-kernel-bug-when-loading-firmware.patch
diff --git a/queue-2.6.32/usb-isight-fix-kernel-bug-when-loading-firmware.patch b/queue-2.6.32/usb-isight-fix-kernel-bug-when-loading-firmware.patch
new file mode 100644
index 0000000..faad2e2
--- /dev/null
+++ b/queue-2.6.32/usb-isight-fix-kernel-bug-when-loading-firmware.patch
@@ -0,0 +1,45 @@
+From 59bf5cf94f0fa3b08fb1258b52649077b7d0914d Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Mon, 5 Dec 2011 14:02:59 -0800
+Subject: USB: isight: fix kernel bug when loading firmware
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 59bf5cf94f0fa3b08fb1258b52649077b7d0914d upstream.
+
+We were sending data on the stack when uploading firmware, which causes
+some machines fits, and is not allowed. Fix this by using the buffer we
+already had around for this very purpose.
+
+Reported-by: Wouter M. Koolen <wmkoolen@cwi.nl>
+Tested-by: Wouter M. Koolen <wmkoolen@cwi.nl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/misc/isight_firmware.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/misc/isight_firmware.c
++++ b/drivers/usb/misc/isight_firmware.c
+@@ -54,8 +54,9 @@ static int isight_firmware_load(struct u
+
+ ptr = firmware->data;
+
++ buf[0] = 0x01;
+ if (usb_control_msg
+- (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\1", 1,
++ (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1,
+ 300) != 1) {
+ printk(KERN_ERR
+ "Failed to initialise isight firmware loader\n");
+@@ -99,8 +100,9 @@ static int isight_firmware_load(struct u
+ }
+ }
+
++ buf[0] = 0x00;
+ if (usb_control_msg
+- (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\0", 1,
++ (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1,
+ 300) != 1) {
+ printk(KERN_ERR "isight firmware loading completion failed\n");
+ ret = -ENODEV;
diff --git a/queue-2.6.32/usb-update-documentation-for-usbmon.patch b/queue-2.6.32/usb-update-documentation-for-usbmon.patch
new file mode 100644
index 0000000..4fae440
--- /dev/null
+++ b/queue-2.6.32/usb-update-documentation-for-usbmon.patch
@@ -0,0 +1,52 @@
+From d8cae98cddd286e38db1724dda1b0e7b467f9237 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Wed, 4 Jan 2012 16:36:35 -0500
+Subject: USB: update documentation for usbmon
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit d8cae98cddd286e38db1724dda1b0e7b467f9237 upstream.
+
+The documentation for usbmon is out of date; the usbfs "devices" file
+now exists in /sys/kernel/debug/usb rather than /proc/bus/usb. This
+patch (as1505) updates the documentation accordingly, and also
+mentions that the necessary information can be found by running lsusb.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: Pete Zaitcev <zaitcev@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/usb/usbmon.txt | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+--- a/Documentation/usb/usbmon.txt
++++ b/Documentation/usb/usbmon.txt
+@@ -43,10 +43,11 @@ This allows to filter away annoying devi
+
+ 2. Find which bus connects to the desired device
+
+-Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to
+-the device. Usually you do it by looking for the vendor string. If you have
+-many similar devices, unplug one and compare two /proc/bus/usb/devices outputs.
+-The T-line will have a bus number. Example:
++Run "cat /sys/kernel/debug/usb/devices", and find the T-line which corresponds
++to the device. Usually you do it by looking for the vendor string. If you have
++many similar devices, unplug one and compare the two
++/sys/kernel/debug/usb/devices outputs. The T-line will have a bus number.
++Example:
+
+ T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
+ D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
+@@ -54,7 +55,10 @@ P: Vendor=0557 ProdID=2004 Rev= 1.00
+ S: Manufacturer=ATEN
+ S: Product=UC100KM V2.00
+
+-Bus=03 means it's bus 3.
++"Bus=03" means it's bus 3. Alternatively, you can look at the output from
++"lsusb" and get the bus number from the appropriate line. Example:
++
++Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00
+
+ 3. Start 'cat'
+