diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-02 17:31:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-02 17:31:35 -0500 |
commit | b23dd4fe42b455af5c6e20966b7d6959fa8352ea (patch) | |
tree | bf97323eae9a8d084170e573ff2c0c40bc72c3cd /net/l2tp/l2tp_ip.c | |
parent | 452edd598f60522c11f7f88fdbab27eb36509d1a (diff) |
ipv4: Make output route lookup return rtable directly.
Instead of on the stack.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/l2tp/l2tp_ip.c')
-rw-r--r-- | net/l2tp/l2tp_ip.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c index 5381cebe516d..2a698ff89db6 100644 --- a/net/l2tp/l2tp_ip.c +++ b/net/l2tp/l2tp_ip.c | |||
@@ -320,11 +320,12 @@ static int l2tp_ip_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len | |||
320 | if (ipv4_is_multicast(lsa->l2tp_addr.s_addr)) | 320 | if (ipv4_is_multicast(lsa->l2tp_addr.s_addr)) |
321 | goto out; | 321 | goto out; |
322 | 322 | ||
323 | rc = ip_route_connect(&rt, lsa->l2tp_addr.s_addr, saddr, | 323 | rt = ip_route_connect(lsa->l2tp_addr.s_addr, saddr, |
324 | RT_CONN_FLAGS(sk), oif, | 324 | RT_CONN_FLAGS(sk), oif, |
325 | IPPROTO_L2TP, | 325 | IPPROTO_L2TP, |
326 | 0, 0, sk, true); | 326 | 0, 0, sk, true); |
327 | if (rc) { | 327 | if (IS_ERR(rt)) { |
328 | rc = PTR_ERR(rt); | ||
328 | if (rc == -ENETUNREACH) | 329 | if (rc == -ENETUNREACH) |
329 | IP_INC_STATS_BH(&init_net, IPSTATS_MIB_OUTNOROUTES); | 330 | IP_INC_STATS_BH(&init_net, IPSTATS_MIB_OUTNOROUTES); |
330 | goto out; | 331 | goto out; |
@@ -489,7 +490,8 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m | |||
489 | * itself out. | 490 | * itself out. |
490 | */ | 491 | */ |
491 | security_sk_classify_flow(sk, &fl); | 492 | security_sk_classify_flow(sk, &fl); |
492 | if (ip_route_output_flow(sock_net(sk), &rt, &fl, sk)) | 493 | rt = ip_route_output_flow(sock_net(sk), &fl, sk); |
494 | if (IS_ERR(rt)) | ||
493 | goto no_route; | 495 | goto no_route; |
494 | } | 496 | } |
495 | sk_setup_caps(sk, &rt->dst); | 497 | sk_setup_caps(sk, &rt->dst); |