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> |
||
|---|---|---|
| .. | ||
| bdc.h | ||
| bdc_cmd.c | ||
| bdc_cmd.h | ||
| bdc_core.c | ||
| bdc_dbg.c | ||
| bdc_dbg.h | ||
| bdc_ep.c | ||
| bdc_ep.h | ||
| bdc_pci.c | ||
| bdc_udc.c | ||
| Kconfig | ||
| Makefile | ||