aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/lantiq_xrx200.c
diff options
context:
space:
mode:
authorAleksander Jan Bajkowski <olek2@wp.pl>2022-08-24 23:54:07 +0200
committerJakub Kicinski <kuba@kernel.org>2022-08-25 12:41:39 -0700
commitc4b6e9341f930e4dd089231c0414758f5f1f9dbd (patch)
tree3006115b6c8efa137727665613fb70c6ba55bea5 /drivers/net/ethernet/lantiq_xrx200.c
parentnet: lantiq_xrx200: confirm skb is allocated before using (diff)
downloadlinux-dev-c4b6e9341f930e4dd089231c0414758f5f1f9dbd.tar.xz
linux-dev-c4b6e9341f930e4dd089231c0414758f5f1f9dbd.zip
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 <olek2@wp.pl> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/lantiq_xrx200.c')
-rw-r--r--drivers/net/ethernet/lantiq_xrx200.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/lantiq_xrx200.c b/drivers/net/ethernet/lantiq_xrx200.c
index 89314b645c82..25adce7f0c7c 100644
--- 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_struct *napi, int budget)
if (ret == XRX200_DMA_PACKET_IN_PROGRESS)
continue;
if (ret != XRX200_DMA_PACKET_COMPLETE)
- return ret;
+ break;
rx++;
} else {
break;