usb: gadget: bdc_udc: fix race condition in bdc_udc_exit()
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Fri, 26 Feb 2016 22:33:14 +0000 (01:33 +0300)
committerFelipe Balbi <balbi@kernel.org>
Fri, 4 Mar 2016 13:14:47 +0000 (15:14 +0200)
commitcff5638ef7852196879f9687e70d49ea291bbb33
treec5f7866cbd378848b28157ff007e37972f89db7f
parentead22caf8507c0533aab6b89e26776414b477b6f
usb: gadget: bdc_udc: fix race condition in bdc_udc_exit()

bdc_ep_disable() expects to be called with bdc->lock held.
The assumption is met in all the cases except for call from bdc_udc_exit(),
that is called from bdc_remove(). As a result a race can happen or unheld
bdc->lock can be unlocked in bdc_req_complete().

The patch proposes to acquire-release bdc->lock around bdc_ep_disable()
in bdc_udc_exit().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/gadget/udc/bdc/bdc_udc.c