diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-31 07:46:51 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-31 07:46:51 -0700 |
commit | dd13810b420e0de1fe75bc3b9b14dd2c2c9a4299 (patch) | |
tree | 37598ca7162d5d440ab554a45d6f64347f4e5df4 /net/core/skbuff.c | |
parent | a3634d7169f56eca5e349fce2f1de228fc10efda (diff) | |
parent | 298bb62175a8e8c2f21f3e00543cda853f423599 (diff) | |
download | blackbird-op-linux-dd13810b420e0de1fe75bc3b9b14dd2c2c9a4299.tar.gz blackbird-op-linux-dd13810b420e0de1fe75bc3b9b14dd2c2c9a4299.zip |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
[AF_KEY]: suppress a warning for 64k pages.
[TIPC]: Fix headercheck wrt. tipc_config.h
[COMPAT]: Fix build on COMPAT platforms when CONFIG_NET is disabled.
[CONNECTOR]: Fix a spurious kfree_skb() call
[COMPAT]: Fix new dev_ifname32 returning -EFAULT
[NET]: Fix incorrect sg_mark_end() calls.
[IPVS]: Remove /proc/net/ip_vs_lblcr
[IPV6]: remove duplicate call to proc_net_remove
[NETNS]: fix net released by rcu callback
[NET]: Fix free_netdev on register_netdev failure.
[WAN]: fix drivers/net/wan/lmc/ compilation
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 573e17240197..64b50ff7a413 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2028,8 +2028,8 @@ void __init skb_init(void) * Fill the specified scatter-gather list with mappings/pointers into a * region of the buffer space attached to a socket buffer. */ -int -skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) +static int +__skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) { int start = skb_headlen(skb); int i, copy = start - offset; @@ -2078,7 +2078,8 @@ skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) if ((copy = end - offset) > 0) { if (copy > len) copy = len; - elt += skb_to_sgvec(list, sg+elt, offset - start, copy); + elt += __skb_to_sgvec(list, sg+elt, offset - start, + copy); if ((len -= copy) == 0) return elt; offset += copy; @@ -2090,6 +2091,15 @@ skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) return elt; } +int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) +{ + int nsg = __skb_to_sgvec(skb, sg, offset, len); + + __sg_mark_end(&sg[nsg - 1]); + + return nsg; +} + /** * skb_cow_data - Check that a socket buffer's data buffers are writable * @skb: The socket buffer to check. |