diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-12-10 00:20:38 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-12-10 12:45:34 +0100 |
commit | 1d1dc5e83f3299c108a4e44d58cc4bfef48c876a (patch) | |
tree | 4acec6d605d2c04294afa8d5a7699430c34e8449 /drivers/firewire/fw-transaction.h | |
parent | ieee1394: node manager causes up to ~3.25s delay in freezing tasks (diff) | |
download | linux-1d1dc5e83f3299c108a4e44d58cc4bfef48c876a.tar.xz linux-1d1dc5e83f3299c108a4e44d58cc4bfef48c876a.zip |
firewire: fw-ohci: fix IOMMU resource exhaustion
There is a DMA map/ unmap imbalance whenever a block write request
packet is sent and then dequeued with ohci_cancel_packet. The latter
may happen frequently if the AR resp tasklet is executed before the AT
req tasklet for the same transaction.
Add the missing dma_unmap_single. This fixes
https://bugzilla.redhat.com/show_bug.cgi?id=475156
Reported-by: Emmanuel Kowalski
Tested-by: Emmanuel Kowalski
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to '')
-rw-r--r-- | drivers/firewire/fw-transaction.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h index aed7dbb17cda..839466f0a795 100644 --- a/drivers/firewire/fw-transaction.h +++ b/drivers/firewire/fw-transaction.h @@ -27,6 +27,7 @@ #include <linux/list.h> #include <linux/spinlock_types.h> #include <linux/timer.h> +#include <linux/types.h> #include <linux/workqueue.h> #define TCODE_IS_READ_REQUEST(tcode) (((tcode) & ~1) == 4) @@ -153,6 +154,7 @@ struct fw_packet { size_t header_length; void *payload; size_t payload_length; + dma_addr_t payload_bus; u32 timestamp; /* |