[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