summaryrefslogtreecommitdiff
path: root/drivers/firewire/core-topology.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2022-05-11 12:37:19 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2022-05-11 12:37:19 -0300
commit467cd948f8a92086441dd9b9859885132f1adc35 (patch)
treedf940b0e885f7c670ecf80249aeb760b2d09a663 /drivers/firewire/core-topology.c
parentcad10ce36671c99dde850de7bd4ca0d8df66c47f (diff)
parentfeb9c5e19e913b53cb536a7aa7c9f20107bb51ec (diff)
downloadlinux-467cd948f8a92086441dd9b9859885132f1adc35.tar.gz
linux-467cd948f8a92086441dd9b9859885132f1adc35.tar.bz2
linux-467cd948f8a92086441dd9b9859885132f1adc35.zip
Merge remote-tracking branch 'torvalds/master' into perf/core
Get fixes sent via perf/urgent, etc. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'drivers/firewire/core-topology.c')
-rw-r--r--drivers/firewire/core-topology.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topology.c
index b63d55f5ebd3..f40c81534381 100644
--- a/drivers/firewire/core-topology.c
+++ b/drivers/firewire/core-topology.c
@@ -375,16 +375,13 @@ static void report_found_node(struct fw_card *card,
card->bm_retries = 0;
}
+/* Must be called with card->lock held */
void fw_destroy_nodes(struct fw_card *card)
{
- unsigned long flags;
-
- spin_lock_irqsave(&card->lock, flags);
card->color++;
if (card->local_node != NULL)
for_each_fw_node(card, card->local_node, report_lost_node);
card->local_node = NULL;
- spin_unlock_irqrestore(&card->lock, flags);
}
static void move_tree(struct fw_node *node0, struct fw_node *node1, int port)
@@ -510,6 +507,8 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation,
struct fw_node *local_node;
unsigned long flags;
+ spin_lock_irqsave(&card->lock, flags);
+
/*
* If the selfID buffer is not the immediate successor of the
* previously processed one, we cannot reliably compare the
@@ -521,8 +520,6 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation,
card->bm_retries = 0;
}
- spin_lock_irqsave(&card->lock, flags);
-
card->broadcast_channel_allocated = card->broadcast_channel_auto_allocated;
card->node_id = node_id;
/*