All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org,
	linux-can@vger.kernel.org, kernel@pengutronix.de,
	Jimmy Assarsson <extja@kvaser.com>
Subject: Re: [PATCH net-next 15/18] can: kvaser_usb: Update stats and state even if alloc_can_err_skb() fails
Date: Fri, 10 Jan 2025 12:58:03 +0000	[thread overview]
Message-ID: <20250110125803.GF7706@kernel.org> (raw)
In-Reply-To: <20250110112712.3214173-16-mkl@pengutronix.de>

On Fri, Jan 10, 2025 at 12:04:23PM +0100, Marc Kleine-Budde wrote:
> From: Jimmy Assarsson <extja@kvaser.com>
> 
> Ensure statistics, error counters, and CAN state are updated consistently,
> even when alloc_can_err_skb() fails during state changes or error message
> frame reception.
> 
> Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
> Link: https://patch.msgid.link/20241230142645.128244-1-extja@kvaser.com
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

...

> diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c

...

> @@ -1187,11 +1169,18 @@ static void kvaser_usb_leaf_rx_error(const struct kvaser_usb *dev,
>  		if (priv->can.restart_ms &&
>  		    old_state == CAN_STATE_BUS_OFF &&
>  		    new_state < CAN_STATE_BUS_OFF) {
> -			cf->can_id |= CAN_ERR_RESTARTED;
> +			if (cf)
> +				cf->can_id |= CAN_ERR_RESTARTED;
>  			netif_carrier_on(priv->netdev);
>  		}
>  	}
>  
> +	if (!skb) {
> +		stats->rx_dropped++;
> +		netdev_warn(priv->netdev, "No memory left for err_skb\n");
> +		return;
> +	}
> +
>  	switch (dev->driver_info->family) {
>  	case KVASER_LEAF:
>  		if (es->leaf.error_factor) {

Hi Jimmy and Marc,

The next line of this function is:

			cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT;

Which dereferences cf. However, the check added at the top of
this hunk assumes that cf may be NULL. This doesn't seem consistent.

Flagged by Smatch.

> -- 
> 2.45.2
> 
> 
> 

  reply	other threads:[~2025-01-10 12:58 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-10 11:04 [PATCH net-next 0/18] pull-request: can-next 2025-01-10 Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 01/18] dt-bindings: can: mpfs: add PIC64GX CAN compatibility Marc Kleine-Budde
2025-01-11  7:00   ` patchwork-bot+netdevbpf
2025-01-10 11:04 ` [PATCH net-next 02/18] dt-bindings: can: convert tcan4x5x.txt to DT schema Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 03/18] dt-bindings: can: tcan4x5x: Document the ti,nwkrq-voltage-vio option Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 04/18] can: tcan4x5x: add option for selecting nWKRQ voltage Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 05/18] can: sun4i_can: continue to use likely() to check skb Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 06/18] can: tcan4x5x: get rid of false clock errors Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 07/18] dt-bindings: net: can: atmel: Convert to json schema Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 08/18] mailmap: add an entry for Oliver Hartkopp Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 09/18] MAINTAINERS: assign em_canid.c additionally to CAN maintainers Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 10/18] can: dev: can_get_state_str(): Remove dead code Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 11/18] can: m_can: add deinit callback Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 12/18] can: tcan4x5x: add deinit callback to set standby mode Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 13/18] can: m_can: call deinit/init callback when going into suspend/resume Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 14/18] dt-bindings: can: st,stm32-bxcan: fix st,gcan property type Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 15/18] can: kvaser_usb: Update stats and state even if alloc_can_err_skb() fails Marc Kleine-Budde
2025-01-10 12:58   ` Simon Horman [this message]
2025-01-10 13:10     ` Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 16/18] can: kvaser_usb: Add support for CAN_CTRLMODE_BERR_REPORTING Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 17/18] can: kvaser_pciefd: Update stats and state even if alloc_can_err_skb() fails Marc Kleine-Budde
2025-01-10 11:04 ` [PATCH net-next 18/18] can: kvaser_pciefd: Add support for CAN_CTRLMODE_BERR_REPORTING Marc Kleine-Budde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250110125803.GF7706@kernel.org \
    --to=horms@kernel.org \
    --cc=davem@davemloft.net \
    --cc=extja@kvaser.com \
    --cc=kernel@pengutronix.de \
    --cc=kuba@kernel.org \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.