diff options
author | Aleksander Jan Bajkowski <olek2@wp.pl> | 2022-08-25 00:54:07 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-08-25 22:41:39 +0300 |
commit | c4b6e9341f930e4dd089231c0414758f5f1f9dbd (patch) | |
tree | 3006115b6c8efa137727665613fb70c6ba55bea5 /drivers | |
parent | c8b043702dc0894c07721c5b019096cebc8c798f (diff) | |
download | linux-c4b6e9341f930e4dd089231c0414758f5f1f9dbd.tar.xz |
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')
-rw-r--r-- | drivers/net/ethernet/lantiq_xrx200.c | 2 |
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; |