]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv4/ip_output.c
[INET]: Fix truesize setting in ip_append_data
[linux-2.6-omap-h63xx.git] / net / ipv4 / ip_output.c
index fd99fbd685ea9512cc03aa57db5347d34dd1e2cb..bc9e57550e86d9b4f5b9ee965466f3d4f52f2585 100644 (file)
@@ -1016,8 +1016,6 @@ alloc_new_skb:
 
                                skb_fill_page_desc(skb, i, page, 0, 0);
                                frag = &skb_shinfo(skb)->frags[i];
-                               skb->truesize += PAGE_SIZE;
-                               atomic_add(PAGE_SIZE, &sk->sk_wmem_alloc);
                        } else {
                                err = -EMSGSIZE;
                                goto error;
@@ -1030,6 +1028,8 @@ alloc_new_skb:
                        frag->size += copy;
                        skb->len += copy;
                        skb->data_len += copy;
+                       skb->truesize += copy;
+                       atomic_add(copy, &sk->sk_wmem_alloc);
                }
                offset += copy;
                length -= copy;
@@ -1172,6 +1172,8 @@ ssize_t   ip_append_page(struct sock *sk, struct page *page,
 
                skb->len += len;
                skb->data_len += len;
+               skb->truesize += len;
+               atomic_add(len, &sk->sk_wmem_alloc);
                offset += len;
                size -= len;
        }