diff options
| author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2026-05-20 22:08:40 +0900 |
|---|---|---|
| committer | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2026-05-21 18:43:25 +0900 |
| commit | 21e163988c87219b3973efe9ca934b7acf0e4fe8 (patch) | |
| tree | 5aec7dcb914fbaa1e0c4e6df25941a5a5a17a786 /drivers/firewire/core-cdev.c | |
| parent | 9e38ee1c5522b1b6ba62e0766202bcc9979d6ae3 (diff) | |
| download | linux-next-21e163988c87219b3973efe9ca934b7acf0e4fe8.tar.gz linux-next-21e163988c87219b3973efe9ca934b7acf0e4fe8.zip | |
firewire: core: cancel using delayed work for iso_resource_once management
There is no need to use deferrable type of work for iso_resource_once
management because the work is queued to run immediately.
Link: https://lore.kernel.org/r/20260520130840.629934-4-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Diffstat (limited to 'drivers/firewire/core-cdev.c')
| -rw-r--r-- | drivers/firewire/core-cdev.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c index 56c21cabc20c..e49d8a58be09 100644 --- a/drivers/firewire/core-cdev.c +++ b/drivers/firewire/core-cdev.c @@ -150,8 +150,7 @@ struct iso_resource_auto { struct iso_resource_once { struct client *client; - // Schedule work and access todo only with client->lock held. - struct delayed_work work; + struct work_struct work; enum { ISO_RES_ONCE_ALLOC, ISO_RES_ONCE_DEALLOC, @@ -1486,7 +1485,7 @@ static int ioctl_deallocate_iso_resource(struct client *client, static void iso_resource_once_work(struct work_struct *work) { - struct iso_resource_once *r = from_work(r, work, work.work); + struct iso_resource_once *r = from_work(r, work, work); struct client *client = r->client; struct iso_resource_event *e = r->event; int generation, channel, bandwidth; @@ -1505,7 +1504,7 @@ static void iso_resource_once_work(struct work_struct *work) queue_event(client, &e->event, &e->iso_resource, sizeof(e->iso_resource), NULL, 0); - cancel_delayed_work(&r->work); + cancel_work(&r->work); kfree(r); client_put(client); @@ -1525,7 +1524,7 @@ static int init_iso_resource_once(struct client *client, if (err < 0) return err; - INIT_DELAYED_WORK(&r->work, iso_resource_once_work); + INIT_WORK(&r->work, iso_resource_once_work); r->client = client; r->todo = todo; @@ -1539,7 +1538,7 @@ static int init_iso_resource_once(struct client *client, // Keep the client until work item finishing. client_get(r->client); - queue_delayed_work(fw_workqueue, &no_free_ptr(r)->work, 0); + queue_work(fw_workqueue, &no_free_ptr(r)->work); request->handle = UNAVAILABLE_HANDLE; |
