Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 266903
b: refs/heads/master
c: a8605c6
h: refs/heads/master
i:
  266901: 2a81a7b
  266899: 5269fa0
  266895: 9c93c63
v: v3
  • Loading branch information
Ian Campbell authored and David S. Miller committed Oct 21, 2011
1 parent 43ee69e commit 38b4ddb
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 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: 6a39a16a5ac07a156de91cfb9422bde574e59fa6
refs/heads/master: a8605c6063f785858c1bc431d0bfe66c41e71cfa
10 changes: 6 additions & 4 deletions trunk/include/linux/skbuff.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ struct sk_buff;
typedef struct skb_frag_struct skb_frag_t;

struct skb_frag_struct {
struct page *page;
struct {
struct page *p;
} page;
#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
__u32 page_offset;
__u32 size;
Expand Down Expand Up @@ -1175,7 +1177,7 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
{
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];

frag->page = page;
frag->page.p = page;
frag->page_offset = off;
skb_frag_size_set(frag, size);
}
Expand Down Expand Up @@ -1699,7 +1701,7 @@ static inline void netdev_free_page(struct net_device *dev, struct page *page)
*/
static inline struct page *skb_frag_page(const skb_frag_t *frag)
{
return frag->page;
return frag->page.p;
}

/**
Expand Down Expand Up @@ -1785,7 +1787,7 @@ static inline void *skb_frag_address_safe(const skb_frag_t *frag)
*/
static inline void __skb_frag_set_page(skb_frag_t *frag, struct page *page)
{
frag->page = page;
frag->page.p = page;
}

/**
Expand Down
6 changes: 3 additions & 3 deletions trunk/net/core/skbuff.c
Original file line number Diff line number Diff line change
Expand Up @@ -668,14 +668,14 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)

/* skb frags release userspace buffers */
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
put_page(skb_shinfo(skb)->frags[i].page);
skb_frag_unref(skb, i);

uarg->callback(uarg);

/* skb frags point to kernel buffers */
for (i = skb_shinfo(skb)->nr_frags; i > 0; i--) {
skb_shinfo(skb)->frags[i - 1].page_offset = 0;
skb_shinfo(skb)->frags[i - 1].page = head;
__skb_fill_page_desc(skb, i-1, head, 0,
skb_shinfo(skb)->frags[i - 1].size);
head = (struct page *)head->private;
}

Expand Down

0 comments on commit 38b4ddb

Please sign in to comment.