Skip to content

Commit

Permalink
[NET]: Fix skb fclone error path handling.
Browse files Browse the repository at this point in the history
On the error path if we allocated an fclone then we will free it in
the wrong pool.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Herbert Xu authored and David S. Miller committed Jan 24, 2006
1 parent 4072719 commit 8798b3f
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions net/core/skbuff.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,15 @@ void skb_under_panic(struct sk_buff *skb, int sz, void *here)
struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
int fclone)
{
kmem_cache_t *cache;
struct skb_shared_info *shinfo;
struct sk_buff *skb;
u8 *data;

cache = fclone ? skbuff_fclone_cache : skbuff_head_cache;

/* Get the HEAD */
skb = kmem_cache_alloc(fclone ? skbuff_fclone_cache : skbuff_head_cache,
gfp_mask & ~__GFP_DMA);
skb = kmem_cache_alloc(cache, gfp_mask & ~__GFP_DMA);
if (!skb)
goto out;

Expand Down Expand Up @@ -180,7 +182,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
out:
return skb;
nodata:
kmem_cache_free(skbuff_head_cache, skb);
kmem_cache_free(cache, skb);
skb = NULL;
goto out;
}
Expand Down

0 comments on commit 8798b3f

Please sign in to comment.