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)
committerSasha Levin <sashal@kernel.org>
Tue, 30 Jun 2020 00:08:02 +0000 (20:08 -0400)
[ Upstream commit e55f3c37cb8d31c7e301f46396b2ac6a19eb3a7c ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/gadget/udc/mv_udc_core.c

index 81b6229c780542e1a4e36888fbad329cb742b498..4f480059f851c18de76277dc165e8e68be6c7461 100644 (file)
@@ -2322,7 +2322,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: