diff options
author | Ian Campbell <Ian.Campbell@citrix.com> | 2011-08-22 19:45:01 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-24 20:52:12 -0400 |
commit | 804cf14ea5ceca46554d5801e2817bba8116b7e5 (patch) | |
tree | 94da9b8e7f6c7cfdaae1d0812c4b7a6d5d001454 /net/xfrm | |
parent | 408dadf03fe365f12f85d5c3d959f4bb888b9f3e (diff) |
net: xfrm: convert to SKB frag APIs
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm')
-rw-r--r-- | net/xfrm/xfrm_ipcomp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c index fc91ad7ee26e..f781b9ab8a54 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c | |||
@@ -70,26 +70,29 @@ static int ipcomp_decompress(struct xfrm_state *x, struct sk_buff *skb) | |||
70 | 70 | ||
71 | while ((scratch += len, dlen -= len) > 0) { | 71 | while ((scratch += len, dlen -= len) > 0) { |
72 | skb_frag_t *frag; | 72 | skb_frag_t *frag; |
73 | struct page *page; | ||
73 | 74 | ||
74 | err = -EMSGSIZE; | 75 | err = -EMSGSIZE; |
75 | if (WARN_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS)) | 76 | if (WARN_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS)) |
76 | goto out; | 77 | goto out; |
77 | 78 | ||
78 | frag = skb_shinfo(skb)->frags + skb_shinfo(skb)->nr_frags; | 79 | frag = skb_shinfo(skb)->frags + skb_shinfo(skb)->nr_frags; |
79 | frag->page = alloc_page(GFP_ATOMIC); | 80 | page = alloc_page(GFP_ATOMIC); |
80 | 81 | ||
81 | err = -ENOMEM; | 82 | err = -ENOMEM; |
82 | if (!frag->page) | 83 | if (!page) |
83 | goto out; | 84 | goto out; |
84 | 85 | ||
86 | __skb_frag_set_page(frag, page); | ||
87 | |||
85 | len = PAGE_SIZE; | 88 | len = PAGE_SIZE; |
86 | if (dlen < len) | 89 | if (dlen < len) |
87 | len = dlen; | 90 | len = dlen; |
88 | 91 | ||
89 | memcpy(page_address(frag->page), scratch, len); | ||
90 | |||
91 | frag->page_offset = 0; | 92 | frag->page_offset = 0; |
92 | frag->size = len; | 93 | frag->size = len; |
94 | memcpy(skb_frag_address(frag), scratch, len); | ||
95 | |||
93 | skb->truesize += len; | 96 | skb->truesize += len; |
94 | skb->data_len += len; | 97 | skb->data_len += len; |
95 | skb->len += len; | 98 | skb->len += len; |