]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
added patches forwarded from akpm and maks
authorChris Wright <chrisw@sous-sol.org>
Mon, 6 Nov 2006 06:28:59 +0000 (22:28 -0800)
committerChris Wright <chrisw@sous-sol.org>
Mon, 6 Nov 2006 06:28:59 +0000 (22:28 -0800)
queue-2.6.18/fix-ufs-superblock-alignment-issues.patch [new file with mode: 0644]
queue-2.6.18/init_reap_node-initialization-fix.patch [new file with mode: 0644]
queue-2.6.18/ipmi_si_intf.c-sets-bad-class_mask-with-pci_device_class.patch [new file with mode: 0644]
queue-2.6.18/series
queue-2.6.18/usb-failure-in-usblp-s-error-path.patch [new file with mode: 0644]
queue-2.6.18/usbtouchscreen-use-endpoint-address-from-endpoint-descriptor.patch [new file with mode: 0644]

diff --git a/queue-2.6.18/fix-ufs-superblock-alignment-issues.patch b/queue-2.6.18/fix-ufs-superblock-alignment-issues.patch
new file mode 100644 (file)
index 0000000..e77c7f6
--- /dev/null
@@ -0,0 +1,35 @@
+From 86f4f0f9ba6e35fbbc409dfc3d8615c1a9822482 Mon Sep 17 00:00:00 2001
+Message-Id: <200611030607.kA3675OQ010720@shell0.pdx.osdl.net>
+From: Eric Sandeen <sandeen@redhat.com>
+Date: Thu, 2 Nov 2006 22:07:05 -0800
+Subject: fix UFS superblock alignment issues
+
+ufs2 fails to mount on x86_64, claiming bad magic.  This is because
+ufs_super_block_third's fs_un1 member is padded out by 4 bytes for 8-byte
+alignment, pushing down the rest of the struct.
+
+Forcing this to be packed solves it.  I took a quick look over other
+on-disk structures and didn't immediately find other problems.  I was able
+to mount & ls a populated ufs2 filesystem w/ this change.
+
+Signed-off-by: Eric Sandeen <sandeen@redhat.com>
+Cc: Evgeniy Dushistov <dushistov@mail.ru>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ include/linux/ufs_fs.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/include/linux/ufs_fs.h
++++ linux-2.6.18.2/include/linux/ufs_fs.h
+@@ -900,7 +900,7 @@ struct ufs_super_block_third {
+                       __fs64   fs_csaddr;     /* blk addr of cyl grp summary area */
+                       __fs64    fs_pendingblocks;/* blocks in process of being freed */
+                       __fs32    fs_pendinginodes;/*inodes in process of being freed */
+-              } fs_u2;
++              } __attribute__ ((packed)) fs_u2;
+       } fs_un1;
+       union {
+               struct {
diff --git a/queue-2.6.18/init_reap_node-initialization-fix.patch b/queue-2.6.18/init_reap_node-initialization-fix.patch
new file mode 100644 (file)
index 0000000..cf95c88
--- /dev/null
@@ -0,0 +1,36 @@
+From 7f6b8876c7e66b0d15af134e2a5b87e55514eb6d Mon Sep 17 00:00:00 2001
+Message-Id: <200611030607.kA367ECC010756@shell0.pdx.osdl.net>
+From: Daniel Yeisley <dan.yeisley@unisys.com>
+Date: Thu, 2 Nov 2006 22:07:14 -0800
+Subject: init_reap_node() initialization fix
+
+It looks like there is a bug in init_reap_node() in slab.c that can cause
+multiple oops's on certain ES7000 configurations.  The variable reap_node
+is defined per cpu, but only initialized on a single CPU.  This causes an
+oops in next_reap_node() when __get_cpu_var(reap_node) returns the wrong
+value.  Fix is below.
+
+Signed-off-by: Dan Yeisley <dan.yeisley@unisys.com>
+Cc: Andi Kleen <ak@suse.de>
+Acked-by: Christoph Lameter <clameter@engr.sgi.com>
+Cc: Pekka Enberg <penberg@cs.helsinki.fi>
+Cc: Manfred Spraul <manfred@colorfullife.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ mm/slab.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/mm/slab.c
++++ linux-2.6.18.2/mm/slab.c
+@@ -867,7 +867,7 @@ static void init_reap_node(int cpu)
+       if (node == MAX_NUMNODES)
+               node = first_node(node_online_map);
+-      __get_cpu_var(reap_node) = node;
++      per_cpu(reap_node, cpu) = node;
+ }
+ static void next_reap_node(void)
diff --git a/queue-2.6.18/ipmi_si_intf.c-sets-bad-class_mask-with-pci_device_class.patch b/queue-2.6.18/ipmi_si_intf.c-sets-bad-class_mask-with-pci_device_class.patch
new file mode 100644 (file)
index 0000000..bacc2fa
--- /dev/null
@@ -0,0 +1,32 @@
+From d13adb604693374c5fce47cd1a2017bcf3178eae Mon Sep 17 00:00:00 2001
+Message-Id: <200611030607.kA367DvZ010752@shell0.pdx.osdl.net>
+From: Yvan Seth <bugzilla.kernel.org@malignity.net>
+Date: Thu, 2 Nov 2006 22:07:13 -0800
+Subject: ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS
+
+Taken from http://bugzilla.kernel.org/show_bug.cgi?id=7439
+
+It looks like device registration in drivers/char/ipmi/ipmi_si_intf.c was
+cleaned up and a small error was made when setting the class_mask.  The fix
+is simple as the correct mask value is defined in the code but is not used.
+
+Acked-by: Corey Minyard <minyard@acm.org>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ drivers/char/ipmi/ipmi_si_intf.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/drivers/char/ipmi/ipmi_si_intf.c
++++ linux-2.6.18.2/drivers/char/ipmi/ipmi_si_intf.c
+@@ -1845,7 +1845,7 @@ static int ipmi_pci_resume(struct pci_de
+ static struct pci_device_id ipmi_pci_devices[] = {
+       { PCI_DEVICE(PCI_HP_VENDOR_ID, PCI_MMC_DEVICE_ID) },
+-      { PCI_DEVICE_CLASS(PCI_ERMC_CLASSCODE, PCI_ERMC_CLASSCODE) }
++      { PCI_DEVICE_CLASS(PCI_ERMC_CLASSCODE, PCI_ERMC_CLASSCODE_MASK) }
+ };
+ MODULE_DEVICE_TABLE(pci, ipmi_pci_devices);
index 2274ea56756cf1279c23176c4cbe71e5c5ec9e6d..0052f8d7ec5573397b9f97079a5b1b4556b0b912 100644 (file)
@@ -5,3 +5,8 @@ fix-sys_move_pages-when-a-null-node-list-is-passed.patch
 splice-fix-problem-introduced-with-inode-diet.patch
 sparc-fix-missed-bump-of-nr_syscalls.patch
 bcm43xx-drain-tx-status-before-starting-irqs.patch
+fix-ufs-superblock-alignment-issues.patch
+ipmi_si_intf.c-sets-bad-class_mask-with-pci_device_class.patch
+init_reap_node-initialization-fix.patch
+usb-failure-in-usblp-s-error-path.patch
+usbtouchscreen-use-endpoint-address-from-endpoint-descriptor.patch
diff --git a/queue-2.6.18/usb-failure-in-usblp-s-error-path.patch b/queue-2.6.18/usb-failure-in-usblp-s-error-path.patch
new file mode 100644 (file)
index 0000000..b89e022
--- /dev/null
@@ -0,0 +1,33 @@
+From stable-bounces@linux.kernel.org  Sat Nov  4 05:08:57 2006
+Date: Fri, 3 Nov 2006 22:59:29 GMT
+Message-Id: <200611032259.kA3MxTt1007170@hera.kernel.org>
+From: Oliver Neukum <oliver@neukum.name>
+To: stable@kernel.org, maks@sternwelten.at
+Subject: USB: failure in usblp's error path
+
+USB: failure in usblp's error path
+
+if urb submission fails due to a transient error here eg. ENOMEM
+, the driver is dead. This fixes it.
+
+       Regards
+               Oliver
+
+Signed-off-by: Oliver Neukum <oliver@neukum.name>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/usb/class/usblp.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- linux-2.6.18.2.orig/drivers/usb/class/usblp.c
++++ linux-2.6.18.2/drivers/usb/class/usblp.c
+@@ -701,6 +701,7 @@ static ssize_t usblp_write(struct file *
+               usblp->wcomplete = 0;
+               err = usb_submit_urb(usblp->writeurb, GFP_KERNEL);
+               if (err) {
++                      usblp->wcomplete = 1;
+                       if (err != -ENOMEM)
+                               count = -EIO;
+                       else
diff --git a/queue-2.6.18/usbtouchscreen-use-endpoint-address-from-endpoint-descriptor.patch b/queue-2.6.18/usbtouchscreen-use-endpoint-address-from-endpoint-descriptor.patch
new file mode 100644 (file)
index 0000000..e28c17d
--- /dev/null
@@ -0,0 +1,32 @@
+From stable-bounces@linux.kernel.org  Sat Nov  4 05:32:32 2006
+Date: Fri, 3 Nov 2006 22:59:28 GMT
+Message-Id: <200611032259.kA3MxS6f007150@hera.kernel.org>
+From: Daniel Ritz <daniel.ritz-ml@swissonline.ch>
+To: stable@kernel.org, maks@sternwelten.at
+Subject: usbtouchscreen: use endpoint address from endpoint descriptor
+
+use the endpoint address from the endpoint descriptor instead of the hardcoding
+it to 0x81. at least some ITM based screen use a different address and don't work
+without this.
+
+Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
+Cc: Ralf Lehmann <ralf@lehmann.cc>
+Cc: J.P. Delport <jpdelport@csir.co.za>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/usb/input/usbtouchscreen.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/drivers/usb/input/usbtouchscreen.c
++++ linux-2.6.18.2/drivers/usb/input/usbtouchscreen.c
+@@ -522,7 +522,7 @@ static int usbtouch_probe(struct usb_int
+                                    type->max_press, 0, 0);
+       usb_fill_int_urb(usbtouch->irq, usbtouch->udev,
+-                       usb_rcvintpipe(usbtouch->udev, 0x81),
++                       usb_rcvintpipe(usbtouch->udev, endpoint->bEndpointAddress),
+                        usbtouch->data, type->rept_size,
+                        usbtouch_irq, usbtouch, endpoint->bInterval);