diff --git a/kernel/bpf/devmap.c b/kernel/bpf/devmap.c index 9af048a932b5..c41854a68e9e 100644 --- a/kernel/bpf/devmap.c +++ b/kernel/bpf/devmap.c @@ -664,6 +664,9 @@ static int __dev_map_hash_update_elem(struct net *net, struct bpf_map *map, spin_lock_irqsave(&dtab->index_lock, flags); + /* Re-read old_dev while holding lock*/ + old_dev = __dev_map_hash_lookup_elem(map, idx); + if (old_dev) { hlist_del_rcu(&old_dev->index_hlist); } else {