OpenCloudOS-Kernel/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
..
Kconfig USB: Fix FSL USB driver on non Open Firmware systems 2010-11-11 06:55:35 -08:00
Makefile usb: makefile cleanup 2010-10-22 10:22:07 -07: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 ARM: 6209/3: at91_udc: Add vbus polarity and polling mode 2010-07-18 20:39:10 +01:00
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 USB: atmel uaba: Adding invert vbus_pin 2010-03-02 14:54:57 -08:00
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 USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
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 USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
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 USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
f_eem.c USB: gadget eth: Fix calculate CRC32 in EEM 2010-06-30 08:16:06 -07:00
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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_phonet.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
f_rndis.c USB: gadget: __init and __exit tags removed 2010-05-20 13:21:43 -07:00
f_serial.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
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 powerpc/qe&cpm: Implement static inline stubs for non-QE/CPM builds 2009-11-11 21:43:20 -06:00
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 USB: gadget: Add i.MX3x support to the fsl_usb2_udc driver 2009-06-15 21:44:47 -07:00
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 USB: gadget: gadget zero uses new suspend/resume hooks 2009-03-24 16:20:45 -07:00
gadget_chips.h USB: gadget: add gadget controller number for s3c-hsotg driver 2010-03-19 07:24:22 -07:00
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 USB: imx_udc: Fix IMX UDC gadget general irq handling 2009-03-24 16:20:29 -07:00
inode.c convert get_sb_single() users 2010-10-29 04:16:28 -04: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 usb: gadget: m66592-udc pio to mmio accessor conversion. 2010-06-02 16:26:13 +09: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 USB: gadget: pxa25x: basic transceiver support 2009-09-23 06:46:23 -07:00
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 USB: pxa27x_udc: use four bits to store endpoint addresses 2010-05-20 13:21:36 -07:00
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
s3c-hsotg.c usb gadget: don't save bind callback in struct usb_gadget_driver 2010-10-22 10:21:25 -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
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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
u_audio.h USB: audio gadget: free alsa devices when unloading 2009-12-23 11:34:20 -08:00
u_ether.c USB: gadget: fix ethernet gadget crash in gether_setup 2010-11-01 09:33:53 -07:00
u_ether.h USB: Remove unsupported usb gadget drivers 2010-03-02 14:54:57 -08:00
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 USB: Gadget: fix UTF conversion in the usbstring library 2009-05-08 19:34:56 -07:00
uvc.h V4L/DVB: uvc: Move constants and structures definitions to linux/usb/video.h 2010-08-02 16:43:15 -03:00
uvc_queue.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc_queue.h V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -03:00
uvc_v4l2.c USB: uvc_v4l2: cleanup test for end of loop 2010-08-23 20:50:14 -07:00
uvc_video.c V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers 2010-07-11 17:45:10 -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