diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-11-26 01:34:25 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-11-29 17:07:56 +0100 |
commit | e47c1feb17e61ef4e2f245c0af0c5a8e2a7798b2 (patch) | |
tree | 12e24df6acd00564cb01da470c19c759698da0a9 /drivers/ieee1394/hosts.h | |
parent | 031bb27c4bf77c2f60b3f3dea8cce63ef0d1fba9 (diff) |
ieee1394: fix list corruption (reported at module removal)
If there is more than one FireWire controller present, dummy_zero_addr
and dummy_max_addr were added multiple times to different lists, thus
corrupting the lists. Fix this by allocating them dynamically per host
instead of just once globally.
(Perhaps a better address space allocation algorithm could rid us of the
two dummy address spaces.)
Fixes http://bugzilla.kernel.org/show_bug.cgi?id=10129 .
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/ieee1394/hosts.h')
-rw-r--r-- | drivers/ieee1394/hosts.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ieee1394/hosts.h b/drivers/ieee1394/hosts.h index e4e8aeb4d77..dd229950acc 100644 --- a/drivers/ieee1394/hosts.h +++ b/drivers/ieee1394/hosts.h @@ -13,6 +13,7 @@ struct module; #include "ieee1394_types.h" #include "csr.h" +#include "highlevel.h" struct hpsb_packet; struct hpsb_iso; @@ -72,6 +73,9 @@ struct hpsb_host { struct { DECLARE_BITMAP(map, 64); } tl_pool[ALL_NODES]; struct csr_control csr; + + struct hpsb_address_serve dummy_zero_addr; + struct hpsb_address_serve dummy_max_addr; }; enum devctl_cmd { |