[IPSEC]: Fix scatterlist handling in skb_icv_walk().
authorDavid S. Miller <davem@sunset.davemloft.net>
Fri, 26 Oct 2007 07:39:27 +0000 (00:39 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Fri, 26 Oct 2007 07:39:27 +0000 (00:39 -0700)
Use sg_init_one() and sg_init_table() as needed.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/xfrm/xfrm_algo.c

index fa45989a716af7a7045ad56f9431908641d4897b..0426388d351de58bf116ae526b791c8e42c22764 100644 (file)
@@ -553,7 +553,7 @@ int skb_icv_walk(const struct sk_buff *skb, struct hash_desc *desc,
                if (copy > len)
                        copy = len;
 
-               sg_set_buf(&sg, skb->data + offset, copy);
+               sg_init_one(&sg, skb->data + offset, copy);
 
                err = icv_update(desc, &sg, copy);
                if (unlikely(err))
@@ -576,8 +576,9 @@ int skb_icv_walk(const struct sk_buff *skb, struct hash_desc *desc,
                        if (copy > len)
                                copy = len;
 
+                       sg_init_table(&sg, 1);
                        sg_set_page(&sg, frag->page, copy,
-                                       frag->page_offset + offset-start);
+                                   frag->page_offset + offset-start);
 
                        err = icv_update(desc, &sg, copy);
                        if (unlikely(err))