提交 c4b6e934 编写于 作者: A Aleksander Jan Bajkowski 提交者: Jakub Kicinski

net: lantiq_xrx200: fix lock under memory pressure

When the xrx200_hw_receive() function returns -ENOMEM, the NAPI poll
function immediately returns an error.
This is incorrect for two reasons:
* the function terminates without enabling interrupts or scheduling NAPI,
* the error code (-ENOMEM) is returned instead of the number of received
packets.

After the first memory allocation failure occurs, packet reception is
locked due to disabled interrupts from DMA..

Fixes: fe1a5642 ("net: lantiq: Add Lantiq / Intel VRX200 Ethernet driver")
Signed-off-by: NAleksander Jan Bajkowski <olek2@wp.pl>
Signed-off-by: NJakub Kicinski <kuba@kernel.org>
上级 c8b04370
...@@ -294,7 +294,7 @@ static int xrx200_poll_rx(struct napi_struct *napi, int budget) ...@@ -294,7 +294,7 @@ static int xrx200_poll_rx(struct napi_struct *napi, int budget)
if (ret == XRX200_DMA_PACKET_IN_PROGRESS) if (ret == XRX200_DMA_PACKET_IN_PROGRESS)
continue; continue;
if (ret != XRX200_DMA_PACKET_COMPLETE) if (ret != XRX200_DMA_PACKET_COMPLETE)
return ret; break;
rx++; rx++;
} else { } else {
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册