firewire: core: fix race with parallel PCI device probe
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 6 Sep 2009 16:50:29 +0000 (18:50 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 12 Sep 2009 12:48:40 +0000 (14:48 +0200)
commitb171e204b32b69e241af994d6e9be559e33535c1
tree0ba90b20dfed4e721a573e2dfe9e4584e8a80737
parent18668ff9a3232d5f942a2f7abc1ad67d2760dcdf
firewire: core: fix race with parallel PCI device probe

The config ROM buffer received from generate_config_rom is a globally
shared static buffer.  Extend the card_mutex protection in fw_add_card
until after the config ROM was copied into the card driver's buffer.
Otherwise, parallelized card driver probes may end up with ROM contents
that were meant for a different card.

firewire-ohci's card->driver->enable hook is safe to be called within
the card_mutex.  Furthermore, it is safe to reorder card_list update
versus card enable, which simplifies the code a little.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-card.c