diff options
| author | Marc Kleine-Budde <mkl@pengutronix.de> | 2023-07-18 11:43:54 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-08-11 11:45:33 +0200 |
| commit | 5c9dbd3cb6b4fc7a270cec21c783f5b9d28e3f35 (patch) | |
| tree | 725181c4a8b93418776d6d7d11276029a286b2f4 /drivers | |
| parent | b9ff365c4acade19b966ceb5a3923542b2d6c31a (diff) | |
| download | linux-5c9dbd3cb6b4fc7a270cec21c783f5b9d28e3f35.tar.gz linux-5c9dbd3cb6b4fc7a270cec21c783f5b9d28e3f35.tar.bz2 linux-5c9dbd3cb6b4fc7a270cec21c783f5b9d28e3f35.zip | |
can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED
commit f8a2da6ec2417cca169fa85a8ab15817bccbb109 upstream.
After an initial link up the CAN device is in ERROR-ACTIVE mode. Due
to a missing CAN_STATE_STOPPED in gs_can_close() it doesn't change to
STOPPED after a link down:
| ip link set dev can0 up
| ip link set dev can0 down
| ip --details link show can0
| 13: can0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
| link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
| can state ERROR-ACTIVE restart-ms 1000
Add missing assignment of CAN_STATE_STOPPED in gs_can_close().
Cc: stable@vger.kernel.org
Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
Link: https://lore.kernel.org/all/20230718-gs_usb-fix-can-state-v1-1-f19738ae2c23@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/can/usb/gs_usb.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c index 62ca4964a863..b2e48c8595f0 100644 --- a/drivers/net/can/usb/gs_usb.c +++ b/drivers/net/can/usb/gs_usb.c @@ -740,6 +740,8 @@ static int gs_can_close(struct net_device *netdev) usb_kill_anchored_urbs(&dev->tx_submitted); atomic_set(&dev->active_tx_urbs, 0); + dev->can.state = CAN_STATE_STOPPED; + /* reset the device */ rc = gs_cmd_reset(dev); if (rc < 0) |
