linux/drivers/usb/gadget
Jim Sung 28609d4083 usb: subtle increased memory usage in u_serial
OK, the USB gadget serial driver actually has a couple of problems.  On
gs_open(), it always allocates and queues an additional QUEUE_SIZE (16)
worth of requests, so with a loop like this:

    i=1 ; while echo $i > /dev/ttyGS0 ; do let i++ ; done

eventually we run into OOM (Out of Memory).

Technically, it is not a leak as everything gets freed up when the USB
connection is broken, but not on gs_close().

With a USB device/gadget controller driver that has limited resources
(e.g., Marvell has a this MAX_XDS_FOR_TR_CALLS of 64 for transmit and
receive), so even after 4

    stty -F /dev/ttyGS0

we cannot transmit anymore.  We can still receive (not necessarily
reliably) as now we have 16 * 4 = 64 descriptors/buffers ready, but the
device is otherwise not usable.

Signed-off-by: Jim Sung <jsung@syncadence.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-11-11 07:03:48 -08:00
..
amd5536udc.c USB: gadget: amd5536udc.c: fix error path 2010-10-22 10:22:19 -07:00
amd5536udc.h
at91_udc.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
at91_udc.h
atmel_usba_udc.c USB: atmel_usba_udc: force vbus_pin at -EINVAL when gpio_request failled 2010-10-22 10:21:47 -07:00
atmel_usba_udc.h
audio.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
cdc2.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
ci13xxx_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
ci13xxx_udc.h
composite.c usb gadget: composite: prevent OOPS for non-standard control request 2010-10-22 10:21:37 -07:00
config.c
dbgp.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
dummy_hcd.c usb: gadget: dummy_hcd: Fix error path 2010-10-22 10:22:06 -07:00
epautoconf.c
ether.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
f_acm.c USB: Change acm_iad_descriptor bFunctionProtocol to USB_CDC_ACM_PROTO_AT_V25TER 2010-10-22 10:21:35 -07:00
f_audio.c drivers/usb: Remove unnecessary return's from void functions 2010-08-10 14:25:42 +02:00
f_ecm.c
f_eem.c
f_fs.c convert get_sb_single() users 2010-10-29 04:16:28 -04:00
f_hid.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
f_loopback.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
f_mass_storage.c USB: gadget: storage: reuse definitions from scsi.h header file 2010-10-22 10:22:07 -07:00
f_obex.c
f_phonet.c
f_rndis.c
f_serial.c
f_sourcesink.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
f_subset.c
f_uvc.c V4L/DVB: uvc: Move constants and structures definitions to linux/usb/video.h 2010-08-02 16:43:15 -03:00
f_uvc.h V4L/DVB: uvc: Move constants and structures definitions to linux/usb/video.h 2010-08-02 16:43:15 -03:00
file_storage.c USB: gadget: storage: reuse definitions from scsi.h header file 2010-10-22 10:22:07 -07:00
fsl_mxc_udc.c mxc_udc: add workaround for ENGcm09152 for i.MX35 2010-10-22 10:22:17 -07:00
fsl_qe_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
fsl_qe_udc.h
fsl_udc_core.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
fsl_usb2_udc.h
g_ffs.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
g_zero.h
gadget_chips.h
gmidi.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
goku_udc.c usb: gadget: goku_udc: Fix error path 2010-10-22 10:22:04 -07:00
goku_udc.h usb: gadget: goku_udc: add registered flag bit, fixing build 2010-11-11 06:57:24 -08:00
hid.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
imx_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
imx_udc.h
inode.c convert get_sb_single() users 2010-10-29 04:16:28 -04:00
Kconfig USB: Fix FSL USB driver on non Open Firmware systems 2010-11-11 06:55:35 -08:00
langwell_udc.c usb: langwell_udc: cancel pending requests when controller is suspended. 2010-10-22 10:22:00 -07:00
langwell_udc.h USB: langwell: USB Client driver memory handling 2010-10-22 10:21:19 -07:00
lh7a40x_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
lh7a40x_udc.h
m66592-udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
m66592-udc.h
Makefile usb: makefile cleanup 2010-10-22 10:22:07 -07:00
mass_storage.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
multi.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
ndis.h
net2280.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
net2280.h
nokia.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
omap_udc.c Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-10-25 13:46:56 -07:00
omap_udc.h
printer.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2010-10-22 20:30:48 -07:00
pxa25x_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
pxa25x_udc.h
pxa27x_udc.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
pxa27x_udc.h
r8a66597-udc.c usb: r8a66597-udc: Add processing when USB was removed. 2010-10-22 10:22:18 -07:00
r8a66597-udc.h USB: r8a66597-udc: Initialize uninitialized variable, fix compile warning 2010-10-22 10:21:34 -07:00
rndis.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
rndis.h USB: rndis: section mismatch fix 2010-09-03 17:33:40 -07:00
s3c2410_udc.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
s3c2410_udc.h
s3c-hsotg.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -07:00
serial.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
storage_common.c USB: gadget: storage: reuse definitions from scsi.h header file 2010-10-22 10:22:07 -07:00
u_audio.c
u_audio.h
u_ether.c USB: gadget: fix ethernet gadget crash in gether_setup 2010-11-01 09:33:53 -07:00
u_ether.h
u_phonet.h
u_serial.c usb: subtle increased memory usage in u_serial 2010-11-11 07:03:48 -08:00
u_serial.h
usbstring.c
uvc_queue.c
uvc_queue.h
uvc_v4l2.c USB: uvc_v4l2: cleanup test for end of loop 2010-08-23 20:50:14 -07:00
uvc_video.c
uvc.h V4L/DVB: uvc: Move constants and structures definitions to linux/usb/video.h 2010-08-02 16:43:15 -03:00
webcam.c usb gadget: don't save bind callback in struct usb_configuration 2010-10-22 10:21:26 -07:00
zero.c usb gadget: don't save bind callback in struct usb_composite_driver 2010-10-22 10:21:25 -07:00