Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81855
b: refs/heads/master
c: 29ffe1a
h: refs/heads/master
i:
  81853: 95b7897
  81851: 3baa78f
  81847: 9cf2f53
  81839: 160d881
  81823: bcfc5a6
  81791: 3c489d3
v: v3
  • Loading branch information
Herbert Xu authored and David S. Miller committed Feb 1, 2008
1 parent 3befae5 commit 30b0743
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1987e7b4855fcb6a866d3279ee9f2890491bc34d
refs/heads/master: 29ffe1a5c52dae13b6efead97aab9b058f38fce4
4 changes: 3 additions & 1 deletion trunk/net/ipv4/ip_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,7 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
if (skb_shinfo(skb)->frag_list) {
struct sk_buff *frag;
int first_len = skb_pagelen(skb);
int truesizes = 0;

if (first_len - hlen > mtu ||
((first_len - hlen) & 7) ||
Expand All @@ -499,7 +500,7 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
sock_hold(skb->sk);
frag->sk = skb->sk;
frag->destructor = sock_wfree;
skb->truesize -= frag->truesize;
truesizes += frag->truesize;
}
}

Expand All @@ -510,6 +511,7 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
frag = skb_shinfo(skb)->frag_list;
skb_shinfo(skb)->frag_list = NULL;
skb->data_len = first_len - skb_headlen(skb);
skb->truesize -= truesizes;
skb->len = first_len;
iph->tot_len = htons(first_len);
iph->frag_off = htons(IP_MF);
Expand Down
4 changes: 3 additions & 1 deletion trunk/net/ipv6/ip6_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))

if (skb_shinfo(skb)->frag_list) {
int first_len = skb_pagelen(skb);
int truesizes = 0;

if (first_len - hlen > mtu ||
((first_len - hlen) & 7) ||
Expand All @@ -658,7 +659,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
sock_hold(skb->sk);
frag->sk = skb->sk;
frag->destructor = sock_wfree;
skb->truesize -= frag->truesize;
truesizes += frag->truesize;
}
}

Expand Down Expand Up @@ -689,6 +690,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))

first_len = skb_pagelen(skb);
skb->data_len = first_len - skb_headlen(skb);
skb->truesize -= truesizes;
skb->len = first_len;
ipv6_hdr(skb)->payload_len = htons(first_len -
sizeof(struct ipv6hdr));
Expand Down

0 comments on commit 30b0743

Please sign in to comment.