diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 767f7af3bd40385ae18823ab579fff1709f79d7b..2c15f6c8650205b0f12a101a049cf0dd83034428 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -1794,7 +1794,8 @@ static void vxlan_dellink(struct net_device *dev, struct list_head *head)
 	struct vxlan_dev *vxlan = netdev_priv(dev);
 
 	spin_lock(&vn->sock_lock);
-	hlist_del_rcu(&vxlan->hlist);
+	if (!hlist_unhashed(&vxlan->hlist))
+		hlist_del_rcu(&vxlan->hlist);
 	spin_unlock(&vn->sock_lock);
 
 	list_del(&vxlan->next);