summaryrefslogtreecommitdiff
path: root/drivers/firewire/core-card.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2022-05-23 07:48:16 +0200
committerTakashi Iwai <tiwai@suse.de>2022-05-23 07:48:27 +0200
commit1212fa1b482ea09c19aed29001465799e85ea6c3 (patch)
treeca70b299e420fbbfab8cb9780584f66b0652f8a8 /drivers/firewire/core-card.c
parent03a8b0df757f1beb21ba1626e23ca7412e48b525 (diff)
parent7b0efea4baf02f5e2f89e5f9b75ef891571b45f1 (diff)
Merge branch 'for-linus' into for-next
Merge for 5.18-rc1 Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'drivers/firewire/core-card.c')
-rw-r--r--drivers/firewire/core-card.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c
index cd09de61bc4f..6ac5ff20a2fe 100644
--- a/drivers/firewire/core-card.c
+++ b/drivers/firewire/core-card.c
@@ -679,6 +679,7 @@ EXPORT_SYMBOL_GPL(fw_card_release);
void fw_core_remove_card(struct fw_card *card)
{
struct fw_card_driver dummy_driver = dummy_driver_template;
+ unsigned long flags;
card->driver->update_phy_reg(card, 4,
PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
@@ -693,7 +694,9 @@ void fw_core_remove_card(struct fw_card *card)
dummy_driver.stop_iso = card->driver->stop_iso;
card->driver = &dummy_driver;
+ spin_lock_irqsave(&card->lock, flags);
fw_destroy_nodes(card);
+ spin_unlock_irqrestore(&card->lock, flags);
/* Wait for all users, especially device workqueue jobs, to finish. */
fw_card_put(card);