diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-10-18 17:00:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-19 03:10:46 -0400 |
commit | 9e903e085262ffbf1fc44a17ac06058aca03524a (patch) | |
tree | 4acefc97ba38c1733474d25c0b2053b56af97db1 /net/ipv6 | |
parent | dd767856a36e00b631d65ebc4bb81b19915532d6 (diff) |
net: add skb frag size accessors
To ease skb->truesize sanitization, its better to be able to localize
all references to skb frags size.
Define accessors : skb_frag_size() to fetch frag size, and
skb_frag_size_{set|add|sub}() to manipulate it.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_output.c | 5 | ||||
-rw-r--r-- | net/ipv6/netfilter/nf_conntrack_reasm.c | 4 | ||||
-rw-r--r-- | net/ipv6/reassembly.c | 4 |
3 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 1e20b64e646c..1c9bf8b5c30a 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1512,13 +1512,14 @@ alloc_new_skb: | |||
1512 | err = -EMSGSIZE; | 1512 | err = -EMSGSIZE; |
1513 | goto error; | 1513 | goto error; |
1514 | } | 1514 | } |
1515 | if (getfrag(from, skb_frag_address(frag)+frag->size, | 1515 | if (getfrag(from, |
1516 | skb_frag_address(frag) + skb_frag_size(frag), | ||
1516 | offset, copy, skb->len, skb) < 0) { | 1517 | offset, copy, skb->len, skb) < 0) { |
1517 | err = -EFAULT; | 1518 | err = -EFAULT; |
1518 | goto error; | 1519 | goto error; |
1519 | } | 1520 | } |
1520 | sk->sk_sndmsg_off += copy; | 1521 | sk->sk_sndmsg_off += copy; |
1521 | frag->size += copy; | 1522 | skb_frag_size_add(frag, copy); |
1522 | skb->len += copy; | 1523 | skb->len += copy; |
1523 | skb->data_len += copy; | 1524 | skb->data_len += copy; |
1524 | skb->truesize += copy; | 1525 | skb->truesize += copy; |
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c index 085727263812..e8762c73b170 100644 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c | |||
@@ -378,8 +378,8 @@ nf_ct_frag6_reasm(struct nf_ct_frag6_queue *fq, struct net_device *dev) | |||
378 | head->next = clone; | 378 | head->next = clone; |
379 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; | 379 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; |
380 | skb_frag_list_init(head); | 380 | skb_frag_list_init(head); |
381 | for (i=0; i<skb_shinfo(head)->nr_frags; i++) | 381 | for (i = 0; i < skb_shinfo(head)->nr_frags; i++) |
382 | plen += skb_shinfo(head)->frags[i].size; | 382 | plen += skb_frag_size(&skb_shinfo(head)->frags[i]); |
383 | clone->len = clone->data_len = head->data_len - plen; | 383 | clone->len = clone->data_len = head->data_len - plen; |
384 | head->data_len -= clone->len; | 384 | head->data_len -= clone->len; |
385 | head->len -= clone->len; | 385 | head->len -= clone->len; |
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index 7b954e2539d0..cc22099ac8b6 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c | |||
@@ -464,8 +464,8 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev, | |||
464 | head->next = clone; | 464 | head->next = clone; |
465 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; | 465 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; |
466 | skb_frag_list_init(head); | 466 | skb_frag_list_init(head); |
467 | for (i=0; i<skb_shinfo(head)->nr_frags; i++) | 467 | for (i = 0; i < skb_shinfo(head)->nr_frags; i++) |
468 | plen += skb_shinfo(head)->frags[i].size; | 468 | plen += skb_frag_size(&skb_shinfo(head)->frags[i]); |
469 | clone->len = clone->data_len = head->data_len - plen; | 469 | clone->len = clone->data_len = head->data_len - plen; |
470 | head->data_len -= clone->len; | 470 | head->data_len -= clone->len; |
471 | head->len -= clone->len; | 471 | head->len -= clone->len; |