be2net: do not call napi_hash_del()
authorEric Dumazet <edumazet@google.com>
Wed, 16 Nov 2016 14:12:42 +0000 (06:12 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Nov 2016 22:06:51 +0000 (17:06 -0500)
Calling napi_hash_del() before netif_napi_del() is dangerous
if a synchronize_rcu() is not enforced before NAPI struct freeing.

Lets leave this detail to core networking stack and feel
more comfortable.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Sathya Perla <sathya.perla@broadcom.com>
Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>
Cc: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Cc: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index cece8a08edca1de45c4c56f89704ddd8523d7a3f..93aa2939142a226928c2be5926f772a234cd1294 100644 (file)
@@ -2813,7 +2813,6 @@ static void be_evt_queues_destroy(struct be_adapter *adapter)
                if (eqo->q.created) {
                        be_eq_clean(eqo);
                        be_cmd_q_destroy(adapter, &eqo->q, QTYPE_EQ);
-                       napi_hash_del(&eqo->napi);
                        netif_napi_del(&eqo->napi);
                        free_cpumask_var(eqo->affinity_mask);
                }