Commit 6c8bc15f authored by Marc Kleine-Budde's avatar Marc Kleine-Budde
Browse files

can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM

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: d08e973a ("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: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 55ad95d9
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -631,6 +631,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;
@@ -638,8 +641,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);
	}