Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: ipv6: add net argument to ip6_dst_lookup_flow

This will be used in the conversion of ipv6_stub to ip6_dst_lookup_flow,
as some modules currently pass a net argument without a socket to
ip6_dst_lookup. This is equivalent to commit 343d60aada5a ("ipv6: change
ipv6_stub_impl.ipv6_dst_lookup to take net argument").

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Sabrina Dubroca and committed by
David S. Miller
c4e85f73 8ffb055b

+19 -19
+1 -1
include/net/ipv6.h
··· 1022 1022 1023 1023 int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **dst, 1024 1024 struct flowi6 *fl6); 1025 - struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, 1025 + struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *sk, struct flowi6 *fl6, 1026 1026 const struct in6_addr *final_dst); 1027 1027 struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, 1028 1028 const struct in6_addr *final_dst,
+3 -3
net/dccp/ipv6.c
··· 210 210 final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), &final); 211 211 rcu_read_unlock(); 212 212 213 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 213 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 214 214 if (IS_ERR(dst)) { 215 215 err = PTR_ERR(dst); 216 216 dst = NULL; ··· 282 282 security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6)); 283 283 284 284 /* sk = NULL, but it is safe for now. RST socket required. */ 285 - dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL); 285 + dst = ip6_dst_lookup_flow(sock_net(ctl_sk), ctl_sk, &fl6, NULL); 286 286 if (!IS_ERR(dst)) { 287 287 skb_dst_set(skb, dst); 288 288 ip6_xmit(ctl_sk, skb, &fl6, 0, NULL, 0, 0); ··· 912 912 opt = rcu_dereference_protected(np->opt, lockdep_sock_is_held(sk)); 913 913 final_p = fl6_update_dst(&fl6, opt, &final); 914 914 915 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 915 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 916 916 if (IS_ERR(dst)) { 917 917 err = PTR_ERR(dst); 918 918 goto failure;
+1 -1
net/ipv6/af_inet6.c
··· 765 765 &final); 766 766 rcu_read_unlock(); 767 767 768 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 768 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 769 769 if (IS_ERR(dst)) { 770 770 sk->sk_route_caps = 0; 771 771 sk->sk_err_soft = -PTR_ERR(dst);
+1 -1
net/ipv6/datagram.c
··· 85 85 final_p = fl6_update_dst(&fl6, opt, &final); 86 86 rcu_read_unlock(); 87 87 88 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 88 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 89 89 if (IS_ERR(dst)) { 90 90 err = PTR_ERR(dst); 91 91 goto out;
+2 -2
net/ipv6/inet6_connection_sock.c
··· 48 48 fl6->flowi6_uid = sk->sk_uid; 49 49 security_req_classify_flow(req, flowi6_to_flowi(fl6)); 50 50 51 - dst = ip6_dst_lookup_flow(sk, fl6, final_p); 51 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); 52 52 if (IS_ERR(dst)) 53 53 return NULL; 54 54 ··· 103 103 104 104 dst = __inet6_csk_dst_check(sk, np->dst_cookie); 105 105 if (!dst) { 106 - dst = ip6_dst_lookup_flow(sk, fl6, final_p); 106 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); 107 107 108 108 if (!IS_ERR(dst)) 109 109 ip6_dst_store(sk, dst, NULL, NULL);
+4 -4
net/ipv6/ip6_output.c
··· 1144 1144 * It returns a valid dst pointer on success, or a pointer encoded 1145 1145 * error code. 1146 1146 */ 1147 - struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, 1147 + struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *sk, struct flowi6 *fl6, 1148 1148 const struct in6_addr *final_dst) 1149 1149 { 1150 1150 struct dst_entry *dst = NULL; 1151 1151 int err; 1152 1152 1153 - err = ip6_dst_lookup_tail(sock_net(sk), sk, &dst, fl6); 1153 + err = ip6_dst_lookup_tail(net, sk, &dst, fl6); 1154 1154 if (err) 1155 1155 return ERR_PTR(err); 1156 1156 if (final_dst) 1157 1157 fl6->daddr = *final_dst; 1158 1158 1159 - return xfrm_lookup_route(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0); 1159 + return xfrm_lookup_route(net, dst, flowi6_to_flowi(fl6), sk, 0); 1160 1160 } 1161 1161 EXPORT_SYMBOL_GPL(ip6_dst_lookup_flow); 1162 1162 ··· 1188 1188 if (dst) 1189 1189 return dst; 1190 1190 1191 - dst = ip6_dst_lookup_flow(sk, fl6, final_dst); 1191 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_dst); 1192 1192 if (connected && !IS_ERR(dst)) 1193 1193 ip6_sk_dst_store_flow(sk, dst_clone(dst), fl6); 1194 1194
+1 -1
net/ipv6/raw.c
··· 925 925 926 926 fl6.flowlabel = ip6_make_flowinfo(ipc6.tclass, fl6.flowlabel); 927 927 928 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 928 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 929 929 if (IS_ERR(dst)) { 930 930 err = PTR_ERR(dst); 931 931 goto out;
+1 -1
net/ipv6/syncookies.c
··· 235 235 fl6.flowi6_uid = sk->sk_uid; 236 236 security_req_classify_flow(req, flowi6_to_flowi(&fl6)); 237 237 238 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 238 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 239 239 if (IS_ERR(dst)) 240 240 goto out_free; 241 241 }
+2 -2
net/ipv6/tcp_ipv6.c
··· 275 275 276 276 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); 277 277 278 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 278 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 279 279 if (IS_ERR(dst)) { 280 280 err = PTR_ERR(dst); 281 281 goto failure; ··· 906 906 * Underlying function will use this to retrieve the network 907 907 * namespace 908 908 */ 909 - dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL); 909 + dst = ip6_dst_lookup_flow(sock_net(ctl_sk), ctl_sk, &fl6, NULL); 910 910 if (!IS_ERR(dst)) { 911 911 skb_dst_set(buff, dst); 912 912 ip6_xmit(ctl_sk, buff, &fl6, fl6.flowi6_mark, NULL, tclass,
+1 -1
net/l2tp/l2tp_ip6.c
··· 615 615 616 616 fl6.flowlabel = ip6_make_flowinfo(ipc6.tclass, fl6.flowlabel); 617 617 618 - dst = ip6_dst_lookup_flow(sk, &fl6, final_p); 618 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); 619 619 if (IS_ERR(dst)) { 620 620 err = PTR_ERR(dst); 621 621 goto out;
+2 -2
net/sctp/ipv6.c
··· 275 275 final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); 276 276 rcu_read_unlock(); 277 277 278 - dst = ip6_dst_lookup_flow(sk, fl6, final_p); 278 + dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); 279 279 if (!asoc || saddr) 280 280 goto out; 281 281 ··· 328 328 fl6->saddr = laddr->a.v6.sin6_addr; 329 329 fl6->fl6_sport = laddr->a.v6.sin6_port; 330 330 final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); 331 - bdst = ip6_dst_lookup_flow(sk, fl6, final_p); 331 + bdst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); 332 332 333 333 if (IS_ERR(bdst)) 334 334 continue;