From: Chris Wright Date: Mon, 6 Nov 2006 06:28:59 +0000 (-0800) Subject: added patches forwarded from akpm and maks X-Git-Tag: v2.6.18.3~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=508923351dc85cc055dc8efd86f44a9230d003bb;p=thirdparty%2Fkernel%2Fstable-queue.git added patches forwarded from akpm and maks --- 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 index 00000000000..e77c7f688bd --- /dev/null +++ b/queue-2.6.18/fix-ufs-superblock-alignment-issues.patch @@ -0,0 +1,35 @@ +From 86f4f0f9ba6e35fbbc409dfc3d8615c1a9822482 Mon Sep 17 00:00:00 2001 +Message-Id: <200611030607.kA3675OQ010720@shell0.pdx.osdl.net> +From: Eric Sandeen +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 +Cc: Evgeniy Dushistov +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + 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 index 00000000000..cf95c88f0db --- /dev/null +++ b/queue-2.6.18/init_reap_node-initialization-fix.patch @@ -0,0 +1,36 @@ +From 7f6b8876c7e66b0d15af134e2a5b87e55514eb6d Mon Sep 17 00:00:00 2001 +Message-Id: <200611030607.kA367ECC010756@shell0.pdx.osdl.net> +From: Daniel Yeisley +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 +Cc: Andi Kleen +Acked-by: Christoph Lameter +Cc: Pekka Enberg +Cc: Manfred Spraul +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + 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 index 00000000000..bacc2fab7eb --- /dev/null +++ b/queue-2.6.18/ipmi_si_intf.c-sets-bad-class_mask-with-pci_device_class.patch @@ -0,0 +1,32 @@ +From d13adb604693374c5fce47cd1a2017bcf3178eae Mon Sep 17 00:00:00 2001 +Message-Id: <200611030607.kA367DvZ010752@shell0.pdx.osdl.net> +From: Yvan Seth +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 +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + 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); + diff --git a/queue-2.6.18/series b/queue-2.6.18/series index 2274ea56756..0052f8d7ec5 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -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 index 00000000000..b89e022b544 --- /dev/null +++ b/queue-2.6.18/usb-failure-in-usblp-s-error-path.patch @@ -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 +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 +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..e28c17d30e9 --- /dev/null +++ b/queue-2.6.18/usbtouchscreen-use-endpoint-address-from-endpoint-descriptor.patch @@ -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 +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 +Cc: Ralf Lehmann +Cc: J.P. Delport +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Chris Wright +--- + + 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); +