firewire: improve refcounting of fw_card
Take a reference to the card whenever fw_card_bm_work() is scheduled on that card and release it when the work is done. This allows us to remove the cancel_delayed_work_sync() in fw_core_remove_card(). Signed-off-by: Jay Fenlason <fenlason@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (patch update)
This commit is contained in:
committed by
Stefan Richter
parent
2cc489c213
commit
0fa1986f3a
@@ -689,7 +689,7 @@ static void fw_device_init(struct work_struct *work)
|
||||
fw_notify("giving up on config rom for node id %x\n",
|
||||
device->node_id);
|
||||
if (device->node == device->card->root_node)
|
||||
schedule_delayed_work(&device->card->work, 0);
|
||||
fw_schedule_bm_work(device->card, 0);
|
||||
fw_device_release(&device->device);
|
||||
}
|
||||
return;
|
||||
@@ -758,7 +758,7 @@ static void fw_device_init(struct work_struct *work)
|
||||
* pretty harmless.
|
||||
*/
|
||||
if (device->node == device->card->root_node)
|
||||
schedule_delayed_work(&device->card->work, 0);
|
||||
fw_schedule_bm_work(device->card, 0);
|
||||
|
||||
return;
|
||||
|
||||
@@ -892,7 +892,7 @@ static void fw_device_refresh(struct work_struct *work)
|
||||
fw_device_shutdown(work);
|
||||
out:
|
||||
if (node_id == card->root_node->node_id)
|
||||
schedule_delayed_work(&card->work, 0);
|
||||
fw_schedule_bm_work(card, 0);
|
||||
}
|
||||
|
||||
void fw_node_event(struct fw_card *card, struct fw_node *node, int event)
|
||||
|
Reference in New Issue
Block a user