Similar to the earlier patch that avoids sock_setsockopt() from taking sk lock when called from bpf. This patch changes do_ip_setsockopt() to use the {lock,release}_sock_sockopt(). Signed-off-by: Martin KaFai Lau <kafai@xxxxxx> --- net/ipv4/ip_sockglue.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index a8a323ecbb54..8271ad565a3a 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c @@ -944,7 +944,7 @@ static int do_ip_setsockopt(struct sock *sk, int level, int optname, err = 0; if (needs_rtnl) rtnl_lock(); - lock_sock(sk); + lock_sock_sockopt(sk, optval); switch (optname) { case IP_OPTIONS: @@ -1368,13 +1368,13 @@ static int do_ip_setsockopt(struct sock *sk, int level, int optname, err = -ENOPROTOOPT; break; } - release_sock(sk); + release_sock_sockopt(sk, optval); if (needs_rtnl) rtnl_unlock(); return err; e_inval: - release_sock(sk); + release_sock_sockopt(sk, optval); if (needs_rtnl) rtnl_unlock(); return -EINVAL; -- 2.30.2