diff options
author | Inki Dae <inki.dae@samsung.com> | 2016-01-05 13:50:31 +0300 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2016-01-12 18:16:39 +0300 |
commit | c74d8eb5649386c2cfcd65cc960fd283ba876877 (patch) | |
tree | e3cb218110775fb98aca324aa630c2cc91c72951 /drivers/gpu/drm/exynos/exynos_drm_crtc.h | |
parent | d619894cf5c6a74a2e53a4701938dd4dd6736c60 (diff) | |
download | linux-c74d8eb5649386c2cfcd65cc960fd283ba876877.tar.xz |
drm/exynos: fix kernel panic issue at drm releasing
This patch fixes a kernel panic issue which happened
when drm driver is closed while modetest.
This issue could be reproduced easily by launching modetest
with page flip repeatedly.
The reason is that invalid drm_file object could be accessed by
send_vblank_event function when finishing page flip if the drm_file
object was removed by drm_release and there was a pended page
flip event which was already committed to hardware.
So this patch makes the pended page flip event to be cancelled by
preclose callback which is called at front of drm_release function.
Changelog v2:
- free vblank event objects belonging to the request process,
increment event space and decrease pending_update when cancelling
the event
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_crtc.h')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_crtc.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.h b/drivers/gpu/drm/exynos/exynos_drm_crtc.h index 6a581a8af465..cfdcf3e4eb1b 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.h +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.h @@ -40,4 +40,8 @@ int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev, */ void exynos_drm_crtc_te_handler(struct drm_crtc *crtc); +/* This function cancels a page flip request. */ +void exynos_drm_crtc_cancel_page_flip(struct drm_crtc *crtc, + struct drm_file *file); + #endif |