linux/drivers/net/ethernet/chelsio/cxgb3
Benjamin Herrenschmidt 7cc47d139f cxgb3: Missing rtnl lock in error recovery
When exercising error injection on IBM pseries machine, I hit the
following warning:

[  251.450043] RTAS: event: 89, Type: Platform Error, Severity: 2
[  253.549822] cxgb3 0006:01:00.0: enabling device (0140 -> 0142)
[  253.713560] cxgb3 0006:01:00.0: adapter recovering, PEX ERR 0x100
[  254.895437] RTNL: assertion failed at net/core/dev.c (2031)
[  254.895467] CPU: 6 PID: 5449 Comm: eehd Tainted: G        W    3.10.0-rc7-00157-gea461ab #19
[  254.895474] Call Trace:
[  254.895483] [c000000fac56f7d0] [c000000000014dcc] .show_stack+0x7c/0x1f0 (unreliable)
[  254.895493] [c000000fac56f8a0] [c0000000007ba318] .dump_stack+0x28/0x3c
[  254.895500] [c000000fac56f910] [c0000000006c0384] .netif_set_real_num_tx_queues+0x224/0x230
[  254.895515] [c000000fac56f9b0] [d00000000ef35510] .cxgb_open+0x80/0x3f0 [cxgb3]
[  254.895525] [c000000fac56fa50] [d00000000ef35914] .t3_resume_ports+0x94/0x100 [cxgb3]
[  254.895533] [c000000fac56fae0] [c00000000005fc8c] .eeh_report_resume+0x8c/0xd0
[  254.895539] [c000000fac56fb60] [c00000000005e9fc] .eeh_pe_dev_traverse+0x9c/0x190
[  254.895545] [c000000fac56fc10] [c000000000060000] .eeh_handle_event+0x110/0x330
[  254.895551] [c000000fac56fca0] [c000000000060350] .eeh_event_handler+0x130/0x1a0
[  254.895558] [c000000fac56fd30] [c0000000000ad758] .kthread+0xe8/0xf0
[  254.895566] [c000000fac56fe30] [c00000000000a05c] .ret_from_kernel_thread+0x5c/0x80

It appears that t3_resume_ports() is called with the rtnl_lock held from
the fatal error task but not from the PCI error callbacks. This fixes it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-07-02 12:37:48 -07:00
..
adapter.h
ael1002.c
aq100x.c
common.h ethernet: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-10-31 14:02:45 -04:00
cxgb3_ctl_defs.h
cxgb3_defs.h
cxgb3_ioctl.h
cxgb3_main.c cxgb3: Missing rtnl lock in error recovery 2013-07-02 12:37:48 -07:00
cxgb3_offload.c cxgb3: Fix warning about using rcu_dereference when not in a rcu-locked section 2013-05-23 00:03:54 -07:00
cxgb3_offload.h
firmware_exports.h
l2t.c cxgb3: Convert t3_l2t_get() over to dst_neigh_lookup(). 2012-07-05 02:29:40 -07:00
l2t.h cxgb3: Convert t3_l2t_get() over to dst_neigh_lookup(). 2012-07-05 02:29:40 -07:00
Makefile
mc5.c
regs.h
sge_defs.h
sge.c cxgb3: Correct comparisons and calculations using skb->tail and skb-transport_header 2013-06-04 17:37:59 -07:00
t3_cpl.h
t3_hw.c remove init of dev->perm_addr in drivers 2013-01-08 18:00:48 -08:00
t3cdev.h
version.h cxgb3: update firmware version 2012-02-15 15:48:19 -05:00
vsc8211.c
xgmac.c