summaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-device.c
diff options
context:
space:
mode:
authorJay Fenlason <fenlason@redhat.com>2008-10-03 11:19:09 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2009-03-24 20:56:36 +0100
commitcf417e5494582453c033d8cac9e1352e74215435 (patch)
treea1681ef863c8c4219506e16b7982e51dc0718387 /drivers/firewire/fw-device.c
parent1aa292bb1c53500e3ab570b955d03afa97a9404d (diff)
downloadop-kernel-dev-cf417e5494582453c033d8cac9e1352e74215435.zip
op-kernel-dev-cf417e5494582453c033d8cac9e1352e74215435.tar.gz
firewire: add a client_list_lock
This adds a client_list_lock, which only protects the device's client_list, so that future versions of the driver can call code that takes the card->lock while holding the client_list_lock. Adding this lock is much simpler than adding __ versions of all the functions that the future version may need. The one ordering issue is to make sure code never takes the client_list_lock with card->lock held. Since client_list_lock is only used in three places, that isn't hard. Signed-off-by: Jay Fenlason <fenlason@redhat.com> Update fill_bus_reset_event() accordingly. Include linux/spinlock.h. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/fw-device.c')
-rw-r--r--drivers/firewire/fw-device.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/firewire/fw-device.c b/drivers/firewire/fw-device.c
index bf53acb..ffde1be 100644
--- a/drivers/firewire/fw-device.c
+++ b/drivers/firewire/fw-device.c
@@ -29,6 +29,7 @@
#include <linux/string.h>
#include <linux/rwsem.h>
#include <linux/semaphore.h>
+#include <linux/spinlock.h>
#include <asm/system.h>
#include <linux/ctype.h>
#include "fw-transaction.h"
@@ -1004,6 +1005,7 @@ void fw_node_event(struct fw_card *card, struct fw_node *node, int event)
device->node = fw_node_get(node);
device->node_id = node->node_id;
device->generation = card->generation;
+ spin_lock_init(&device->client_list_lock);
INIT_LIST_HEAD(&device->client_list);
/*
OpenPOWER on IntegriCloud