aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-11-16 09:31:52 -0500
committerDavid S. Miller <davem@davemloft.net>2016-11-16 23:30:43 -0500
commite5f6f564fd191d365fcd775c06a732a488205588 (patch)
tree28db9d98d66cf6f39f59230d93a58311d77d9d0b /drivers/net/ethernet/broadcom
parente47112d9d6009bf6b7438cedc0270316d6b0370d (diff)
bnxt: add a missing rcu synchronization
Add a missing synchronize_net() call to avoid potential use after free, since we explicitly call napi_hash_del() to factorize the RCU grace period. Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Michael Chan <michael.chan@broadcom.com> Acked-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom')
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index c6909660e097..e18635b2a002 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -4934,6 +4934,10 @@ static void bnxt_del_napi(struct bnxt *bp)
4934 napi_hash_del(&bnapi->napi); 4934 napi_hash_del(&bnapi->napi);
4935 netif_napi_del(&bnapi->napi); 4935 netif_napi_del(&bnapi->napi);
4936 } 4936 }
4937 /* We called napi_hash_del() before netif_napi_del(), we need
4938 * to respect an RCU grace period before freeing napi structures.
4939 */
4940 synchronize_net();
4937} 4941}
4938 4942
4939static void bnxt_init_napi(struct bnxt *bp) 4943static void bnxt_init_napi(struct bnxt *bp)