• Luo bin's avatar
    hinic: fix rewaking txq after netif_tx_disable · a1b80e01
    Luo bin authored
    When calling hinic_close in hinic_set_channels, all queues are
    stopped after netif_tx_disable, but some queue may be rewaken in
    free_tx_poll by mistake while drv is handling tx irq. If one queue
    is rewaken core may call hinic_xmit_frame to send pkt after
    netif_tx_disable within a short time which may results in accessing
    memory that has been already freed in hinic_close. So we call
    napi_disable before netif_tx_disable in hinic_close to fix this bug.
    
    Fixes: 2eed5a8b ("hinic: add set_channels ethtool_ops support")
    Signed-off-by: default avatarLuo bin <luobin9@huawei.com>
    Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a1b80e01
hinic_main.c 36.6 KB