|
@@ -494,7 +494,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
|
|
|
/* If the first fragment is fragmented itself, we split
|
|
|
* it to two chunks: the first with data and paged part
|
|
|
* and the second, holding only fragments. */
|
|
|
- if (skb_shinfo(head)->frag_list) {
|
|
|
+ if (skb_has_frags(head)) {
|
|
|
struct sk_buff *clone;
|
|
|
int i, plen = 0;
|
|
|
|
|
@@ -503,7 +503,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
|
|
|
clone->next = head->next;
|
|
|
head->next = clone;
|
|
|
skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list;
|
|
|
- skb_shinfo(head)->frag_list = NULL;
|
|
|
+ skb_frag_list_init(head);
|
|
|
for (i=0; i<skb_shinfo(head)->nr_frags; i++)
|
|
|
plen += skb_shinfo(head)->frags[i].size;
|
|
|
clone->len = clone->data_len = head->data_len - plen;
|