From: Hangbin Liu <hangbin.liu@linux.dev>
To: Xuanqiang Luo <xuanqiang.luo@linux.dev>
Cc: netdev@vger.kernel.org, edumazet@google.com, dsahern@kernel.org,
idosch@nvidia.com, davem@davemloft.net, kuba@kernel.org,
pabeni@redhat.com, horms@kernel.org,
linux-kernel@vger.kernel.org, luoxuanqiang@kylinos.cn
Subject: Re: [PATCH net-next v2] ipv6: make IPV6_FREEBIND and IPV6_TRANSPARENT setsockopt lockless
Date: Mon, 14 Sep 2026 14:58:52 +0800 [thread overview]
Message-ID: <aqebLK84eb_lfPOE@fedora> (raw)
In-Reply-To: <20260912134040.215664-1-xuanqiang.luo@linux.dev>
On Sat, Sep 12, 2026 at 09:40:40PM +0800, Xuanqiang Luo wrote:
> From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>
> IPV6_FREEBIND and IPV6_TRANSPARENT still take the socket lock despite
> using inet_assign_bit() to update the flags shared with IP_FREEBIND
> and IP_TRANSPARENT. IPv6 TCP and UDP sockets can already update these
> flags without the lock through the corresponding SOL_IP options.
>
> Move both options to the lockless setsockopt path.
>
> Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
> ---
> Changes:
> v2:
> - Squash the two patches into one and drop the cover letter.
> (Eric Dumazet.)
>
> v1: https://lore.kernel.org/all/20260911102418.157071-1-xuanqiang.luo@linux.dev/
>
> net/ipv6/ipv6_sockglue.c | 36 +++++++++++++++---------------------
> 1 file changed, 15 insertions(+), 21 deletions(-)
>
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 1f68fb64a43ef..4b3536571c980 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -398,6 +398,21 @@ int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>
> /* Handle options that can be set without locking the socket. */
> switch (optname) {
> + case IPV6_FREEBIND:
> + if (optlen < sizeof(int))
> + return -EINVAL;
> + /* Shared with IP_FREEBIND. */
> + inet_assign_bit(FREEBIND, sk, valbool);
> + return 0;
> + case IPV6_TRANSPARENT:
> + if (valbool && !sockopt_ns_capable(net->user_ns, CAP_NET_RAW) &&
> + !sockopt_ns_capable(net->user_ns, CAP_NET_ADMIN))
> + return -EPERM;
> + if (optlen < sizeof(int))
> + return -EINVAL;
> + /* Shared with IP_TRANSPARENT. */
> + inet_assign_bit(TRANSPARENT, sk, valbool);
> + return 0;
> case IPV6_UNICAST_HOPS:
> if (optlen < sizeof(int))
> return -EINVAL;
> @@ -666,27 +681,6 @@ int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
> retv = 0;
> break;
>
> - case IPV6_TRANSPARENT:
> - if (valbool && !sockopt_ns_capable(net->user_ns, CAP_NET_RAW) &&
> - !sockopt_ns_capable(net->user_ns, CAP_NET_ADMIN)) {
> - retv = -EPERM;
> - break;
> - }
> - if (optlen < sizeof(int))
> - goto e_inval;
> - /* we don't have a separate transparent bit for IPV6 we use the one in the IPv4 socket */
> - inet_assign_bit(TRANSPARENT, sk, valbool);
> - retv = 0;
> - break;
> -
> - case IPV6_FREEBIND:
> - if (optlen < sizeof(int))
> - goto e_inval;
> - /* we also don't have a separate freebind bit for IPV6 */
> - inet_assign_bit(FREEBIND, sk, valbool);
> - retv = 0;
> - break;
> -
> case IPV6_RECVORIGDSTADDR:
> if (optlen < sizeof(int))
> goto e_inval;
>
> base-commit: 348ea4642f56ab3dc93621c8e3ab0ccd0e5f1782
> --
> 2.43.0
>
Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn>
next prev parent reply other threads:[~2026-09-14 6:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-12 13:40 Xuanqiang Luo
2026-09-14 6:58 ` Hangbin Liu [this message]
2026-09-17 13:30 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aqebLK84eb_lfPOE@fedora \
--to=hangbin.liu@linux.dev \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luoxuanqiang@kylinos.cn \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=xuanqiang.luo@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®