diff options
| author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2025-11-12 07:38:34 +0900 |
|---|---|---|
| committer | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2025-11-14 04:30:58 +0900 |
| commit | 036176d9dba74e23e3ef358e171a77b75837fee0 (patch) | |
| tree | 0af96930d3a5404c92009657bddadd01b11e91c1 /drivers/firewire/core-card.c | |
| parent | ae1ef2fbb8c9091e0ea62734a4a232ad9928701b (diff) | |
firewire: core: abort pending transactions at card removal
IEEE 1394 defines the split, concatenated, and unified transaction.
To support the split transaction, core function uses linked list to
maintain the transactions waiting for acknowledge packet. After clearing
sources of hardware interrupts, the acknowledge packet is no longer
handled, therefore it is required to abort the pending transactions.
This commit executes callback with RCODE_CANCELLED for the pending
transactions at card removal.
Link: https://lore.kernel.org/r/20251111223834.311287-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Diffstat (limited to 'drivers/firewire/core-card.c')
| -rw-r--r-- | drivers/firewire/core-card.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c index 65bd9db996c0..9869ea3fd9fc 100644 --- a/drivers/firewire/core-card.c +++ b/drivers/firewire/core-card.c @@ -790,6 +790,7 @@ void fw_core_remove_card(struct fw_card *card) drain_workqueue(card->isoc_wq); drain_workqueue(card->async_wq); card->driver->disable(card); + fw_cancel_pending_transactions(card); scoped_guard(spinlock_irqsave, &card->lock) fw_destroy_nodes(card); |
