123456789101112131415161718192021222324252627282930313233 |
- From c4b6e9341f930e4dd089231c0414758f5f1f9dbd Mon Sep 17 00:00:00 2001
- From: Aleksander Jan Bajkowski <[email protected]>
- Date: Wed, 24 Aug 2022 23:54:07 +0200
- Subject: [PATCH] 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: fe1a56420cf2 ("net: lantiq: Add Lantiq / Intel VRX200 Ethernet driver")
- Signed-off-by: Aleksander Jan Bajkowski <[email protected]>
- Signed-off-by: Jakub Kicinski <[email protected]>
- ---
- drivers/net/ethernet/lantiq_xrx200.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
- --- a/drivers/net/ethernet/lantiq_xrx200.c
- +++ b/drivers/net/ethernet/lantiq_xrx200.c
- @@ -294,7 +294,7 @@ static int xrx200_poll_rx(struct napi_st
- if (ret == XRX200_DMA_PACKET_IN_PROGRESS)
- continue;
- if (ret != XRX200_DMA_PACKET_COMPLETE)
- - return ret;
- + break;
- rx++;
- } else {
- break;
|