• G
    enic: Do not call napi_disable when preemption is disabled. · 39dc90c1
    Govindarajulu Varadarajan 提交于
    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-g59f35b81 #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: NGovindarajulu Varadarajan <_govind@gmx.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    39dc90c1
enic_main.c 65.8 KB