summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYevgeny Petrilin <yevgenyp@mellanox.co.il>2009-04-26 20:42:57 +0000
committerDavid S. Miller <davem@davemloft.net>2009-04-27 02:31:31 -0700
commit785a0982eaaeae2fbe3372d1c9c769e8156a7a5a (patch)
tree61b6edc9a6eb03521df85bd8756813e4fa11f74d
parenta4233304bb43f87f97fc2ac9143b513814dcf094 (diff)
downloadlinux-785a0982eaaeae2fbe3372d1c9c769e8156a7a5a.tar.gz
linux-785a0982eaaeae2fbe3372d1c9c769e8156a7a5a.tar.bz2
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>
-rw-r--r--drivers/net/mlx4/en_rx.c4
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 */