diff options
Diffstat (limited to 'net/sctp/socket.c')
| -rw-r--r-- | net/sctp/socket.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index d890dfa8818f..9df888e932c5 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
| @@ -156,10 +156,6 @@ static inline void sctp_set_owner_w(struct sctp_chunk *chunk) | |||
| 156 | sizeof(struct sk_buff) + | 156 | sizeof(struct sk_buff) + |
| 157 | sizeof(struct sctp_chunk); | 157 | sizeof(struct sctp_chunk); |
| 158 | 158 | ||
| 159 | sk->sk_wmem_queued += SCTP_DATA_SNDSIZE(chunk) + | ||
| 160 | sizeof(struct sk_buff) + | ||
| 161 | sizeof(struct sctp_chunk); | ||
| 162 | |||
| 163 | atomic_add(sizeof(struct sctp_chunk), &sk->sk_wmem_alloc); | 159 | atomic_add(sizeof(struct sctp_chunk), &sk->sk_wmem_alloc); |
| 164 | } | 160 | } |
| 165 | 161 | ||
| @@ -3425,7 +3421,7 @@ static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_add | |||
| 3425 | } | 3421 | } |
| 3426 | 3422 | ||
| 3427 | static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, | 3423 | static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, |
| 3428 | void * __user *to, size_t space_left) | 3424 | void __user **to, size_t space_left) |
| 3429 | { | 3425 | { |
| 3430 | struct list_head *pos; | 3426 | struct list_head *pos; |
| 3431 | struct sctp_sockaddr_entry *addr; | 3427 | struct sctp_sockaddr_entry *addr; |
| @@ -4426,7 +4422,7 @@ cleanup: | |||
| 4426 | * tcp_poll(). Note that, based on these implementations, we don't | 4422 | * tcp_poll(). Note that, based on these implementations, we don't |
| 4427 | * lock the socket in this function, even though it seems that, | 4423 | * lock the socket in this function, even though it seems that, |
| 4428 | * ideally, locking or some other mechanisms can be used to ensure | 4424 | * ideally, locking or some other mechanisms can be used to ensure |
| 4429 | * the integrity of the counters (sndbuf and wmem_queued) used | 4425 | * the integrity of the counters (sndbuf and wmem_alloc) used |
| 4430 | * in this place. We assume that we don't need locks either until proven | 4426 | * in this place. We assume that we don't need locks either until proven |
| 4431 | * otherwise. | 4427 | * otherwise. |
| 4432 | * | 4428 | * |
| @@ -4833,10 +4829,6 @@ static void sctp_wfree(struct sk_buff *skb) | |||
| 4833 | sizeof(struct sk_buff) + | 4829 | sizeof(struct sk_buff) + |
| 4834 | sizeof(struct sctp_chunk); | 4830 | sizeof(struct sctp_chunk); |
| 4835 | 4831 | ||
| 4836 | sk->sk_wmem_queued -= SCTP_DATA_SNDSIZE(chunk) + | ||
| 4837 | sizeof(struct sk_buff) + | ||
| 4838 | sizeof(struct sctp_chunk); | ||
| 4839 | |||
| 4840 | atomic_sub(sizeof(struct sctp_chunk), &sk->sk_wmem_alloc); | 4832 | atomic_sub(sizeof(struct sctp_chunk), &sk->sk_wmem_alloc); |
| 4841 | 4833 | ||
| 4842 | sock_wfree(skb); | 4834 | sock_wfree(skb); |
| @@ -4920,7 +4912,7 @@ void sctp_write_space(struct sock *sk) | |||
| 4920 | 4912 | ||
| 4921 | /* Is there any sndbuf space available on the socket? | 4913 | /* Is there any sndbuf space available on the socket? |
| 4922 | * | 4914 | * |
| 4923 | * Note that wmem_queued is the sum of the send buffers on all of the | 4915 | * Note that sk_wmem_alloc is the sum of the send buffers on all of the |
| 4924 | * associations on the same socket. For a UDP-style socket with | 4916 | * associations on the same socket. For a UDP-style socket with |
| 4925 | * multiple associations, it is possible for it to be "unwriteable" | 4917 | * multiple associations, it is possible for it to be "unwriteable" |
| 4926 | * prematurely. I assume that this is acceptable because | 4918 | * prematurely. I assume that this is acceptable because |
| @@ -4933,7 +4925,7 @@ static int sctp_writeable(struct sock *sk) | |||
| 4933 | { | 4925 | { |
| 4934 | int amt = 0; | 4926 | int amt = 0; |
| 4935 | 4927 | ||
| 4936 | amt = sk->sk_sndbuf - sk->sk_wmem_queued; | 4928 | amt = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc); |
| 4937 | if (amt < 0) | 4929 | if (amt < 0) |
| 4938 | amt = 0; | 4930 | amt = 0; |
| 4939 | return amt; | 4931 | return amt; |
