| From 19ee370b12dc5d74abfbc3a3a26ea8cf4929f6ad Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 1 Nov 2023 18:36:51 +0900 |
| Subject: drm/exynos: fix a wrong error checking |
| |
| From: Inki Dae <inki.dae@samsung.com> |
| |
| [ Upstream commit 8d1b7809684c688005706125b804e1f9792d2b1b ] |
| |
| Fix a wrong error checking in exynos_drm_dma.c module. |
| |
| In the exynos_drm_register_dma function, both arm_iommu_create_mapping() |
| and iommu_get_domain_for_dev() functions are expected to return NULL as |
| an error. |
| |
| However, the error checking is performed using the statement |
| if(IS_ERR(mapping)), which doesn't provide a suitable error value. |
| So check if 'mapping' is NULL, and if it is, return -ENODEV. |
| |
| This issue[1] was reported by Dan. |
| |
| Changelog v1: |
| - fix build warning. |
| |
| [1] https://lore.kernel.org/all/33e52277-1349-472b-a55b-ab5c3462bfcf@moroto.mountain/ |
| |
| Reported-by : Dan Carpenter <dan.carpenter@linaro.org> |
| Signed-off-by: Inki Dae <inki.dae@samsung.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/exynos/exynos_drm_dma.c | 8 +++----- |
| 1 file changed, 3 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/exynos/exynos_drm_dma.c b/drivers/gpu/drm/exynos/exynos_drm_dma.c |
| index a971590b8132..e2c7373f20c6 100644 |
| --- a/drivers/gpu/drm/exynos/exynos_drm_dma.c |
| +++ b/drivers/gpu/drm/exynos/exynos_drm_dma.c |
| @@ -107,18 +107,16 @@ int exynos_drm_register_dma(struct drm_device *drm, struct device *dev, |
| return 0; |
| |
| if (!priv->mapping) { |
| - void *mapping; |
| + void *mapping = NULL; |
| |
| if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) |
| mapping = arm_iommu_create_mapping(&platform_bus_type, |
| EXYNOS_DEV_ADDR_START, EXYNOS_DEV_ADDR_SIZE); |
| else if (IS_ENABLED(CONFIG_IOMMU_DMA)) |
| mapping = iommu_get_domain_for_dev(priv->dma_dev); |
| - else |
| - mapping = ERR_PTR(-ENODEV); |
| |
| - if (IS_ERR(mapping)) |
| - return PTR_ERR(mapping); |
| + if (!mapping) |
| + return -ENODEV; |
| priv->mapping = mapping; |
| } |
| |
| -- |
| 2.43.0 |
| |