From: Eric Dumazet Date: Fri, 6 Sep 2024 15:44:49 +0000 (+0000) Subject: sock_map: Add a cond_resched() in sock_hash_free() X-Git-Tag: v6.6.54~470 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=80bd490ac0a3b662a489e17d8eedeb1e905a3d40;p=thirdparty%2Fkernel%2Fstable.git sock_map: Add a cond_resched() in sock_hash_free() [ Upstream commit b1339be951ad31947ae19bc25cb08769bf255100 ] Several syzbot soft lockup reports all have in common sock_hash_free() If a map with a large number of buckets is destroyed, we need to yield the cpu when needed. Fixes: 75e68e5bf2c7 ("bpf, sockhash: Synchronize delete from bucket list on map free") Reported-by: syzbot Signed-off-by: Eric Dumazet Signed-off-by: Daniel Borkmann Acked-by: Martin KaFai Lau Acked-by: John Fastabend Link: https://lore.kernel.org/bpf/20240906154449.3742932-1-edumazet@google.com Signed-off-by: Sasha Levin --- diff --git a/net/core/sock_map.c b/net/core/sock_map.c index a37143d181f95..2afac40bb83ca 100644 --- a/net/core/sock_map.c +++ b/net/core/sock_map.c @@ -1171,6 +1171,7 @@ static void sock_hash_free(struct bpf_map *map) sock_put(elem->sk); sock_hash_free_elem(htab, elem); } + cond_resched(); } /* wait for psock readers accessing its map link */