From: Herbert Xu Date: Thu, 4 Aug 2022 10:03:46 +0000 (+0800) Subject: af_key: Do not call xfrm_probe_algs in parallel X-Git-Tag: v6.1-rc5~537^2~10^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba953a9d89a00c078b85f4b190bc1dde66fe16b5;p=platform%2Fkernel%2Flinux-starfive.git af_key: Do not call xfrm_probe_algs in parallel When namespace support was added to xfrm/afkey, it caused the previously single-threaded call to xfrm_probe_algs to become multi-threaded. This is buggy and needs to be fixed with a mutex. Reported-by: Abhishek Shah Fixes: 283bc9f35bbb ("xfrm: Namespacify xfrm state/policy locks") Signed-off-by: Herbert Xu Signed-off-by: Steffen Klassert --- diff --git a/net/key/af_key.c b/net/key/af_key.c index fb16d7c..20e7364 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c @@ -1697,9 +1697,12 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad pfk->registered |= (1<sadb_msg_satype); } + mutex_lock(&pfkey_mutex); xfrm_probe_algs(); supp_skb = compose_sadb_supported(hdr, GFP_KERNEL | __GFP_ZERO); + mutex_unlock(&pfkey_mutex); + if (!supp_skb) { if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC) pfk->registered &= ~(1<sadb_msg_satype);