diff options
author | Tejun Heo <tj@kernel.org> | 2009-01-31 14:36:00 +0900 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-01-31 14:36:00 +0900 |
commit | da2c0b021cde94866f1e492f940aad29e8f61258 (patch) | |
tree | 0455f3e221d6128ba1efb68135c3fbe2c2c8b390 /net/core/skbuff.c | |
parent | 795f99b61d20c34cb04d17d8906b32f745a635ec (diff) | |
parent | 33bfad54b58cf05cfe6678c3ec9235d4bc8db4c2 (diff) | |
download | op-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.c | 15 |
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; } |