diff --git a/net/ncsi/internal.h b/net/ncsi/internal.h index adee6dcabdc3..2c9d1f22c16a 100644 --- a/net/ncsi/internal.h +++ b/net/ncsi/internal.h @@ -312,6 +312,7 @@ struct vlan_vid { struct list_head list; __be16 proto; u16 vid; + struct rcu_head rcu_head; }; struct ncsi_dev_priv { diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c index 54d0df0a9efe..1d63958c4429 100644 --- a/net/ncsi/ncsi-manage.c +++ b/net/ncsi/ncsi-manage.c @@ -1737,7 +1737,7 @@ int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid) netdev_dbg(dev, "NCSI: vid %u found, removing\n", vid); list_del_rcu(&vlan->list); found = true; - kfree(vlan); + kfree_rcu(vlan, rcu_head); } if (!found) {