From c8c4c084be4033a28dbebfc8603aedce24023e1e Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 3 Jul 2006 00:25:14 -0700 Subject: [PATCH] --- yaml --- r: 31827 b: refs/heads/master c: d378834840907326ac9d448056d957d13cc3718f h: refs/heads/master i: 31825: 9515066f6edd15c1527ee5756d4dcdf22e23fa33 31823: b86668ece16df4bdc2342c5c93257c97454aa7c4 v: v3 --- [refs] | 2 +- trunk/drivers/ieee1394/hosts.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0b638db62d13..c7db2edc56c3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c63661848581a9842dfc72d9a400285dd284fc47 +refs/heads/master: d378834840907326ac9d448056d957d13cc3718f diff --git a/trunk/drivers/ieee1394/hosts.c b/trunk/drivers/ieee1394/hosts.c index 2c669287f5bd..4feead4a35c5 100644 --- a/trunk/drivers/ieee1394/hosts.c +++ b/trunk/drivers/ieee1394/hosts.c @@ -107,6 +107,14 @@ static int alloc_hostnum_cb(struct hpsb_host *host, void *__data) */ static DEFINE_MUTEX(host_num_alloc); +/* + * The pending_packet_queue is special in that it's processed + * from hardirq context too (such as hpsb_bus_reset()). Hence + * split the lock class from the usual networking skb-head + * lock class by using a separate key for it: + */ +static struct lock_class_key pending_packet_queue_key; + struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra, struct device *dev) { @@ -128,6 +136,8 @@ struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra, h->driver = drv; skb_queue_head_init(&h->pending_packet_queue); + lockdep_set_class(&h->pending_packet_queue.lock, + &pending_packet_queue_key); INIT_LIST_HEAD(&h->addr_space); for (i = 2; i < 16; i++)