hip04_eth: fix missing error handle for build_skb failed
Subsystems (3)
PATCH 1/1 hip04_eth: fix missing error handle for build_skb failed
when build_skb failed, we should goto refill the buffer.
Signed-off-by Weidong Wang <[email protected]>
--- drivers/net/ethernet/hisilicon/hip04_eth.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/net/ethernet/hisilicon/hip04_eth.c +4 -1
@@ -500,8 +500,10 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget)while (cnt && !last) { buf = priv->rx_buf[priv->rx_head]; skb =build_skb (buf, priv->rx_buf_size); -if (unlikely (!skb)) +if (unlikely (!skb)) {net_dbg_ratelimited ("build_skb failed\n" ); + goto refill; + }dma_unmap_single (&ndev->dev, priv->rx_phys[priv->rx_head],RX_BUF_SIZE ,DMA_FROM_DEVICE );
@@ -528,6 +530,7 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget) rx++; } +refill: buf =netdev_alloc_frag (priv->rx_buf_size);if (!buf) goto done;
Signature · 1 line
1.9.0
Quoted 4 lines · Weidong Wang
when
build_skbfailed, we should goto refill the buffer.Signed-off-by Weidong Wang <[email protected]>---
Acked-by Ding Tainhong <[email protected]>
Quoted 28 lines
drivers/net/ethernet/hisilicon/hip04_eth.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)drivers/net/ethernet/hisilicon/hip04_eth.c +4
-1@@ -500,8 +500,10 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget)while (cnt && !last) { buf = priv->rx_buf[priv->rx_head]; skb =build_skb (buf, priv->rx_buf_size); -if (unlikely (!skb)) +if (unlikely (!skb)) {net_dbg_ratelimited ("build_skb failed\n" ); + goto refill; + }dma_unmap_single (&ndev->dev, priv->rx_phys[priv->rx_head],RX_BUF_SIZE ,DMA_FROM_DEVICE );@@ -528,6 +530,7 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget) rx++; } +refill: buf =netdev_alloc_frag (priv->rx_buf_size);if (!buf) goto done;
From: Weidong Wang <[email protected]>
Date: Wed, 13 Jan 2016 11:11:09 +0800
Quoted 3 lines
when
build_skbfailed, we should goto refill the buffer.Signed-off-by Weidong Wang <[email protected]>
Applied, thanks.