kernel/signal.c: add kernel-doc notation to syscalls
[pandora-kernel.git] / net / ipv4 / tcp_ipv4.c
index 02f583b..f7e6c2c 100644 (file)
@@ -149,9 +149,9 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
        struct inet_sock *inet = inet_sk(sk);
        struct tcp_sock *tp = tcp_sk(sk);
        struct sockaddr_in *usin = (struct sockaddr_in *)uaddr;
+       __be16 orig_sport, orig_dport;
        struct rtable *rt;
        __be32 daddr, nexthop;
-       int tmp;
        int err;
 
        if (addr_len < sizeof(struct sockaddr_in))
@@ -167,14 +167,17 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
                nexthop = inet->opt->faddr;
        }
 
-       tmp = ip_route_connect(&rt, nexthop, inet->inet_saddr,
-                              RT_CONN_FLAGS(sk), sk->sk_bound_dev_if,
-                              IPPROTO_TCP,
-                              inet->inet_sport, usin->sin_port, sk, 1);
-       if (tmp < 0) {
-               if (tmp == -ENETUNREACH)
+       orig_sport = inet->inet_sport;
+       orig_dport = usin->sin_port;
+       rt = ip_route_connect(nexthop, inet->inet_saddr,
+                             RT_CONN_FLAGS(sk), sk->sk_bound_dev_if,
+                             IPPROTO_TCP,
+                             orig_sport, orig_dport, sk, true);
+       if (IS_ERR(rt)) {
+               err = PTR_ERR(rt);
+               if (err == -ENETUNREACH)
                        IP_INC_STATS_BH(sock_net(sk), IPSTATS_MIB_OUTNOROUTES);
-               return tmp;
+               return err;
        }
 
        if (rt->rt_flags & (RTCF_MULTICAST | RTCF_BROADCAST)) {
@@ -233,11 +236,14 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
        if (err)
                goto failure;
 
-       err = ip_route_newports(&rt, IPPROTO_TCP,
-                               inet->inet_sport, inet->inet_dport, sk);
-       if (err)
+       rt = ip_route_newports(rt, IPPROTO_TCP,
+                              orig_sport, orig_dport,
+                              inet->inet_sport, inet->inet_dport, sk);
+       if (IS_ERR(rt)) {
+               err = PTR_ERR(rt);
+               rt = NULL;
                goto failure;
-
+       }
        /* OK, now commit destination to socket.  */
        sk->sk_gso_type = SKB_GSO_TCPV4;
        sk_setup_caps(sk, &rt->dst);
@@ -1341,7 +1347,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
                    tcp_death_row.sysctl_tw_recycle &&
                    (dst = inet_csk_route_req(sk, req)) != NULL &&
                    (peer = rt_get_peer((struct rtable *)dst)) != NULL &&
-                   peer->daddr.a4 == saddr) {
+                   peer->daddr.addr.a4 == saddr) {
                        inet_peer_refcheck(peer);
                        if ((u32)get_seconds() - peer->tcp_ts_stamp < TCP_PAWS_MSL &&
                            (s32)(peer->tcp_ts - req->ts_recent) >
@@ -1556,12 +1562,10 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
 
        if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
                sock_rps_save_rxhash(sk, skb->rxhash);
-               TCP_CHECK_TIMER(sk);
                if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) {
                        rsk = sk;
                        goto reset;
                }
-               TCP_CHECK_TIMER(sk);
                return 0;
        }
 
@@ -1583,13 +1587,10 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
        } else
                sock_rps_save_rxhash(sk, skb->rxhash);
 
-
-       TCP_CHECK_TIMER(sk);
        if (tcp_rcv_state_process(sk, skb, tcp_hdr(skb), skb->len)) {
                rsk = sk;
                goto reset;
        }
-       TCP_CHECK_TIMER(sk);
        return 0;
 
 reset: