diff options
author | Yevgeny Petrilin <yevgenyp@mellanox.co.il> | 2009-04-26 22:42:57 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-27 11:31:31 +0200 |
commit | 785a0982eaaeae2fbe3372d1c9c769e8156a7a5a (patch) | |
tree | 61b6edc9a6eb03521df85bd8756813e4fa11f74d /drivers/net/mlx4/en_rx.c | |
parent | mlx4_en: Fix cleanup flow on cq activation (diff) | |
download | linux-785a0982eaaeae2fbe3372d1c9c769e8156a7a5a.tar.xz linux-785a0982eaaeae2fbe3372d1c9c769e8156a7a5a.zip |
mlx4_en: Handle page allocation failure during receive
If we failed to allocate new fragments for receive buffer,
the packet should be dropped and packets should be reused.
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/mlx4/en_rx.c')
-rw-r--r-- | drivers/net/mlx4/en_rx.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c index 0cbb78ca7b29..7942c4d3cd88 100644 --- a/drivers/net/mlx4/en_rx.c +++ b/drivers/net/mlx4/en_rx.c @@ -610,6 +610,10 @@ static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv, used_frags = mlx4_en_complete_rx_desc(priv, rx_desc, skb_frags, skb_shinfo(skb)->frags, page_alloc, length); + if (unlikely(!used_frags)) { + kfree_skb(skb); + return NULL; + } skb_shinfo(skb)->nr_frags = used_frags; /* Copy headers into the skb linear buffer */ |