[PATCH 1/3] can: usb: f81604: handle short interrupt urb messages properly
From: Greg Kroah-Hartman
Date: Mon Feb 23 2026 - 07:11:04 EST
If an interrupt urb is recieved that is not the correct length, properly
detect it and don't attempt to treat the data as valid.
Cc: "Ji-Ze Hong (Peter Hong)" <peter_hong@xxxxxxxxxxxxx>
Cc: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
Cc: Vincent Mailhol <mailhol@xxxxxxxxxx>
Cc: stable <stable@xxxxxxxxxx>
Assisted-by: gkh_clanker_2000
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/net/can/usb/f81604.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/can/usb/f81604.c b/drivers/net/can/usb/f81604.c
index 76578063ac82..c61bd30d1765 100644
--- a/drivers/net/can/usb/f81604.c
+++ b/drivers/net/can/usb/f81604.c
@@ -620,6 +620,12 @@ static void f81604_read_int_callback(struct urb *urb)
netdev_info(netdev, "%s: Int URB aborted: %pe\n", __func__,
ERR_PTR(urb->status));
+ if (urb->actual_length < sizeof(*data)) {
+ netdev_warn(netdev, "%s: short int URB: %u < %zu\n",
+ __func__, urb->actual_length, sizeof(*data));
+ goto resubmit_urb;
+ }
+
switch (urb->status) {
case 0: /* success */
break;
--
2.53.0