diff options
author | Yevgeny Petrilin <yevgenyp@mellanox.co.il> | 2009-04-26 20:42:57 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-27 02:31:31 -0700 |
commit | 785a0982eaaeae2fbe3372d1c9c769e8156a7a5a (patch) | |
tree | 61b6edc9a6eb03521df85bd8756813e4fa11f74d /drivers/net/mlx4/en_rx.c | |
parent | a4233304bb43f87f97fc2ac9143b513814dcf094 (diff) | |
download | blackbird-op-linux-785a0982eaaeae2fbe3372d1c9c769e8156a7a5a.tar.gz blackbird-op-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 */ |