Markus Brunner cbea270714 gianfar: stop send queue before resetting gianfar
After a transmit timed out, the reset task will be called, which will free the
allocated resources(stop_gfar). If gfar_poll will be called before the
resources get allocated again gfar_clean_tx_ring will call
dev_kfree_skb_any(NULL).

Example crash:

ops: Kernel access of bad area, sig: 11 [#1]
PREEMPT RSBBA100
Modules linked in:
NIP: c01a10c4 LR: c013b254 CTR: c013c038
REGS: c02e7d20 TRAP: 0300   Not tainted  (2.6.27.20)
MSR: 00001032 <ME,IR,DR>  CR: 24000082  XER: 20000000
DAR: 000000a0, DSISR: 20000000
TASK = c02ce578[0] 'swapper' THREAD: c02e6000
GPR00: 000000a0 c02e7dd0 c02ce578 00000000 00000040 00000001 c02ec1c0 
00001032
GPR08: c080d1e0 df9ea800 00000000 00000000 24000082 ffffffff 0404f000 
00000000
GPR16: ffffffbf ffffffff ffffffff ffdff7ff ffffffff c02d0fd4 00100100 
00200200
GPR24: c031220c 00000001 00000001 00000000 00000000 df849800 ff109000 
df849b80
NIP [c01a10c4] dev_kfree_skb_irq+0x18/0x70
LR [c013b254] gfar_clean_tx_ring+0x70/0x11c
Call Trace:
[c02e7dd0] [c003e978] update_wall_time+0x730/0x744 (unreliable)
[c02e7df0] [c013b254] gfar_clean_tx_ring+0x70/0x11c
[c02e7e10] [c013c07c] gfar_poll+0x44/0x150
[c02e7e30] [c01a064c] net_rx_action+0xa8/0x19c
[c02e7e70] [c00251d4] __do_softirq+0x64/0xc0
[c02e7e90] [c0006384] do_softirq+0x40/0x58
[c02e7ea0] [c00250a8] irq_exit+0x40/0x9c
[c02e7eb0] [c000642c] do_IRQ+0x90/0xac
[c02e7ec0] [c0010ab4] ret_from_except+0x0/0x14
--- Exception: 501 at cpu_idle+0x9c/0xf8
    LR = cpu_idle+0x9c/0xf8
[c02e7f80] [c0009820] cpu_idle+0x58/0xf8 (unreliable)
[c02e7fa0] [c01fb8c8] __got2_end+0x7c/0x90
[c02e7fc0] [c026c794] start_kernel+0x2c0/0x2d4
[c02e7ff0] [00003438] 0x3438
Instruction dump:
7fa00124 80010024 bba10014 38210020 7c0803a6 4e800020 9421ffe0 7c0802a6
7c6b1b78 90010024 380300a0 bfa10014 <7d200028> 3129ffff 7d20012d 40a2fff4
Kernel panic - not syncing: Fatal exception in interrupt

This Patch calls netif_stop_queue before calling stop_gfar.

Signed-off-by: Markus Brunner <super.firetwister@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-15 02:35:40 -07:00
..
2009-04-11 02:53:56 -07:00
2009-03-23 01:18:58 -07:00
2009-04-14 16:53:14 -07:00
2008-12-17 15:37:55 -08:00
2009-04-13 15:16:33 -07:00
2009-04-14 16:38:49 -07:00
2009-04-14 16:38:49 -07:00
2009-04-11 02:06:43 -07:00
2009-04-04 16:36:18 -07:00
2009-01-21 14:02:21 -08:00
2008-12-08 01:14:16 -08:00
2009-03-27 00:46:38 -07:00
2009-01-21 14:02:23 -08:00
2009-01-21 14:02:24 -08:00
2009-01-21 14:02:24 -08:00
2009-01-21 14:02:25 -08:00
2008-11-25 18:12:49 -08:00
2009-04-14 21:57:00 -07:00
2008-11-25 18:25:32 -08:00
2009-04-11 02:53:46 -07:00
2009-01-07 18:10:24 -08:00
2009-04-14 21:57:02 -07:00
2009-04-14 21:57:03 -07:00
2009-04-04 16:51:14 -07:00
2009-04-08 15:50:07 -07:00
2009-04-04 16:51:14 -07:00
2009-03-02 22:32:48 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-03-02 22:32:43 -08:00
2008-09-22 19:27:10 -07:00
2009-01-07 17:34:36 -08:00
2009-01-07 17:34:36 -08:00
2009-04-14 21:57:04 -07:00
2008-11-20 20:28:00 -08:00
2009-01-07 17:30:09 -08:00
2009-01-21 14:33:50 -08:00
2009-04-08 15:56:33 -07:00
2008-11-25 18:23:59 -08:00
2009-04-08 15:44:45 -07:00
2009-02-01 00:58:26 -08:00
2009-04-02 13:57:30 -07:00
2009-02-04 16:43:44 -08:00
2009-04-02 01:13:47 -07:00
2009-02-26 21:02:19 -08:00
2008-11-25 18:24:57 -08:00
2009-01-21 14:33:50 -08:00
2009-01-06 10:47:44 -08:00
2009-04-13 15:16:31 -07:00
2008-08-14 04:26:38 -04:00
2009-01-21 14:33:50 -08:00
2009-03-27 00:46:48 -07:00
2008-11-25 18:24:38 -08:00
2009-04-13 15:16:29 -07:00
2009-04-13 15:16:27 -07:00
2009-04-13 15:16:26 -07:00
2009-04-04 16:38:42 -07:00
2009-03-27 00:46:53 -07:00
2009-03-27 00:46:53 -07:00
2009-03-28 23:37:27 -07:00
2009-04-08 15:52:16 -07:00
2008-12-08 01:14:16 -08:00
2009-01-21 14:33:50 -08:00
2009-01-07 17:26:48 -08:00
2009-03-13 16:09:12 -07:00
2009-03-13 16:09:12 -07:00
2009-03-13 16:09:12 -07:00
2008-11-10 15:11:56 -05:00
2009-04-08 15:50:43 -07:00
2009-01-07 17:56:54 -08:00
2009-04-13 15:16:25 -07:00
2008-08-07 01:55:50 -04:00
2009-01-07 18:09:36 -08:00
2009-03-27 00:46:48 -07:00
2008-11-25 18:25:49 -08:00
2008-08-29 02:13:33 -07:00
2008-08-29 02:14:29 -07:00
2008-08-29 02:14:43 -07:00
2009-03-20 00:51:22 -07:00
2009-04-13 15:16:23 -07:00
2008-05-30 22:18:02 -04:00
2009-04-14 02:09:43 -07:00
2009-03-03 23:36:04 -08:00
2009-01-11 00:06:36 -08:00
2009-04-13 15:16:21 -07:00
2009-01-21 14:02:31 -08:00