Re: [PATCH v2] can: peak_usb: Add bus error reporting for the PCAN-USB FD family
From: Marc Kleine-Budde
Date: Wed Sep 30 2026 - 04:16:45 EST
On 29.09.2026 16:41:03, Stéphane Grosjean wrote:
> From: Stéphane Grosjean <s.grosjean@xxxxxxxxxxxxxx>
>
> CAN bus error reporting is currently missing for all PEAK-System
> USB-to-CAN FD devices. Add support for reporting bus errors by enabling
> bus error notifications in the firmware for each CAN channel.
To make it more clear, let's explain your decision to abort parsing if
the FW sends bogus data. What about something like this:
Abort parsing of the URB if the firmware reports an invalid channel.
> Signed-off-by: Stéphane Grosjean <s.grosjean@xxxxxxxxxxxxxx>
> ---
> Changes in v2:
> - Add a defensive check against single-channel adapters reporting an
> invalid channel index.
> - Link to v1: https://patch.msgid.link/20260929-peak_usb-canfd-berr-v1-1-7abd585f877f@xxxxxxxxxxxxxx
>
> To: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
> To: Vincent Mailhol <mailhol@xxxxxxxxxx>
> Cc: linux-can@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> ---
> drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 89 ++++++++++++++++++++++++++----
> include/linux/can/dev/peak_canfd.h | 15 ++++-
> 2 files changed, 92 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_fd.c b/drivers/net/can/usb/peak_usb/pcan_usb_fd.c
> index 0d46f4ce5dca..98f6943469b3 100644
> --- a/drivers/net/can/usb/peak_usb/pcan_usb_fd.c
> +++ b/drivers/net/can/usb/peak_usb/pcan_usb_fd.c
> @@ -661,17 +661,71 @@ static int pcan_usb_fd_decode_error(struct pcan_usb_fd_if *usb_if,
> struct pucan_error_msg *er = (struct pucan_error_msg *)rx_msg;
> struct pcan_usb_fd_device *pdev;
> struct peak_usb_device *dev;
> + struct can_frame *cf;
> + struct sk_buff *skb;
> + u8 can_err_tx = 0;
>
> if (pucan_ermsg_get_channel(er) >= ARRAY_SIZE(usb_if->dev))
> return -EINVAL;
>
> + /* Guard against bogus channel 1 reports from single-channel adapters */
A malicious FW can also send invalid channel information on multi
channel adapters, so let's update the comment here, too:
Abort parsing of the URB if the firmware reports an invalid channel.
regards,
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung Nürnberg | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
Attachment:
signature.asc
Description: PGP signature