Re: [PATCH net v2] napi: fix race inside napi_enable
From: Sukadev Bhattiprolu <hidden>
Date: 2021-10-19 00:02:04
Jakub Kicinski [kuba@kernel.org] wrote:
On Mon, 18 Oct 2021 16:36:36 -0700 Dany Madden wrote:quoted
quoted
The BUG_ON() is here to make sure that when napi_enable() is called the napi instance was dormant, i.e. disabled. We have "STATE_SCHED" bit set on disabled NAPIs because that bit means ownership. Whoever disabled the NAPI owns it. That BUG_ON() could have been taken outside of the loop, there's no point re-checking on every try. Are you seeing NAPI-related failures? We had at least 3 reports in the last two weeks of strange failures which look like NAPI state getting corrupted on net-next...We hit two napi related crashes while attempting mtu size change.
BTW these are with a couple of bug fixes in ibmvnic driver applied
to 1e0083bd0777 ("gve: DQO: avoid unused variable warnings").
We are trying to narrow it down to the following change that is
required to be able to change mtu on ibmvnic.
Is it reproducible or happens rarely and randomly?
Random. We have been testing for a couple of weeks but hit both today. Sukadev --- index 8f17096e614d..a1533979c670 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c@@ -1914,8 +1914,6 @@ static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev) ind_bufp = &tx_scrq->ind_buf; if (test_bit(0, &adapter->resetting)) { - if (!netif_subqueue_stopped(netdev, skb)) - netif_stop_subqueue(netdev, queue_num); dev_kfree_skb_any(skb);