]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
can: usb: f81604: handle short interrupt urb messages properly
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Feb 2026 12:10:30 +0000 (13:10 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 2 Mar 2026 10:04:14 +0000 (11:04 +0100)
If an interrupt urb is received 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@fintek.com.tw>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Vincent Mailhol <mailhol@kernel.org>
Cc: stable@kernel.org
Assisted-by: gkh_clanker_2000
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/2026022331-opal-evaluator-a928@gregkh
Fixes: 88da17436973 ("can: usb: f81604: add Fintek F81604 support")
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/f81604.c

index 76578063ac8239c176817257f43c73d03c9df5b2..c61bd30d1765e61164add72df4c8b0b5590a6b1d 100644 (file)
@@ -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;