]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 8 Dec 2013 20:08:53 +0000 (12:08 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 8 Dec 2013 20:08:53 +0000 (12:08 -0800)
added patches:
net-smc91-fix-crash-regression-on-the-versatile.patch

queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch b/queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch
new file mode 100644 (file)
index 0000000..78c8d7b
--- /dev/null
@@ -0,0 +1,139 @@
+From a0c20fb02592d372e744d1d739cda3e1b3defaae Mon Sep 17 00:00:00 2001
+From: Linus Walleij <linus.walleij@linaro.org>
+Date: Thu, 28 Nov 2013 14:33:52 +0100
+Subject: net: smc91: fix crash regression on the versatile
+
+From: Linus Walleij <linus.walleij@linaro.org>
+
+commit a0c20fb02592d372e744d1d739cda3e1b3defaae upstream.
+
+After commit e9e4ea74f06635f2ffc1dffe5ef40c854faa0a90
+"net: smc91x: dont't use SMC_outw for fixing up halfword-aligned data"
+The Versatile SMSC LAN91C111 is crashing like this:
+
+------------[ cut here ]------------
+kernel BUG at /home/linus/linux/drivers/net/ethernet/smsc/smc91x.c:599!
+Internal error: Oops - BUG: 0 [#1] ARM
+Modules linked in:
+CPU: 0 PID: 43 Comm: udhcpc Not tainted 3.13.0-rc1+ #24
+task: c6ccfaa0 ti: c6cd0000 task.ti: c6cd0000
+PC is at smc_hardware_send_pkt+0x198/0x22c
+LR is at smc_hardware_send_pkt+0x24/0x22c
+pc : [<c01be324>]    lr : [<c01be1b0>]    psr: 20000013
+sp : c6cd1d08  ip : 00000001  fp : 00000000
+r10: c02adb08  r9 : 00000000  r8 : c6ced802
+r7 : c786fba0  r6 : 00000146  r5 : c8800000  r4 : c78d6000
+r3 : 0000000f  r2 : 00000146  r1 : 00000000  r0 : 00000031
+Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
+Control: 0005317f  Table: 06cf4000  DAC: 00000015
+Process udhcpc (pid: 43, stack limit = 0xc6cd01c0)
+Stack: (0xc6cd1d08 to 0xc6cd2000)
+1d00:                   00000010 c8800000 c78d6000 c786fba0 c78d6000 c01be868
+1d20: c01be7a4 00004000 00000000 c786fba0 c6c12b80 c0208554 000004d0 c780fc60
+1d40: 00000220 c01fb734 00000000 00000000 00000000 c6c9a440 c6c12b80 c78d6000
+1d60: c786fba0 c6c9a440 00000000 c021d1d8 00000000 00000000 c6c12b80 c78d6000
+1d80: c786fba0 00000001 c6c9a440 c02087f8 c6c9a4a0 00080008 00000000 00000000
+1da0: c78d6000 c786fba0 c78d6000 00000138 00000000 00000000 00000000 00000000
+1dc0: 00000000 c027ba74 00000138 00000138 00000001 00000010 c6cedc00 00000000
+1de0: 00000008 c7404400 c6cd1eec c6cd1f14 c067a73c c065c0b8 00000000 c067a740
+1e00: 01ffffff 002040d0 00000000 00000000 00000000 00000000 00000000 ffffffff
+1e20: 43004400 00110022 c6cdef20 c027ae8c c6ccfaa0 be82d65c 00000014 be82d3cc
+1e40: 00000000 00000000 00000000 c01f2870 00000000 00000000 00000000 c6cd1e88
+1e60: c6ccfaa0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+1e80: 00000000 00000000 00000031 c7802310 c7802300 00000138 c7404400 c0771da0
+1ea0: 00000000 c6cd1eec c7800340 00000138 be82d65c 00000014 be82d3cc c6cd1f08
+1ec0: 00000014 00000000 c7404400 c7404400 00000138 c01f4628 c78d6000 00000000
+1ee0: 00000000 be82d3cc 00000138 c6cd1f08 00000014 c6cd1ee4 00000001 00000000
+1f00: 00000000 00000000 00080011 00000002 06000000 ffffffff 0000ffff 00000002
+1f20: 06000000 ffffffff 0000ffff c00928c8 c065c520 c6cd1f58 00000003 c009299c
+1f40: 00000003 c065c520 c7404400 00000000 c7404400 c01f2218 c78106b0 c7441cb0
+1f60: 00000000 00000006 c06799fc 00000000 00000000 00000006 00000000 c01f3ee0
+1f80: 00000000 00000000 be82d678 be82d65c 00000014 00000001 00000122 c00139c8
+1fa0: c6cd0000 c0013840 be82d65c 00000014 00000006 be82d3cc 00000138 00000000
+1fc0: be82d65c 00000014 00000001 00000122 00000000 00000000 00018cb1 00000000
+1fe0: 00003801 be82d3a8 0003a0c7 b6e9af08 60000010 00000006 00000000 00000000
+[<c01be324>] (smc_hardware_send_pkt+0x198/0x22c) from [<c01be868>] (smc_hard_start_xmit+0xc4/0x1e8)
+[<c01be868>] (smc_hard_start_xmit+0xc4/0x1e8) from [<c0208554>] (dev_hard_start_xmit+0x460/0x4cc)
+[<c0208554>] (dev_hard_start_xmit+0x460/0x4cc) from [<c021d1d8>] (sch_direct_xmit+0x94/0x18c)
+[<c021d1d8>] (sch_direct_xmit+0x94/0x18c) from [<c02087f8>] (dev_queue_xmit+0x238/0x42c)
+[<c02087f8>] (dev_queue_xmit+0x238/0x42c) from [<c027ba74>] (packet_sendmsg+0xbe8/0xd28)
+[<c027ba74>] (packet_sendmsg+0xbe8/0xd28) from [<c01f2870>] (sock_sendmsg+0x84/0xa8)
+[<c01f2870>] (sock_sendmsg+0x84/0xa8) from [<c01f4628>] (SyS_sendto+0xb8/0xdc)
+[<c01f4628>] (SyS_sendto+0xb8/0xdc) from [<c0013840>] (ret_fast_syscall+0x0/0x2c)
+Code: e3130002 1a000001 e3130001 0affffcd (e7f001f2)
+---[ end trace 81104fe70e8da7fe ]---
+Kernel panic - not syncing: Fatal exception in interrupt
+
+This is because the macro operations in smc91x.h defined
+for Versatile are missing SMC_outsw() as used in this
+commit.
+
+The Versatile needs and uses the same accessors as the other
+platforms in the first if(...) clause, just switch it to using
+that and we have one problem less to worry about.
+
+This includes a hunk of a patch from Will Deacon fixin
+the other 32bit platforms as well: Innokom, Ramses, PXA,
+PCM027.
+
+Checkpatch complains about spacing, but I have opted to
+follow the style of this .h-file.
+
+Cc: Russell King <linux@arm.linux.org.uk>
+Cc: Nicolas Pitre <nico@fluxnic.net>
+Cc: Eric Miao <eric.y.miao@gmail.com>
+Cc: Jonathan Cameron <jic23@cam.ac.uk>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/smsc/smc91x.h |   22 ++++------------------
+ 1 file changed, 4 insertions(+), 18 deletions(-)
+
+--- a/drivers/net/ethernet/smsc/smc91x.h
++++ b/drivers/net/ethernet/smsc/smc91x.h
+@@ -46,7 +46,8 @@
+     defined(CONFIG_MACH_LITTLETON) ||\
+     defined(CONFIG_MACH_ZYLONITE2) ||\
+     defined(CONFIG_ARCH_VIPER) ||\
+-    defined(CONFIG_MACH_STARGATE2)
++    defined(CONFIG_MACH_STARGATE2) ||\
++    defined(CONFIG_ARCH_VERSATILE)
+ #include <asm/mach-types.h>
+@@ -154,6 +155,8 @@ static inline void SMC_outw(u16 val, voi
+ #define SMC_outl(v, a, r)     writel(v, (a) + (r))
+ #define SMC_insl(a, r, p, l)  readsl((a) + (r), p, l)
+ #define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l)
++#define SMC_insw(a, r, p, l)  readsw((a) + (r), p, l)
++#define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l)
+ #define SMC_IRQ_FLAGS         (-1)    /* from resource */
+ /* We actually can't write halfwords properly if not word aligned */
+@@ -206,23 +209,6 @@ SMC_outw(u16 val, void __iomem *ioaddr,
+ #define RPC_LSA_DEFAULT               RPC_LED_TX_RX
+ #define RPC_LSB_DEFAULT               RPC_LED_100_10
+-#elif defined(CONFIG_ARCH_VERSATILE)
+-
+-#define SMC_CAN_USE_8BIT      1
+-#define SMC_CAN_USE_16BIT     1
+-#define SMC_CAN_USE_32BIT     1
+-#define SMC_NOWAIT            1
+-
+-#define SMC_inb(a, r)         readb((a) + (r))
+-#define SMC_inw(a, r)         readw((a) + (r))
+-#define SMC_inl(a, r)         readl((a) + (r))
+-#define SMC_outb(v, a, r)     writeb(v, (a) + (r))
+-#define SMC_outw(v, a, r)     writew(v, (a) + (r))
+-#define SMC_outl(v, a, r)     writel(v, (a) + (r))
+-#define SMC_insl(a, r, p, l)  readsl((a) + (r), p, l)
+-#define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l)
+-#define SMC_IRQ_FLAGS         (-1)    /* from resource */
+-
+ #elif defined(CONFIG_MN10300)
+ /*
index 5a3ab406e2f1460395846771eadf6170783cf279..f9a555961cd2a6e99c46db3294091b73a00c1ab7 100644 (file)
@@ -23,3 +23,4 @@ scsi-enclosure-fix-warn_on-in-dual-path-device-removing.patch
 scsi-libsas-fix-usage-of-ata_tf_to_fis.patch
 scsi-hpsa-do-not-discard-scsi-status-on-aborted-commands.patch
 scsi-hpsa-return-0-from-driver-probe-function-on-success-not-1.patch
+net-smc91-fix-crash-regression-on-the-versatile.patch