diff --git a/net/core/dev.c b/net/core/dev.c index e0a1be986824..03624192862a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6656,7 +6656,7 @@ void __netif_napi_del(struct napi_struct *napi) return; napi_hash_del(napi); - list_del_init(&napi->dev_list); + list_del_rcu(&napi->dev_list); napi_free_frags(napi); flush_gro_hash(napi); diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 2338753e936b..c310c7c1cef7 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -297,7 +297,7 @@ static int netpoll_owner_active(struct net_device *dev) { struct napi_struct *napi; - list_for_each_entry(napi, &dev->napi_list, dev_list) { + list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) { if (napi->poll_owner == smp_processor_id()) return 1; }