lkml.org 
[lkml]   [2022]   [May]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH net-next v3 06/10] udp/ipv6: clean up udpv6_sendmsg's saddr init
Date
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
\
 
 \ /
  Last update: 2022-05-13 17:28    [W:0.116 / U:0.488 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site