android_kernel_oneplus_msm8998/drivers/usb
Chandana Kishori Chiluveru 025b721004 USB: gadget: u_data_ipa: Handle usb requests allocation/free correctly
Currently USB requests are allocated during connect work for starting
endless TX and RX in BAM2BAM over IPA. But these requests are not freed
during disconnect which leads to memory leak and could result in memory
allocation failure in function drivers during next connect. Hence free USB
requests allocated during disconnect to fix memleak issue and also move
allocation of RX/TX usb requests to gbam_connect to avoid crashes due
to NULL pointer dereference.

Also extend spinlock protection to avoid the crashes during connect and
disconnect functions.

Change-Id: I4362fde2928857253d2150e4d9531cada876cd58
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
2016-12-20 15:41:24 +05:30
..
atm
c67x00
chipidea
class
common Merge remote-tracking branch 'msm4.4/tmp-da9a92f' into msm-4.4 2016-10-28 10:48:35 -07:00
core USB: Allow skipping device resume during system resume 2016-11-16 10:58:00 -08:00
dwc2
dwc3 Merge "USB: dwc3: msm: Fail probe if core-clk-rate is not passed from dts" 2016-12-13 12:18:07 -08:00
early
gadget USB: gadget: u_data_ipa: Handle usb requests allocation/free correctly 2016-12-20 15:41:24 +05:30
host Merge "USB: Allow skipping device resume during system resume" 2016-11-18 01:54:53 -08:00
image
isp1760
misc
mon
musb
pd Merge "usb: pd: pdphy: Update Tx Trim setting" 2016-11-28 14:56:45 -08:00
phy usb: phy: qusb2: Add support to vote for regulator L2a 2016-12-08 13:54:27 -08:00
renesas_usbhs
serial
storage
usbip
wusbcore
Kconfig
Makefile
README
usb-skeleton.c

To understand all the Linux-USB framework, you'll use these resources:

    * This source code.  This is necessarily an evolving work, and
      includes kerneldoc that should help you get a current overview.
      ("make pdfdocs", and then look at "usb.pdf" for host side and
      "gadget.pdf" for peripheral side.)  Also, Documentation/usb has
      more information.

    * The USB 2.0 specification (from www.usb.org), with supplements
      such as those for USB OTG and the various device classes.
      The USB specification has a good overview chapter, and USB
      peripherals conform to the widely known "Chapter 9".

    * Chip specifications for USB controllers.  Examples include
      host controllers (on PCs, servers, and more); peripheral
      controllers (in devices with Linux firmware, like printers or
      cell phones); and hard-wired peripherals like Ethernet adapters.

    * Specifications for other protocols implemented by USB peripheral
      functions.  Some are vendor-specific; others are vendor-neutral
      but just standardized outside of the www.usb.org team.

Here is a list of what each subdirectory here is, and what is contained in
them.

core/		- This is for the core USB host code, including the
		  usbfs files and the hub class driver ("hub_wq").

host/		- This is for USB host controller drivers.  This
		  includes UHCI, OHCI, EHCI, and others that might
		  be used with more specialized "embedded" systems.

gadget/		- This is for USB peripheral controller drivers and
		  the various gadget drivers which talk to them.


Individual USB driver directories.  A new driver should be added to the
first subdirectory in the list below that it fits into.

image/		- This is for still image drivers, like scanners or
		  digital cameras.
../input/	- This is for any driver that uses the input subsystem,
		  like keyboard, mice, touchscreens, tablets, etc.
../media/	- This is for multimedia drivers, like video cameras,
		  radios, and any other drivers that talk to the v4l
		  subsystem.
../net/		- This is for network drivers.
serial/		- This is for USB to serial drivers.
storage/	- This is for USB mass-storage drivers.
class/		- This is for all USB device drivers that do not fit
		  into any of the above categories, and work for a range
		  of USB Class specified devices. 
misc/		- This is for all USB device drivers that do not fit
		  into any of the above categories.