]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
mptcp: fix for setting remote ipv4mapped address
authorGeliang Tang <tanggeliang@kylinos.cn>
Tue, 14 Jan 2025 18:06:22 +0000 (19:06 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 15 Jan 2025 21:19:04 +0000 (13:19 -0800)
Commit 1c670b39cec7 ("mptcp: change local addr type of subflow_destroy")
introduced a bug in mptcp_pm_nl_subflow_destroy_doit().

ipv6_addr_set_v4mapped() should be called to set the remote ipv4 address
'addr_r.addr.s_addr' to the remote ipv6 address 'addr_r.addr6', not
'addr_l.addr.addr6', which is the local ipv6 address.

Fixes: 1c670b39cec7 ("mptcp: change local addr type of subflow_destroy")
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250114-net-next-mptcp-fix-remote-addr-v1-1-debcd84ea86f@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/pm_userspace.c

index 740a10d669f859baec975556f1d7c4e90df62c4a..a3d477059b11c3a5618dbb6256434a8e55845995 100644 (file)
@@ -520,7 +520,7 @@ int mptcp_pm_nl_subflow_destroy_doit(struct sk_buff *skb, struct genl_info *info
                addr_l.addr.family = AF_INET6;
        }
        if (addr_r.family == AF_INET && ipv6_addr_v4mapped(&addr_l.addr.addr6)) {
-               ipv6_addr_set_v4mapped(addr_r.addr.s_addr, &addr_l.addr.addr6);
+               ipv6_addr_set_v4mapped(addr_r.addr.s_addr, &addr_r.addr6);
                addr_r.family = AF_INET6;
        }
 #endif