diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-12-16 20:34:23 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-12-18 09:13:38 -0800 |
commit | bc7c91468b80aab044dd9dd61c3492cf57dffabb (patch) | |
tree | 2221285ea974838f2a26705ee293da9c3a8bec07 /drivers/firewire/fw-transaction.h | |
parent | 123cd635a810bea55c41f09c09e4d6dc1f493876 (diff) | |
download | lwn-bc7c91468b80aab044dd9dd61c3492cf57dffabb.tar.gz lwn-bc7c91468b80aab044dd9dd61c3492cf57dffabb.zip |
firewire: fw-ohci: fix IOMMU resource exhaustion
commit 1d1dc5e83f3299c108a4e44d58cc4bfef48c876a upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/firewire/fw-transaction.h')
-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 81b15ba91d31..04cc9b00119e 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; /* |