diff options
author | rakesh goyal <rgoyal@nvidia.com> | 2020-08-26 14:25:03 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2020-08-27 11:56:27 -0400 |
commit | 01423fb2c3a7f555437ec3cdd0800538f8339684 (patch) | |
tree | 6c2719b801086fe5ade023903c38b8ca8211b10c /drivers/net | |
parent | a9956d6b369e521822e0e74ea0031548f91fd2da (diff) |
eqos: fix kernel panic by adding napi_synchronize
Issue: Kernel panic if NAPI schduled in ether_close() path.
Fix: Disable NAPI before freeing dma resources as well as
call napi_synchronize() before napi_disable() for NAPI
wait
Bug 3006448
Bug 200650229
Change-Id: I833c150c8bf2834f7d4cb125ca1328203d5df622
Signed-off-by: rakesh goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2404294
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/nvidia/eqos/drv.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/nvidia/eqos/drv.c b/drivers/net/ethernet/nvidia/eqos/drv.c index 010726699..f2e396031 100644 --- a/drivers/net/ethernet/nvidia/eqos/drv.c +++ b/drivers/net/ethernet/nvidia/eqos/drv.c | |||
@@ -166,7 +166,9 @@ static void eqos_all_ch_napi_disable(struct eqos_prv_data *pdata) | |||
166 | pr_debug("-->eqos_napi_disable\n"); | 166 | pr_debug("-->eqos_napi_disable\n"); |
167 | 167 | ||
168 | for (qinx = 0; qinx < EQOS_RX_QUEUE_CNT; qinx++) { | 168 | for (qinx = 0; qinx < EQOS_RX_QUEUE_CNT; qinx++) { |
169 | napi_synchronize(&pdata->rx_queue[qinx].napi); | ||
169 | napi_disable(&pdata->rx_queue[qinx].napi); | 170 | napi_disable(&pdata->rx_queue[qinx].napi); |
171 | napi_synchronize(&pdata->tx_queue[qinx].napi); | ||
170 | napi_disable(&pdata->tx_queue[qinx].napi); | 172 | napi_disable(&pdata->tx_queue[qinx].napi); |
171 | } | 173 | } |
172 | 174 | ||