From: Pavel Begunkov <asml.silence@gmail.com>
To: netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: David Ahern <dsahern@kernel.org>,
Eric Dumazet <edumazet@google.com>,
linux-kernel@vger.kernel.org,
Pavel Begunkov <asml.silence@gmail.com>
Subject: [PATCH net-next v3 06/10] udp/ipv6: clean up udpv6_sendmsg's saddr init
Date: Fri, 13 May 2022 16:26:11 +0100 [thread overview]
Message-ID: <2a0bd67940ed265cb9f4734f602792da37292968.1652368648.git.asml.silence@gmail.com> (raw)
In-Reply-To: <cover.1652368648.git.asml.silence@gmail.com>
We initialise fl6 in udpv6_sendmsg() to zeroes, that sets saddr to any
addr, then it might be changed in by cmsg but only to a non-any addr.
After we check again for it left set to "any", which is likely to be so,
and try to initialise it from socket saddr.
The result of it is that fl6->saddr is set to cmsg's saddr if specified
and inet6_sk(sk)->saddr otherwise. We can achieve the same by
pre-setting it to the sockets saddr and potentially overriding by cmsg
after.
This looks a bit cleaner comparing to conditional init and also removes
extra checks from the way.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
net/ipv6/udp.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 61dbe2f04675..9bd317c2b67f 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1434,14 +1434,15 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
connected = true;
}
+ fl6->flowi6_uid = sk->sk_uid;
+ fl6->saddr = np->saddr;
+ fl6->daddr = *daddr;
+
if (!fl6->flowi6_oif)
fl6->flowi6_oif = sk->sk_bound_dev_if;
-
if (!fl6->flowi6_oif)
fl6->flowi6_oif = np->sticky_pktinfo.ipi6_ifindex;
- fl6->flowi6_uid = sk->sk_uid;
-
if (msg->msg_controllen) {
opt = &opt_space;
memset(opt, 0, sizeof(struct ipv6_txoptions));
@@ -1476,9 +1477,6 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
fl6->flowi6_proto = sk->sk_protocol;
fl6->flowi6_mark = ipc6.sockc.mark;
- fl6->daddr = *daddr;
- if (ipv6_addr_any(&fl6->saddr) && !ipv6_addr_any(&np->saddr))
- fl6->saddr = np->saddr;
fl6->fl6_sport = inet->inet_sport;
if (cgroup_bpf_enabled(CGROUP_UDP6_SENDMSG) && !connected) {
--
2.36.0
next prev parent reply other threads:[~2022-05-13 15:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 15:26 [PATCH net-next v3 00/10] UDP/IPv6 refactoring Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 01/10] ipv6: optimise ipcm6 cookie init Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 02/10] udp/ipv6: move pending section of udpv6_sendmsg Pavel Begunkov
2022-05-16 13:11 ` Paolo Abeni
2022-05-16 20:09 ` Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 03/10] udp/ipv6: prioritise the ip6 path over ip4 checks Pavel Begunkov
2022-05-16 13:14 ` Paolo Abeni
2022-05-16 20:10 ` Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 04/10] udp/ipv6: optimise udpv6_sendmsg() daddr checks Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 05/10] udp/ipv6: optimise out daddr reassignment Pavel Begunkov
2022-05-13 15:26 ` Pavel Begunkov [this message]
2022-05-13 15:26 ` [PATCH net-next v3 07/10] ipv6: partially inline fl6_update_dst() Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 08/10] ipv6: refactor opts push in __ip6_make_skb() Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 09/10] ipv6: improve opt-less __ip6_make_skb() Pavel Begunkov
2022-05-13 15:26 ` [PATCH net-next v3 10/10] ipv6: clean up ip6_setup_cork Pavel Begunkov
2022-05-16 13:48 ` [PATCH net-next v3 00/10] UDP/IPv6 refactoring Paolo Abeni
2022-05-16 14:47 ` David Ahern
2022-05-16 20:48 ` Pavel Begunkov
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=2a0bd67940ed265cb9f4734f602792da37292968.1652368648.git.asml.silence@gmail.com \
--to=asml.silence@gmail.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/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®