[PATCH 0/5] firewire: core/ohci: defer cancellation callbacks to workqueue
From: Takashi Sakamoto
Date: Mon Oct 05 2026 - 07:25:57 EST
Hi,
The current implementation invokes both packet and transaction callbacks
from a workqueue when they complete normally[1][2]. In contrast, the
cancellation paths invoke the callbacks synchronously while cancelling
them.
Although the cancellation paths are guaranteed to run in process context,
invoking the callbacks synchronously is undesirable because it makes
callback execution depends on the context in which cancellation is
executed.
This series defers the callbacks to a workqueue when cancelling the
packets and transactions, so that callbacks are invoked from a workqueue
in both normal completion and cancellation paths.
This also allows local AT packets to be cancelled. Local packets currently
use a separate path and cannot be cancelled once queued. Make them use
the same cancellation mechanism as remote packets.
[1] [PATCH 0/5] firewire: ohci: invoke all AT packet callbacks from a workqueue
https://lore.kernel.org/lkml/20260919115017.859169-1-o-takashi@xxxxxxxxxxxxx/
[2] [PATCH 0/3] firewire: core: invoke transaction callbacks in process context
https://lore.kernel.org/lkml/20260921031931.287429-1-o-takashi@xxxxxxxxxxxxx/
Takashi Sakamoto (5):
firewire: core: expand close_transaction() into its callers and remove
it
firewire: ohci: schedule callback on workqueue when cancelling AT
request packet
firewire: ohci: allow AT local packet cancellation
firewire: core: schedule callback when cancelling pending transactions
firewire: core: fulfill kerneldoc for fw_cancel_transaction()
drivers/firewire/core-transaction.c | 91 ++++++++++++++---------------
drivers/firewire/ohci.c | 57 +++++++++++++-----
2 files changed, 88 insertions(+), 60 deletions(-)
base-commit: a6e7c3836b81235df08814bd409f7a23efcfb34d
--
2.53.0