diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2014-09-09 09:16:05 -0400 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2014-09-19 11:56:13 -0400 |
commit | a36ed466870ef65755492a69886a38362d33d90e (patch) | |
tree | 5b6577ba193568548a167df86946b14248af6b18 /drivers/gpu/drm/exynos/exynos_drm_ipp.c | |
parent | 53c5558d95f544864a09372a8ffeffac55e60b7c (diff) |
drm/exynos/ipp: traverse ipp drivers list safely
On ipp subsystem removal list of ipp drivers is traversed
and their members are deleted. To do it properly safe version
of list_for_each* should be used.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_ipp.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_ipp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c index 4f36a9d91926..00d74b18f7cb 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c | |||
@@ -1605,11 +1605,11 @@ err: | |||
1605 | 1605 | ||
1606 | static void ipp_subdrv_remove(struct drm_device *drm_dev, struct device *dev) | 1606 | static void ipp_subdrv_remove(struct drm_device *drm_dev, struct device *dev) |
1607 | { | 1607 | { |
1608 | struct exynos_drm_ippdrv *ippdrv; | 1608 | struct exynos_drm_ippdrv *ippdrv, *t; |
1609 | struct ipp_context *ctx = get_ipp_context(dev); | 1609 | struct ipp_context *ctx = get_ipp_context(dev); |
1610 | 1610 | ||
1611 | /* get ipp driver entry */ | 1611 | /* get ipp driver entry */ |
1612 | list_for_each_entry(ippdrv, &exynos_drm_ippdrv_list, drv_list) { | 1612 | list_for_each_entry_safe(ippdrv, t, &exynos_drm_ippdrv_list, drv_list) { |
1613 | if (is_drm_iommu_supported(drm_dev)) | 1613 | if (is_drm_iommu_supported(drm_dev)) |
1614 | drm_iommu_detach_device(drm_dev, ippdrv->dev); | 1614 | drm_iommu_detach_device(drm_dev, ippdrv->dev); |
1615 | 1615 | ||