linux/drivers/net/ethernet/cisco/enic
Govindarajulu Varadarajan 39dc90c159 enic: Do not call napi_disable when preemption is disabled.
In enic_stop, we disable preemption using local_bh_disable(). We disable
preemption to wait for busy_poll to finish.

napi_disable should not be called here as it might sleep.

Moving napi_disable() call out side of local_bh_disable.

BUG: sleeping function called from invalid context at include/linux/netdevice.h:477
in_atomic(): 1, irqs_disabled(): 0, pid: 443, name: ifconfig
INFO: lockdep is turned off.
Preemption disabled at:[<ffffffffa029c5c4>] enic_rfs_flw_tbl_free+0x34/0xd0 [enic]

CPU: 31 PID: 443 Comm: ifconfig Not tainted 3.17.0-netnext-05504-g59f35b8 #268
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
 ffff8800dac10000 ffff88020b8dfcb8 ffffffff8148a57c 0000000000000000
 ffff88020b8dfcd0 ffffffff8107e253 ffff8800dac12a40 ffff88020b8dfd10
 ffffffffa029305b ffff88020b8dfd48 ffff8800dac10000 ffff88020b8dfd48
Call Trace:
 [<ffffffff8148a57c>] dump_stack+0x4e/0x7a
 [<ffffffff8107e253>] __might_sleep+0x123/0x1a0
 [<ffffffffa029305b>] enic_stop+0xdb/0x4d0 [enic]
 [<ffffffff8138ed7d>] __dev_close_many+0x9d/0xf0
 [<ffffffff8138ef81>] __dev_close+0x31/0x50
 [<ffffffff813974a8>] __dev_change_flags+0x98/0x160
 [<ffffffff81397594>] dev_change_flags+0x24/0x60
 [<ffffffff814085fd>] devinet_ioctl+0x63d/0x710
 [<ffffffff81139c16>] ? might_fault+0x56/0xc0
 [<ffffffff81409ef5>] inet_ioctl+0x65/0x90
 [<ffffffff813768e0>] sock_do_ioctl+0x20/0x50
 [<ffffffff81376ebb>] sock_ioctl+0x20b/0x2e0
 [<ffffffff81197250>] do_vfs_ioctl+0x2e0/0x500
 [<ffffffff81492619>] ? sysret_check+0x22/0x5d
 [<ffffffff81285f23>] ? __this_cpu_preempt_check+0x13/0x20
 [<ffffffff8109fe19>] ? trace_hardirqs_on_caller+0x119/0x270
 [<ffffffff811974ac>] SyS_ioctl+0x3c/0x80
 [<ffffffff814925ed>] system_call_fastpath+0x1a/0x1f

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-10-21 15:24:25 -04:00
..
cq_desc.h
cq_enet_desc.h
enic_api.c enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_api.h
enic_clsf.c enic: fix possible deadlock in enic_stop/ enic_rfs_flw_tbl_free 2014-10-21 15:24:25 -04:00
enic_clsf.h enic: Add ethtool support to show classifier filters added by the driver 2014-07-21 20:22:46 -07:00
enic_dev.c enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_dev.h enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_ethtool.c enic: Add tunable_ops support for rx_copybreak 2014-09-05 12:12:20 -07:00
enic_main.c enic: Do not call napi_disable when preemption is disabled. 2014-10-21 15:24:25 -04:00
enic_pp.c net: enic: slight optimization of addr compare 2013-12-31 16:48:31 -05:00
enic_pp.h
enic_res.c enic: Add Accelerated RFS support 2014-06-23 14:32:19 -07:00
enic_res.h
enic.h enic: implement rx_copybreak 2014-09-05 12:12:20 -07:00
Kconfig
Makefile enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
rq_enet_desc.h
vnic_cq.c
vnic_cq.h enic: Add support for adaptive interrupt coalescing 2014-05-21 17:04:13 -04:00
vnic_dev.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
vnic_dev.h enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
vnic_devcmd.h enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
vnic_enet.h enic: Add Accelerated RFS support 2014-06-23 14:32:19 -07:00
vnic_intr.c
vnic_intr.h
vnic_nic.h
vnic_resource.h
vnic_rq.c
vnic_rq.h enic: add low latency socket busy_poll support 2014-06-23 14:32:19 -07:00
vnic_rss.h
vnic_stats.h
vnic_vic.c
vnic_vic.h
vnic_wq.c
vnic_wq.h
wq_enet_desc.h