2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-23 12:43:55 +08:00
linux-next/drivers/usb/gadget
Andrzej Pietrasiewicz 5a68e9b57b usb: gadget: configfs: keep a function if it is not successfully added
If usb_add_function() fails then the currently processed function
is already not in the list in struct config_usb_cfg, and neither is it
in the list in struct usb_configuration. At the err_purge_funcs label the
purge_config_funcs() is called, which iterates over all configurations,
and in each configuration it iterates over all _successfully_ added
functions, and moves them back from the list in struct usb_configuration
to the list in struct config_usb_cfg. BUT the function which has just
failed adding and caused the unwind process is not taken care of and
is effectively lost.

This patch modifies the configfs_composite_bind() function so that if
the usb_add_function() fails, then the currently processed function
is returned to the list in struct config_usb_cfg.

It would be tempting to delay the list_del() in question after
usb_add_function() invocation, but a struct list_head (&f->list) cannot be
stored in more than one list at the same time, so the list_del() must
be called before usb_add_function(). Hence, the solution is to list_add()
after usb_add_function() in case of error.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-08-27 14:06:08 -05:00
..
acm_ms.c usb: gadget: push tty port allocation from gadget into f_acm 2013-04-03 14:43:31 +03:00
amd5536udc.c usb: gadget: amd5536udc: unconditionally use GFP_ATOMIC in udc_queue() 2013-08-09 16:33:31 +03:00
amd5536udc.h usb: gadget: amd5536udc: remove unused structure member 2013-03-18 11:16:56 +02:00
at91_udc.c usb: gadget: at91_udc: add usb_clk for transition to common clk framework 2013-08-02 15:17:03 +03:00
at91_udc.h usb: gadget: at91_udc: add usb_clk for transition to common clk framework 2013-08-02 15:17:03 +03:00
atmel_usba_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
atmel_usba_udc.h USB: gadget: atmel_usba: add DT support 2013-05-24 07:14:45 +08:00
audio.c
bcm63xx_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
cdc2.c usb: gadget: cdc2: convert to new interface of f_ecm 2013-06-10 17:26:56 +03:00
composite.c usb: gadget: the start of the configfs interface 2013-04-03 14:43:32 +03:00
config.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
configfs.c usb: gadget: configfs: keep a function if it is not successfully added 2013-08-27 14:06:08 -05:00
dbgp.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
dummy_hcd.c usb: gadget: dummy_hcd: fix error return code in init() 2013-05-15 17:25:31 +03:00
epautoconf.c
ether.c usb: gadget: ether: put_usb_function on unbind 2013-07-25 20:35:23 +03:00
f_acm.c usb: gadget: the start of the configfs interface 2013-04-03 14:43:32 +03:00
f_ecm.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_eem.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_fs.c gadgetfs: don't bother with fops->owner 2013-04-09 14:13:03 -04:00
f_hid.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_loopback.c usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
f_mass_storage.c usb: gadget: f_mass_storage: use NULL instead of 0 2013-08-09 16:33:34 +03:00
f_midi.c usb: gadget: always update HS/SS descriptors and create a copy of them 2012-10-31 15:09:44 +02:00
f_ncm.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_obex.c usb: gadget: f_obex: remove compatibility layer 2013-06-10 17:29:08 +03:00
f_phonet.c usb: gadget: f_phonet: remove unused preprocessor conditional 2013-07-29 14:15:23 +03:00
f_rndis.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_serial.c usb: gadget: f_serial: add configfs support 2013-04-03 14:43:35 +03:00
f_sourcesink.c usb: gadget: f_sourcesink.c: correct a copy-paste misnomer 2013-04-23 14:12:02 +03:00
f_subset.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_uac1.c usb: gadget: f_uac1: Staticize local functions 2013-08-09 16:34:19 +03:00
f_uac2.c USB: gadget: f_uac2: Fix broken prm to uac2 mapping 2013-06-10 17:10:23 +03:00
f_uvc.c Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2013-07-13 12:09:57 -07:00
f_uvc.h usb: gadget: uvc: Fix coding style issues introduced by SS support 2013-03-18 11:18:18 +02:00
fotg210-udc.c usb: gadget: fotg210-udc: remove __init and __exit 2013-07-15 12:59:17 +03:00
fotg210.h usb: gadget: add Faraday fotg210_udc driver 2013-06-10 17:58:11 +03:00
fsl_mxc_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
fsl_qe_udc.c usb: gadget: use platform_{get,set}_drvdata() 2013-05-28 20:16:56 +03:00
fsl_qe_udc.h
fsl_udc_core.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
fsl_usb2_udc.h usb: gadget: fsl_mxc_udc: replace MX35_IO_ADDRESS to ioremap 2013-01-18 14:08:21 +02:00
functions.c usb: gadget: add a forward pointer from usb_function to its "instance" 2013-01-21 20:52:46 +02:00
fusb300_udc.c usb: gadget: fusb300_udc: Staticize fusb300_rdcxf() 2013-08-02 11:19:52 +03:00
fusb300_udc.h usb: gadget: fusb300_udc: add FUSB300_EPSET0_STL_CLR for clearing EP0 stall 2013-04-02 16:57:24 +03:00
g_ffs.c usb: gadget: f_rndis: convert to new function interface with backward compatibility 2013-06-10 17:58:08 +03:00
g_zero.h usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
gadget_chips.h
gmidi.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
goku_udc.c usb: gadget: goku_udc: use NULL instead of 0 2013-08-02 11:19:51 +03:00
goku_udc.h usb: gadget: goku_udc: let udc-core manage gadget->dev 2013-03-18 11:16:45 +02:00
hid.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
inode.c aio: use cancellation list lazily 2013-05-07 18:38:29 -07:00
Kconfig usb:gadget Fix comment for pointer to configfs 2013-08-19 17:02:11 -07:00
lpc32xx_udc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
m66592-udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
m66592-udc.h usb: gadget: m66592-udc: convert to udc_start/udc_stop 2013-01-24 21:11:29 +02:00
Makefile usb: gadget: remove imx_udc 2013-07-29 13:53:25 +03:00
mass_storage.c
multi.c usb: gadget: multi: fix error return code in cdc_do_config() 2013-07-29 14:15:18 +03:00
mv_u3d_core.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
mv_u3d.h
mv_udc_core.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
mv_udc.h usb: gadget: mv_udc_core: remove unused clock 2013-04-02 11:42:45 +03:00
ncm.c usb: gadget: ncm: convert to new function interface 2013-06-10 17:12:52 +03:00
ndis.h
net2272.c usb: patches for v3.10 merge window 2013-04-05 15:18:00 -07:00
net2272.h
net2280.c usb: patches for v3.10 merge window 2013-04-05 15:18:00 -07:00
net2280.h
nokia.c usb: gadget: nokia: convert to new interface of f_ecm 2013-06-10 17:32:23 +03:00
omap_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
omap_udc.h
pch_udc.c usb: gadget: pch_udc: fix sparse warnings 2013-03-27 13:18:59 +02:00
printer.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
pxa25x_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
pxa25x_udc.h usb: gadget: pxa25x_udc: convert to udc_start/udc_stop 2013-01-24 21:11:31 +02:00
pxa27x_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
pxa27x_udc.h usb: gadget: pxa27x_udc: convert to udc_start/udc_stop 2013-01-24 21:11:31 +02:00
r8a66597-udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
r8a66597-udc.h
rndis.c usb: gadget: rndis: Staticize rndis_init()/rndis_exit() 2013-08-09 16:33:36 +03:00
rndis.h usb: gadget: rndis: init & exit rndis at module load/unload 2013-06-10 17:58:09 +03:00
s3c2410_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
s3c2410_udc.h usb: gadget: s3c2410: convert to udc_start/udc_stop 2013-01-24 21:11:32 +02:00
s3c-hsotg.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
s3c-hsotg.h
s3c-hsudc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
serial.c usb: gadget: serial: convert to new interface of f_obex 2013-04-03 14:43:36 +03:00
storage_common.c USB: gadget: fix up comment 2013-07-23 16:35:16 -07:00
tcm_usb_gadget.c target: make queue_tm_rsp() return void 2013-07-07 18:36:53 -07:00
tcm_usb_gadget.h
u_ecm.h usb: gadget: f_ecm: add configfs support 2013-06-10 17:27:54 +03:00
u_eem.h usb: gadget: f_eem: add configfs support 2013-06-10 17:58:00 +03:00
u_ether_configfs.h usb: gadget: add helpers for configfs support for USB Ethernet 2013-06-10 17:15:43 +03:00
u_ether.c usb: gadget: u_ether: allow getting binary-form host address 2013-06-10 17:57:45 +03:00
u_ether.h usb: gadget: f_eem: remove compatibility layer 2013-06-10 17:57:47 +03:00
u_gether.h usb: gadget: f_subset: add configfs support 2013-06-10 17:58:08 +03:00
u_ncm.h usb: gadget: f_ncm: add configfs support 2013-06-10 17:15:02 +03:00
u_phonet.h usb: gadget: f_phonet: remove compatibility layer 2013-06-10 17:31:55 +03:00
u_rndis.h usb: gadget: f_rndis: add configfs support 2013-06-10 17:58:10 +03:00
u_serial.c usb: gadget: u_serial: fix typo which cause build warning 2013-03-14 12:47:53 +02:00
u_serial.h usb: gadget: nokia: use function framework for ACM 2013-04-03 14:43:20 +03:00
u_uac1.c usb: gadget: u_uac1: add __user annotation 2013-08-09 16:34:13 +03:00
u_uac1.h
udc-core.c usb: patches for v3.12 merge window 2013-08-13 15:28:01 -07:00
usbstring.c
uvc_queue.c usb: gadget: uvc: Fix error handling in uvc_queue_buffer() 2013-08-09 17:40:54 +03:00
uvc_queue.h usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework 2013-04-02 11:42:48 +03:00
uvc_v4l2.c usb: gadget/uvc: Add support for 'get_unmapped_area' for MMUless architectures 2013-04-02 11:42:49 +03:00
uvc_video.c usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework 2013-04-02 11:42:48 +03:00
uvc.h [media] f_uvc: add v4l2_device and replace parent with v4l2_dev 2013-06-21 11:04:47 -03:00
webcam.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
zero.c usb: gadget: zero: fix error return code in zero_bind() 2013-05-15 17:15:57 +03:00