summaryrefslogtreecommitdiffstats
path: root/drivers/net/can/usb
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2023-07-04 11:23:37 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-09-13 09:53:04 +0200
commit03cd9a222e1cca710e12ee179591a66ca59ee4c7 (patch)
tree60c00eab08fd21aee8c79f7f02eed62af4021a6b /drivers/net/can/usb
parent41e2d4e0210bb531ac60f7fb1e9bc1211fdd69b9 (diff)
downloadlinux-stable-03cd9a222e1cca710e12ee179591a66ca59ee4c7.tar.gz
linux-stable-03cd9a222e1cca710e12ee179591a66ca59ee4c7.tar.bz2
linux-stable-03cd9a222e1cca710e12ee179591a66ca59ee4c7.zip
can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM
[ Upstream commit 6c8bc15f02b85bc8f47074110d8fd8caf7a1e42d ] In case of an RX overflow error from the CAN controller and an OOM where no skb can be allocated, the error counters are not incremented. Fix this by first incrementing the error counters and then allocate the skb. Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices") Link: https://lore.kernel.org/all/20230718-gs_usb-cleanups-v1-7-c3b9154ec605@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/net/can/usb')
-rw-r--r--drivers/net/can/usb/gs_usb.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index bd9eb066ecf1..129ef60a577c 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -633,6 +633,9 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
}
if (hf->flags & GS_CAN_FLAG_OVERFLOW) {
+ stats->rx_over_errors++;
+ stats->rx_errors++;
+
skb = alloc_can_err_skb(netdev, &cf);
if (!skb)
goto resubmit_urb;
@@ -640,8 +643,6 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
cf->can_id |= CAN_ERR_CRTL;
cf->len = CAN_ERR_DLC;
cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
- stats->rx_over_errors++;
- stats->rx_errors++;
netif_rx(skb);
}