summaryrefslogtreecommitdiffstats
path: root/net/core/skbuff.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-01-31 14:36:00 +0900
committerTejun Heo <tj@kernel.org>2009-01-31 14:36:00 +0900
commitda2c0b021cde94866f1e492f940aad29e8f61258 (patch)
tree0455f3e221d6128ba1efb68135c3fbe2c2c8b390 /net/core/skbuff.c
parent795f99b61d20c34cb04d17d8906b32f745a635ec (diff)
parent33bfad54b58cf05cfe6678c3ec9235d4bc8db4c2 (diff)
downloadop-kernel-dev-da2c0b021cde94866f1e492f940aad29e8f61258.zip
op-kernel-dev-da2c0b021cde94866f1e492f940aad29e8f61258.tar.gz
Merge branch 'master' into tj-percpu
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r--net/core/skbuff.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 2e5f2ca..da74b84 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2212,10 +2212,10 @@ unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
return 0;
next_skb:
- block_limit = skb_headlen(st->cur_skb);
+ block_limit = skb_headlen(st->cur_skb) + st->stepped_offset;
if (abs_offset < block_limit) {
- *data = st->cur_skb->data + abs_offset;
+ *data = st->cur_skb->data + (abs_offset - st->stepped_offset);
return block_limit - abs_offset;
}
@@ -2250,13 +2250,14 @@ next_skb:
st->frag_data = NULL;
}
- if (st->cur_skb->next) {
- st->cur_skb = st->cur_skb->next;
+ if (st->root_skb == st->cur_skb &&
+ skb_shinfo(st->root_skb)->frag_list) {
+ st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
st->frag_idx = 0;
goto next_skb;
- } else if (st->root_skb == st->cur_skb &&
- skb_shinfo(st->root_skb)->frag_list) {
- st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
+ } else if (st->cur_skb->next) {
+ st->cur_skb = st->cur_skb->next;
+ st->frag_idx = 0;
goto next_skb;
}
OpenPOWER on IntegriCloud