diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2014-09-09 17:16:06 +0400 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2014-09-19 19:56:14 +0400 |
commit | 9f3dd7dbc5a5b6048d7dfccff5e0e9d8b50ff674 (patch) | |
tree | be586ea7b87e322347728094afcded230150fe92 | |
parent | a36ed466870ef65755492a69886a38362d33d90e (diff) | |
download | linux-9f3dd7dbc5a5b6048d7dfccff5e0e9d8b50ff674.tar.xz |
drm/exynos: fix drm driver de-initialization order
Since components have their own cleanup routines calling
drm_mode_config_cleanup before component_unbind_all causes errors
due to double free of KMS objects. The patch fixes it by changing
de-initialization order. Now it is exactly opposite to init order.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 3f6ec9670659..9b00e4ecdb3a 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -136,14 +136,14 @@ static int exynos_drm_unload(struct drm_device *dev) exynos_drm_device_subdrv_remove(dev); exynos_drm_fbdev_fini(dev); - drm_vblank_cleanup(dev); drm_kms_helper_poll_fini(dev); - drm_mode_config_cleanup(dev); + component_unbind_all(dev->dev, dev); + drm_vblank_cleanup(dev); + drm_mode_config_cleanup(dev); drm_release_iommu_mapping(dev); - kfree(dev->dev_private); - component_unbind_all(dev->dev, dev); + kfree(dev->dev_private); dev->dev_private = NULL; return 0; |