]> git.itanic.dy.fi Git - linux-stable/commitdiff
can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED
authorMarc Kleine-Budde <mkl@pengutronix.de>
Tue, 18 Jul 2023 09:43:54 +0000 (11:43 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 20 Jul 2023 09:12:45 +0000 (11:12 +0200)
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>
drivers/net/can/usb/gs_usb.c

index f418066569fcc5a9c5c244f1b0c6dfed2c53164a..bd9eb066ecf15d7ae8cd6338d492801be65695c5 100644 (file)
@@ -1030,6 +1030,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)