Similar to the earlier patch that avoids sock_setsockopt() from taking sk lock when called from bpf. This patch changes do_ipv6_setsockopt() to use the {lock,release}_sock_sockopt(). Signed-off-by: Martin KaFai Lau <kafai@xxxxxx> --- net/ipv6/ipv6_sockglue.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 222f6bf220ba..4559f02ab4a8 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c @@ -417,7 +417,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, if (needs_rtnl) rtnl_lock(); - lock_sock(sk); + lock_sock_sockopt(sk, optval); switch (optname) { @@ -994,14 +994,14 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, break; } - release_sock(sk); + release_sock_sockopt(sk, optval); if (needs_rtnl) rtnl_unlock(); return retv; e_inval: - release_sock(sk); + release_sock_sockopt(sk, optval); if (needs_rtnl) rtnl_unlock(); return -EINVAL; -- 2.30.2