]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more .27 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Dec 2009 19:27:57 +0000 (11:27 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Dec 2009 19:27:57 +0000 (11:27 -0800)
queue-2.6.27/fix-csum_ipv6_magic.patch [new file with mode: 0644]
queue-2.6.27/series
queue-2.6.27/usb-fix-mos7840-problem-with-minor-numbers.patch [new file with mode: 0644]

diff --git a/queue-2.6.27/fix-csum_ipv6_magic.patch b/queue-2.6.27/fix-csum_ipv6_magic.patch
new file mode 100644 (file)
index 0000000..da92cc8
--- /dev/null
@@ -0,0 +1,52 @@
+From 5afe18d2f58812f3924edbd215464e5e3e8545e7 Mon Sep 17 00:00:00 2001
+From: Jiri Bohac <jbohac@suse.cz>
+Date: Wed, 2 Sep 2009 11:00:46 +0200
+Subject: [IA64] fix csum_ipv6_magic()
+
+From: Jiri Bohac <jbohac@suse.cz>
+
+commit 5afe18d2f58812f3924edbd215464e5e3e8545e7 upstream.
+
+The 32-bit parameters (len and csum) of csum_ipv6_magic() are passed in 64-bit
+registers in2 and in4. The high order 32 bits of the registers were never
+cleared, and garbage was sometimes calculated into the checksum.
+
+Fix this by clearing the high order 32 bits of these registers.
+
+Signed-off-by: Jiri Bohac <jbohac@suse.cz>
+Signed-off-by: Tony Luck <tony.luck@intel.com>
+Cc: Dennis Schridde <devurandom@gmx.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/ia64/lib/ip_fast_csum.S |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/arch/ia64/lib/ip_fast_csum.S
++++ b/arch/ia64/lib/ip_fast_csum.S
+@@ -96,20 +96,22 @@ END(ip_fast_csum)
+ GLOBAL_ENTRY(csum_ipv6_magic)
+       ld4     r20=[in0],4
+       ld4     r21=[in1],4
+-      dep     r15=in3,in2,32,16
++      zxt4    in2=in2
+       ;;
+       ld4     r22=[in0],4
+       ld4     r23=[in1],4
+-      mux1    r15=r15,@rev
++      dep     r15=in3,in2,32,16
+       ;;
+       ld4     r24=[in0],4
+       ld4     r25=[in1],4
+-      shr.u   r15=r15,16
++      mux1    r15=r15,@rev
+       add     r16=r20,r21
+       add     r17=r22,r23
++      zxt4    in4=in4
+       ;;
+       ld4     r26=[in0],4
+       ld4     r27=[in1],4
++      shr.u   r15=r15,16
+       add     r18=r24,r25
+       add     r8=r16,r17
+       ;;
index 2f06465f62dfe7d725c8057cb45234e2e25e5eb6..7fb5f28766e8f77e133e19a20a210dcbaa490eed 100644 (file)
@@ -11,3 +11,5 @@ x86-asus-p4s800-reboot-bios-quirk.patch
 x86-calgary-iommu-quirk-find-nearest-matching-calgary-while-walking-up-the-pci-tree.patch
 x86-fix-iommu-nodac-parameter-handling.patch
 x86-gart-pci-gart_64.c-use-correct-length-in-strncmp.patch
+fix-csum_ipv6_magic.patch
+usb-fix-mos7840-problem-with-minor-numbers.patch
diff --git a/queue-2.6.27/usb-fix-mos7840-problem-with-minor-numbers.patch b/queue-2.6.27/usb-fix-mos7840-problem-with-minor-numbers.patch
new file mode 100644 (file)
index 0000000..9691686
--- /dev/null
@@ -0,0 +1,65 @@
+From linux-kernel.bfrz@manchmal.in-ulm.de  Wed Dec 16 11:26:00 2009
+From: Tony Cook <tony-cook@bigpond.com>
+Date: Tue, 8 Dec 2009 23:25:47 +0100
+Subject: USB: fix mos7840 problem with minor numbers
+To: Greg KH <greg@kroah.com>
+Cc: stable@kernel.org
+Message-ID: <1260310880@msgid.manchmal.in-ulm.de>
+
+From: Tony Cook <tony-cook@bigpond.com>
+
+commit 37768adf9a1d49aeac0db1ba3dc28b3274b7b789 upstream
+
+This patch fixes a problem with any mos7840 device where the use of the
+field "minor" before it is initialised results in all the devices being
+overlaid in memory (minor = 0 for all instances)
+
+Contributed by: Phillip Branch
+
+Backported to .27 by Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
+
+Signed-off-by: Tony Cook <tony-cook@bigpond.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/usb/serial/mos7840.c |   21 ++++++++++++++-------
+ 1 file changed, 14 insertions(+), 7 deletions(-)
+
+--- a/drivers/usb/serial/mos7840.c
++++ b/drivers/usb/serial/mos7840.c
+@@ -2453,9 +2453,14 @@ static int mos7840_startup(struct usb_se
+               mos7840_set_port_private(serial->port[i], mos7840_port);
+               spin_lock_init(&mos7840_port->pool_lock);
+-              mos7840_port->port_num = ((serial->port[i]->number -
+-                                         (serial->port[i]->serial->minor)) +
+-                                        1);
++              /* minor is not initialised until later by
++               * usb-serial.c:get_free_serial() and cannot therefore be used
++               * to index device instances */
++              mos7840_port->port_num = i + 1;
++              dbg ("serial->port[i]->number = %d", serial->port[i]->number);
++              dbg ("serial->port[i]->serial->minor = %d", serial->port[i]->serial->minor);
++              dbg ("mos7840_port->port_num = %d", mos7840_port->port_num);
++              dbg ("serial->minor = %d", serial->minor);
+               if (mos7840_port->port_num == 1) {
+                       mos7840_port->SpRegOffset = 0x0;
+@@ -2666,10 +2671,12 @@ static void mos7840_disconnect(struct us
+       for (i = 0; i < serial->num_ports; ++i) {
+               mos7840_port = mos7840_get_port_private(serial->port[i]);
+-              spin_lock_irqsave(&mos7840_port->pool_lock, flags);
+-              mos7840_port->zombie = 1;
+-              spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
+-              usb_kill_urb(mos7840_port->control_urb);
++              if (mos7840_port) {
++                      spin_lock_irqsave(&mos7840_port->pool_lock, flags);
++                      mos7840_port->zombie = 1;
++                      spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
++                      usb_kill_urb(mos7840_port->control_urb);
++              }
+       }
+       dbg("%s\n", "Thank u ::");