All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthieu Baerts <matthieu.baerts@tessares.net>
To: Marc Kleine-Budde <mkl@pengutronix.de>, netdev@vger.kernel.org
Cc: davem@davemloft.net, kuba@kernel.org, linux-can@vger.kernel.org,
	kernel@pengutronix.de, MPTCP Upstream <mptcp@lists.linux.dev>
Subject: Re: [PATCH net 2/3] can: gs_usb: gs_can_open(): fix race dev->can.state condition
Date: Thu, 22 Sep 2022 10:04:55 +0200	[thread overview]
Message-ID: <84f45a7d-92b6-4dc5-d7a1-072152fab6ff@tessares.net> (raw)
In-Reply-To: <20220921083609.419768-3-mkl@pengutronix.de>

[-- Attachment #1: Type: text/plain, Size: 1142 bytes --]

Hello,

On 21/09/2022 10:36, Marc Kleine-Budde wrote:
> The dev->can.state is set to CAN_STATE_ERROR_ACTIVE, after the device
> has been started. On busy networks the CAN controller might receive
> CAN frame between and go into an error state before the dev->can.state
> is assigned.
> 
> Assign dev->can.state before starting the controller to close the race
> window.
> 
> Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
> Link: https://lore.kernel.org/all/20220920195216.232481-1-mkl@pengutronix.de
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

FYI, we got a small conflict when merging -net in net-next in the MPTCP
tree due to this patch applied in -net:

  5440428b3da6 ("can: gs_usb: gs_can_open(): fix race dev->can.state
condition")

and this one from net-next:

  45dfa45f52e6 ("can: gs_usb: add RX and TX hardware timestamp support")

The conflict has been resolved on our side[1] and the resolution we
suggest is attached to this email.

Cheers,
Matt

[1] https://github.com/multipath-tcp/mptcp_net-next/commit/671f1521b564
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

[-- Attachment #2: 671f1521b5648e99fb55bbd0f114e4433551d411.patch --]
[-- Type: text/x-patch, Size: 1001 bytes --]

diff --cc drivers/net/can/usb/gs_usb.c
index cc363f1935ce,c1ff3c046d62..5e0d280b0cd3
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@@ -956,11 -823,8 +956,12 @@@ static int gs_can_open(struct net_devic
  	if (ctrlmode & CAN_CTRLMODE_3_SAMPLES)
  		flags |= GS_CAN_MODE_TRIPLE_SAMPLE;
  
 +	/* if hardware supports timestamps, enable it */
 +	if (dev->feature & GS_CAN_FEATURE_HW_TIMESTAMP)
 +		flags |= GS_CAN_MODE_HW_TIMESTAMP;
 +
  	/* finally start device */
+ 	dev->can.state = CAN_STATE_ERROR_ACTIVE;
  	dm->mode = cpu_to_le32(GS_CAN_MODE_START);
  	dm->flags = cpu_to_le32(flags);
  	rc = usb_control_msg(interface_to_usbdev(dev->iface),
@@@ -977,12 -842,6 +979,10 @@@
  
  	kfree(dm);
  
 +	/* start polling timestamp */
 +	if (dev->feature & GS_CAN_FEATURE_HW_TIMESTAMP)
 +		gs_usb_timestamp_init(dev);
 +
- 	dev->can.state = CAN_STATE_ERROR_ACTIVE;
- 
  	parent->active_channels++;
  	if (!(dev->can.ctrlmode & CAN_CTRLMODE_LISTENONLY))
  		netif_start_queue(netdev);

  reply	other threads:[~2022-09-22  8:04 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-21  8:36 [PATCH net 0/3] pull-request: can 2022-09-21 Marc Kleine-Budde
2022-09-21  8:36 ` [PATCH net 1/3] can: flexcan: flexcan_mailbox_read() fix return value for drop = true Marc Kleine-Budde
2022-09-21 14:20   ` patchwork-bot+netdevbpf
2022-09-21  8:36 ` [PATCH net 2/3] can: gs_usb: gs_can_open(): fix race dev->can.state condition Marc Kleine-Budde
2022-09-22  8:04   ` Matthieu Baerts [this message]
2022-09-22  8:23     ` Marc Kleine-Budde
2022-09-22 20:05       ` Jakub Kicinski
2022-09-23  9:24         ` Matthieu Baerts
2022-09-21  8:36 ` [PATCH net 3/3] can: gs_usb: gs_usb_set_phys_id(): return with error if identify is not supported 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=84f45a7d-92b6-4dc5-d7a1-072152fab6ff@tessares.net \
    --to=matthieu.baerts@tessares.net \
    --cc=davem@davemloft.net \
    --cc=kernel@pengutronix.de \
    --cc=kuba@kernel.org \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=mptcp@lists.linux.dev \
    --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.