usb: gadget: udc: Potential Oops in error handling code
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 15 Jun 2020 11:27:19 +0000 (14:27 +0300)
committerFelipe Balbi <balbi@kernel.org>
Wed, 24 Jun 2020 06:45:58 +0000 (09:45 +0300)
If this is in "transceiver" mode the the ->qwork isn't required and is
a NULL pointer.  This can lead to a NULL dereference when we call
destroy_workqueue(udc->qwork).

Fixes: 3517c31a8ece ("usb: gadget: mv_udc: use devm_xxx for probe")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/gadget/udc/mv_udc_core.c

index cafde05..80a1b52 100644 (file)
@@ -2313,7 +2313,8 @@ static int mv_udc_probe(struct platform_device *pdev)
        return 0;
 
 err_create_workqueue:
-       destroy_workqueue(udc->qwork);
+       if (udc->qwork)
+               destroy_workqueue(udc->qwork);
 err_destroy_dma:
        dma_pool_destroy(udc->dtd_pool);
 err_free_dma: