diff options
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 6c11eece262c..b22d45010545 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -505,6 +505,15 @@ int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg) | |||
505 | else | 505 | else |
506 | answ = tp->write_seq - tp->snd_una; | 506 | answ = tp->write_seq - tp->snd_una; |
507 | break; | 507 | break; |
508 | case SIOCOUTQNSD: | ||
509 | if (sk->sk_state == TCP_LISTEN) | ||
510 | return -EINVAL; | ||
511 | |||
512 | if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) | ||
513 | answ = 0; | ||
514 | else | ||
515 | answ = tp->write_seq - tp->snd_nxt; | ||
516 | break; | ||
508 | default: | 517 | default: |
509 | return -ENOIOCTLCMD; | 518 | return -ENOIOCTLCMD; |
510 | } | 519 | } |
@@ -873,9 +882,7 @@ int tcp_sendpage(struct sock *sk, struct page *page, int offset, | |||
873 | flags); | 882 | flags); |
874 | 883 | ||
875 | lock_sock(sk); | 884 | lock_sock(sk); |
876 | TCP_CHECK_TIMER(sk); | ||
877 | res = do_tcp_sendpages(sk, &page, offset, size, flags); | 885 | res = do_tcp_sendpages(sk, &page, offset, size, flags); |
878 | TCP_CHECK_TIMER(sk); | ||
879 | release_sock(sk); | 886 | release_sock(sk); |
880 | return res; | 887 | return res; |
881 | } | 888 | } |
@@ -916,7 +923,6 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
916 | long timeo; | 923 | long timeo; |
917 | 924 | ||
918 | lock_sock(sk); | 925 | lock_sock(sk); |
919 | TCP_CHECK_TIMER(sk); | ||
920 | 926 | ||
921 | flags = msg->msg_flags; | 927 | flags = msg->msg_flags; |
922 | timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); | 928 | timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); |
@@ -1104,7 +1110,6 @@ wait_for_memory: | |||
1104 | out: | 1110 | out: |
1105 | if (copied) | 1111 | if (copied) |
1106 | tcp_push(sk, flags, mss_now, tp->nonagle); | 1112 | tcp_push(sk, flags, mss_now, tp->nonagle); |
1107 | TCP_CHECK_TIMER(sk); | ||
1108 | release_sock(sk); | 1113 | release_sock(sk); |
1109 | return copied; | 1114 | return copied; |
1110 | 1115 | ||
@@ -1123,7 +1128,6 @@ do_error: | |||
1123 | goto out; | 1128 | goto out; |
1124 | out_err: | 1129 | out_err: |
1125 | err = sk_stream_error(sk, flags, err); | 1130 | err = sk_stream_error(sk, flags, err); |
1126 | TCP_CHECK_TIMER(sk); | ||
1127 | release_sock(sk); | 1131 | release_sock(sk); |
1128 | return err; | 1132 | return err; |
1129 | } | 1133 | } |
@@ -1415,8 +1419,6 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
1415 | 1419 | ||
1416 | lock_sock(sk); | 1420 | lock_sock(sk); |
1417 | 1421 | ||
1418 | TCP_CHECK_TIMER(sk); | ||
1419 | |||
1420 | err = -ENOTCONN; | 1422 | err = -ENOTCONN; |
1421 | if (sk->sk_state == TCP_LISTEN) | 1423 | if (sk->sk_state == TCP_LISTEN) |
1422 | goto out; | 1424 | goto out; |
@@ -1767,12 +1769,10 @@ skip_copy: | |||
1767 | /* Clean up data we have read: This will do ACK frames. */ | 1769 | /* Clean up data we have read: This will do ACK frames. */ |
1768 | tcp_cleanup_rbuf(sk, copied); | 1770 | tcp_cleanup_rbuf(sk, copied); |
1769 | 1771 | ||
1770 | TCP_CHECK_TIMER(sk); | ||
1771 | release_sock(sk); | 1772 | release_sock(sk); |
1772 | return copied; | 1773 | return copied; |
1773 | 1774 | ||
1774 | out: | 1775 | out: |
1775 | TCP_CHECK_TIMER(sk); | ||
1776 | release_sock(sk); | 1776 | release_sock(sk); |
1777 | return err; | 1777 | return err; |
1778 | 1778 | ||
@@ -2653,7 +2653,7 @@ int compat_tcp_getsockopt(struct sock *sk, int level, int optname, | |||
2653 | EXPORT_SYMBOL(compat_tcp_getsockopt); | 2653 | EXPORT_SYMBOL(compat_tcp_getsockopt); |
2654 | #endif | 2654 | #endif |
2655 | 2655 | ||
2656 | struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | 2656 | struct sk_buff *tcp_tso_segment(struct sk_buff *skb, u32 features) |
2657 | { | 2657 | { |
2658 | struct sk_buff *segs = ERR_PTR(-EINVAL); | 2658 | struct sk_buff *segs = ERR_PTR(-EINVAL); |
2659 | struct tcphdr *th; | 2659 | struct tcphdr *th; |