5cb84067d6
Callers of fill_bus_reset_event() have to take card->lock. Otherwise access to node data may oops if node removal is in progress. A lockless alternative would be - event->local_node_id = card->local_node->node_id; + tmp = fw_node_get(card->local_node); + event->local_node_id = tmp->node_id; + fw_node_put(tmp); and ditto with the other node pointers which fill_bus_reset_event() accesses. But I went the locked route because one of the two callers already holds the lock. As a bonus, we don't need the memory barrier anymore because device->generation and device->node_id are written in a card->lock protected section. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com> |
||
---|---|---|
.. | ||
fw-card.c | ||
fw-cdev.c | ||
fw-device.c | ||
fw-device.h | ||
fw-iso.c | ||
fw-ohci.c | ||
fw-ohci.h | ||
fw-sbp2.c | ||
fw-topology.c | ||
fw-topology.h | ||
fw-transaction.c | ||
fw-transaction.h | ||
Kconfig | ||
Makefile |