• Ido Schimmel's avatar
    drop_monitor: Do not cancel uninitialized work item · dfa7f709
    Ido Schimmel authored
    Drop monitor uses a work item that takes care of constructing and
    sending netlink notifications to user space. In case drop monitor never
    started to monitor, then the work item is uninitialized and not
    associated with a function.
    
    Therefore, a stop command from user space results in canceling an
    uninitialized work item which leads to the following warning [1].
    
    Fix this by not processing a stop command if drop monitor is not
    currently monitoring.
    
    [1]
    [   31.735402] ------------[ cut here ]------------
    [   31.736470] WARNING: CPU: 0 PID: 143 at kernel/workqueue.c:3032 __flush_work+0x89f/0x9f0
    ...
    [   31.738120] CPU: 0 PID: 143 Comm: dwdump Not tainted 5.5.0-custom-09491-g16d4077796b8 #727
    [   31.741968] RIP: 0010:__flush_work+0x89f/0x9f0
    ...
    [   31.760526] Call Trace:
    [   31.771689]  __cancel_work_timer+0x2a6/0x3b0
    [   31.776809]  net_dm_cmd_trace+0x300/0xef0
    [   31.777549]  genl_rcv_msg+0x5c6/0xd50
    [   31.781005]  netlink_rcv_skb+0x13b/0x3a0
    [   31.784114]  genl_rcv+0x29/0x40
    [   31.784720]  netlink_unicast+0x49f/0x6a0
    [   31.787148]  netlink_sendmsg+0x7cf/0xc80
    [   31.790426]  ____sys_sendmsg+0x620/0x770
    [   31.793458]  ___sys_sendmsg+0xfd/0x170
    [   31.802216]  __sys_sendmsg+0xdf/0x1a0
    [   31.806195]  do_syscall_64+0xa0/0x540
    [   31.806885]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 8e94c3bc ("drop_monitor: Allow user to start monitoring hardware drops")
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dfa7f709
drop_monitor.c 38.5 KB