[bug report] drm/exynos/iommu: merge IOMMU and DMA code

Dan Carpenter dan.carpenter at linaro.org
Thu Oct 12 09:44:46 UTC 2023


Hello Andrzej Hajda,

The patch 67fbf3a3ef84: "drm/exynos/iommu: merge IOMMU and DMA code"
from Oct 12, 2018 (linux-next), leads to the following Smatch static
checker warning:

	drivers/gpu/drm/exynos/exynos_drm_dma.c:120 exynos_drm_register_dma()
	warn: 'mapping' isn't an ERR_PTR

drivers/gpu/drm/exynos/exynos_drm_dma.c
    95 int exynos_drm_register_dma(struct drm_device *drm, struct device *dev,
    96                             void **dma_priv)
    97 {
    98         struct exynos_drm_private *priv = drm->dev_private;
    99 
    100         if (!priv->dma_dev) {
    101                 priv->dma_dev = dev;
    102                 DRM_INFO("Exynos DRM: using %s device for DMA mapping operations\n",
    103                          dev_name(dev));
    104         }
    105 
    106         if (!IS_ENABLED(CONFIG_EXYNOS_IOMMU))
    107                 return 0;
    108 
    109         if (!priv->mapping) {
    110                 void *mapping;
    111 
    112                 if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU))
    113                         mapping = arm_iommu_create_mapping(&platform_bus_type,
    114                                 EXYNOS_DEV_ADDR_START, EXYNOS_DEV_ADDR_SIZE);
    115                 else if (IS_ENABLED(CONFIG_IOMMU_DMA))
    116                         mapping = iommu_get_domain_for_dev(priv->dma_dev);

arm_iommu_create_mapping() and iommu_get_domain_for_dev() seem to return
NULL on error.

    117                 else
    118                         mapping = ERR_PTR(-ENODEV);
    119 
--> 120                 if (IS_ERR(mapping))
    121                         return PTR_ERR(mapping);

Smatch uses the pre-compiled code so it says that mapping is always NULL
on this config...

    122                 priv->mapping = mapping;
    123         }
    124 
    125         return drm_iommu_attach_device(drm, dev, dma_priv);
    126 }

regards,
dan carpenter


More information about the dri-devel mailing list