git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ieee1394: fix list corruption (reported at module removal)
[safe/jmp/linux-2.6]
/
drivers
/
ieee1394
/
highlevel.c
diff --git
a/drivers/ieee1394/highlevel.c
b/drivers/ieee1394/highlevel.c
index
918ffc4
..
272543a
100644
(file)
--- a/
drivers/ieee1394/highlevel.c
+++ b/
drivers/ieee1394/highlevel.c
@@
-46,10
+46,6
@@
static DEFINE_RWLOCK(hl_irqs_lock);
static DEFINE_RWLOCK(addr_space_lock);
static DEFINE_RWLOCK(addr_space_lock);
-/* addr_space list will have zero and max already included as bounds */
-static struct hpsb_address_ops dummy_ops = { NULL, NULL, NULL, NULL };
-static struct hpsb_address_serve dummy_zero_addr, dummy_max_addr;
-
static struct hl_host_info *hl_get_hostinfo(struct hpsb_highlevel *hl,
struct hpsb_host *host)
static struct hl_host_info *hl_get_hostinfo(struct hpsb_highlevel *hl,
struct hpsb_host *host)
@@
-481,20
+477,23
@@
int hpsb_unregister_addrspace(struct hpsb_highlevel *hl, struct hpsb_host *host,
return retval;
}
return retval;
}
+static struct hpsb_address_ops dummy_ops;
+
+/* dummy address spaces as lower and upper bounds of the host's a.s. list */
static void init_hpsb_highlevel(struct hpsb_host *host)
{
static void init_hpsb_highlevel(struct hpsb_host *host)
{
- INIT_LIST_HEAD(&dummy_zero_addr.host_list);
- INIT_LIST_HEAD(&dummy_zero_addr.hl_list);
- INIT_LIST_HEAD(&dummy_max_addr.host_list);
- INIT_LIST_HEAD(&dummy_max_addr.hl_list);
+ INIT_LIST_HEAD(&
host->
dummy_zero_addr.host_list);
+ INIT_LIST_HEAD(&
host->
dummy_zero_addr.hl_list);
+ INIT_LIST_HEAD(&
host->
dummy_max_addr.host_list);
+ INIT_LIST_HEAD(&
host->
dummy_max_addr.hl_list);
-
dummy_zero_addr.op =
dummy_max_addr.op = &dummy_ops;
+
host->dummy_zero_addr.op = host->
dummy_max_addr.op = &dummy_ops;
-
dummy_zero_addr.start =
dummy_zero_addr.end = 0;
-
dummy_max_addr.start =
dummy_max_addr.end = ((u64) 1) << 48;
+
host->dummy_zero_addr.start = host->
dummy_zero_addr.end = 0;
+
host->dummy_max_addr.start = host->
dummy_max_addr.end = ((u64) 1) << 48;
- list_add_tail(&dummy_zero_addr.host_list, &host->addr_space);
- list_add_tail(&dummy_max_addr.host_list, &host->addr_space);
+ list_add_tail(&
host->
dummy_zero_addr.host_list, &host->addr_space);
+ list_add_tail(&
host->
dummy_max_addr.host_list, &host->addr_space);
}
void highlevel_add_host(struct hpsb_host *host)
}
void highlevel_add_host(struct hpsb_host *host)