aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorIan Campbell <Ian.Campbell@citrix.com>2011-10-19 19:01:49 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-21 02:52:53 -0400
commita8605c6063f785858c1bc431d0bfe66c41e71cfa (patch)
tree42ce7ce9a1679f09b54353dd1ea05a6581abe754 /net/core
parent6a39a16a5ac07a156de91cfb9422bde574e59fa6 (diff)
net: add opaque struct around skb frag page
I've split this bit out of the skb frag destructor patch since it helps enforce the use of the fragment API. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/skbuff.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index e27104039a39..ca4db40e75b8 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -668,14 +668,14 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)
668 668
669 /* skb frags release userspace buffers */ 669 /* skb frags release userspace buffers */
670 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) 670 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
671 put_page(skb_shinfo(skb)->frags[i].page); 671 skb_frag_unref(skb, i);
672 672
673 uarg->callback(uarg); 673 uarg->callback(uarg);
674 674
675 /* skb frags point to kernel buffers */ 675 /* skb frags point to kernel buffers */
676 for (i = skb_shinfo(skb)->nr_frags; i > 0; i--) { 676 for (i = skb_shinfo(skb)->nr_frags; i > 0; i--) {
677 skb_shinfo(skb)->frags[i - 1].page_offset = 0; 677 __skb_fill_page_desc(skb, i-1, head, 0,
678 skb_shinfo(skb)->frags[i - 1].page = head; 678 skb_shinfo(skb)->frags[i - 1].size);
679 head = (struct page *)head->private; 679 head = (struct page *)head->private;
680 } 680 }
681 681