diff --git a/net/core/sock_map.c b/net/core/sock_map.c index 50fb43905c87de2d7724be325ad25ac8ce337410..79528310e6a7869dea2bc1703dc72f656d3e7fc9 100644 --- a/net/core/sock_map.c +++ b/net/core/sock_map.c @@ -358,11 +358,13 @@ static void sock_map_free(struct bpf_map *map) sk = xchg(psk, NULL); if (sk) { + sock_hold(sk); lock_sock(sk); rcu_read_lock(); sock_map_unref(sk, psk); rcu_read_unlock(); release_sock(sk); + sock_put(sk); } }