diff options
Diffstat (limited to 'net/ipv4/ip_output.c')
-rw-r--r-- | net/ipv4/ip_output.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index fd99fbd685ea..bc9e57550e86 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -1016,8 +1016,6 @@ alloc_new_skb: | |||
1016 | 1016 | ||
1017 | skb_fill_page_desc(skb, i, page, 0, 0); | 1017 | skb_fill_page_desc(skb, i, page, 0, 0); |
1018 | frag = &skb_shinfo(skb)->frags[i]; | 1018 | frag = &skb_shinfo(skb)->frags[i]; |
1019 | skb->truesize += PAGE_SIZE; | ||
1020 | atomic_add(PAGE_SIZE, &sk->sk_wmem_alloc); | ||
1021 | } else { | 1019 | } else { |
1022 | err = -EMSGSIZE; | 1020 | err = -EMSGSIZE; |
1023 | goto error; | 1021 | goto error; |
@@ -1030,6 +1028,8 @@ alloc_new_skb: | |||
1030 | frag->size += copy; | 1028 | frag->size += copy; |
1031 | skb->len += copy; | 1029 | skb->len += copy; |
1032 | skb->data_len += copy; | 1030 | skb->data_len += copy; |
1031 | skb->truesize += copy; | ||
1032 | atomic_add(copy, &sk->sk_wmem_alloc); | ||
1033 | } | 1033 | } |
1034 | offset += copy; | 1034 | offset += copy; |
1035 | length -= copy; | 1035 | length -= copy; |
@@ -1172,6 +1172,8 @@ ssize_t ip_append_page(struct sock *sk, struct page *page, | |||
1172 | 1172 | ||
1173 | skb->len += len; | 1173 | skb->len += len; |
1174 | skb->data_len += len; | 1174 | skb->data_len += len; |
1175 | skb->truesize += len; | ||
1176 | atomic_add(len, &sk->sk_wmem_alloc); | ||
1175 | offset += len; | 1177 | offset += len; |
1176 | size -= len; | 1178 | size -= len; |
1177 | } | 1179 | } |