[PATCH can-next v7 6/6] can: gs_usb: properly shut down timestamp worker

From: Marc Kleine-Budde

Date: Sat Nov 14 2026 - 10:18:57 EST


To avoid self-rescheduling of the timestamp worker, shut it down using
disable_delayed_work_sync() instead of cancel_delayed_work_sync().

Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
---
drivers/net/can/usb/gs_usb.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index b7780a23eff3..b9ba3775eb60 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -498,6 +498,7 @@ static void gs_usb_timestamp_init(struct gs_usb *parent)
spin_lock_init(&parent->tc_lock);

INIT_DELAYED_WORK(&parent->timestamp, gs_usb_timestamp_work);
+ disable_delayed_work(&parent->timestamp);

parent->flags |= GS_USB_PARENT_FLAGS_HW_TIMESTAMP;
}
@@ -525,6 +526,7 @@ static int gs_usb_timestamp_start(struct gs_usb *parent)
cc->read = gs_usb_timestamp_read;
}

+ enable_delayed_work(&parent->timestamp);
schedule_delayed_work(&parent->timestamp,
GS_USB_TIMESTAMP_WORK_DELAY_SEC * HZ);

@@ -533,7 +535,7 @@ static int gs_usb_timestamp_start(struct gs_usb *parent)

static void gs_usb_timestamp_stop(struct gs_usb *parent)
{
- cancel_delayed_work_sync(&parent->timestamp);
+ disable_delayed_work_sync(&parent->timestamp);
}

static void gs_update_state(struct gs_can *dev, struct can_frame *cf)

--
2.53.0