Re: [PATCH net] hinic: fix rewaking txq after netif_tx_disable

From: Jakub Kicinski
Date: Mon Sep 07 2020 - 17:28:53 EST


On Mon, 7 Sep 2020 22:15:16 +0800 Luo bin wrote:
> 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 judge
> whether the netdev is in down state before waking txq in free_tx_poll
> to fix this bug.

The right fix is to call napi_disable() _before_ you call
netif_tx_disable(), not after, like hinic_close() does.