linux/drivers/usb/core
Pete Zaitcev 9f6a93f7bb usb: free DMA mappings if enqueue fails
This patch releases DMA resources if enqueue fails in the HCD.

Linux had this bug ever since we converted from virt_to_bus for 2.4.
It is difficult to hit. A user would need a significant memory pressure
or some other unusual condition.

It was reported to me by IBM. They ran a management application for
RSA II adapters which sent Bulk requests to an Interrupt endpoint.
Submissions got rejected by HCD due to an invalid interval value
and the swiotlb pool became depleted in the matter of hours.

We fixed the invalid interval issue in devio.c separately, but this
seems to be a bug worth fixing as well.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-07-12 16:34:31 -07:00
..
Kconfig USB: add power/persist device attribute 2007-07-12 16:34:30 -07:00
Makefile USB: add a blacklist for devices that can't handle some things we throw at them. 2007-02-23 15:03:46 -08:00
buffer.c USB: a bit more coding style cleanup 2007-02-07 15:44:40 -08:00
config.c USB: Handle bogus low-speed Bulk endpoints 2007-07-12 16:34:31 -07:00
devices.c USB: remove use of the bus rwsem, as it doesn't really protect anything. 2007-04-27 10:57:30 -07:00
devio.c usbfs micro optimitation 2007-04-27 13:28:42 -07:00
driver.c USB: add reset_resume method 2007-07-12 16:34:30 -07:00
endpoint.c USB: In init_endpoint_class, use PTR_ERR to obtain an errno value, not IS_ERR 2007-02-16 15:32:17 -08:00
file.c USB: prevent char device open/deregister race 2007-07-12 16:29:48 -07:00
generic.c USB: unify reset_resume and normal resume 2007-07-12 16:34:30 -07:00
hcd-pci.c USB: remove references to dev.power.power_state 2007-07-12 16:29:46 -07:00
hcd.c usb: free DMA mappings if enqueue fails 2007-07-12 16:34:31 -07:00
hcd.h USB: separate root and non-root suspend/resume 2007-07-12 16:34:29 -07:00
hub.c USB: add power/persist device attribute 2007-07-12 16:34:30 -07:00
hub.h USB: Move private hub declarations out of public header file 2006-12-01 14:23:30 -08:00
inode.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
message.c USB: set the correct Interrupt interval in usb_bulk_msg 2007-05-22 23:45:49 -07:00
notify.c
otg_whitelist.h USB: Fix apparent typo CONFIG_USB_CDCETHER. 2007-02-16 15:32:18 -08:00
quirks.c USB: add RESET_RESUME device quirk 2007-07-12 16:29:47 -07:00
sysfs.c USB: add power/persist device attribute 2007-07-12 16:34:30 -07:00
urb.c USB: introduce usb_anchor 2007-07-12 16:29:51 -07:00
usb.c USB: replace flush_workqueue with cancel_sync_work 2007-05-29 13:39:07 -07:00
usb.h USB: unify reset_resume and normal resume 2007-07-12 16:34:30 -07:00