aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-cdev.c
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2009-01-05 14:28:10 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2009-03-24 15:56:46 -0400
commit36a755cfc398fc50abc74055d4478c1b067dac55 (patch)
treefbf8208d5b0314ee9b523a9edaf0b3343e4add39 /drivers/firewire/fw-cdev.c
parent3ba949868a6dc082b24cba5c3bf3f50de7391433 (diff)
firewire: cdev: shut down iso context before freeing the buffer
DMA must be halted before we DMA-unmap and free the DMA buffer. Since we cannot rely on the client to stop the context before it closes the fd, we have to reorder fw_iso_buffer_destroy vs. fw_iso_context_destroy. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/fw-cdev.c')
-rw-r--r--drivers/firewire/fw-cdev.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c
index 3d816a6395cd..b93ad9c0a0d0 100644
--- a/drivers/firewire/fw-cdev.c
+++ b/drivers/firewire/fw-cdev.c
@@ -1386,12 +1386,12 @@ static int fw_device_op_release(struct inode *inode, struct file *file)
1386 list_del(&client->link); 1386 list_del(&client->link);
1387 mutex_unlock(&client->device->client_list_mutex); 1387 mutex_unlock(&client->device->client_list_mutex);
1388 1388
1389 if (client->buffer.pages)
1390 fw_iso_buffer_destroy(&client->buffer, client->device->card);
1391
1392 if (client->iso_context) 1389 if (client->iso_context)
1393 fw_iso_context_destroy(client->iso_context); 1390 fw_iso_context_destroy(client->iso_context);
1394 1391
1392 if (client->buffer.pages)
1393 fw_iso_buffer_destroy(&client->buffer, client->device->card);
1394
1395 /* Freeze client->resource_idr and client->event_list */ 1395 /* Freeze client->resource_idr and client->event_list */
1396 spin_lock_irq(&client->lock); 1396 spin_lock_irq(&client->lock);
1397 client->in_shutdown = true; 1397 client->in_shutdown = true;