[media] omap3isp: Defer probe when the IOMMU is not available
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 11 Mar 2013 15:02:13 +0000 (12:02 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 12 Jun 2013 21:27:18 +0000 (18:27 -0300)
When the OMAP3 ISP driver is compiled in the kernel the device can be
probed before the corresponding IOMMU is available. Defer the probe in
that case, and fix a crash in the error path.

Reported-by: Javier Martin <javier.martin@vista-silicon.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/omap3isp/isp.c

index 5a04077b362b5986738a76fd6df39043bbf13216..ff5a20afa6916d09e6d6fb75bef9a4668fe73d07 100644 (file)
@@ -2249,6 +2249,7 @@ static int isp_probe(struct platform_device *pdev)
        ret = iommu_attach_device(isp->domain, &pdev->dev);
        if (ret) {
                dev_err(&pdev->dev, "can't attach iommu device: %d\n", ret);
+               ret = -EPROBE_DEFER;
                goto free_domain;
        }
 
@@ -2287,6 +2288,7 @@ detach_dev:
        iommu_detach_device(isp->domain, &pdev->dev);
 free_domain:
        iommu_domain_free(isp->domain);
+       isp->domain = NULL;
 error_isp:
        isp_xclk_cleanup(isp);
        omap3isp_put(isp);