mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
3fb1f62f80
Move drm_fb_helper_unprepare() from drm_fb_helper_fini() into the
calling fbdev implementation. Avoids a possible stale mutex with
generic fbdev code.
As indicated by its name, drm_fb_helper_prepare() prepares struct
drm_fb_helper before setting up the fbdev support with a call to
drm_fb_helper_init(). In legacy fbdev emulation, this happens next
to each other. If successful, drm_fb_helper_fini() later tear down
the fbdev device and also unprepare via drm_fb_helper_unprepare().
Generic fbdev emulation prepares struct drm_fb_helper immediately
after allocating the instance. It only calls drm_fb_helper_init()
as part of processing a hotplug event. If the hotplug-handling fails,
it runs drm_fb_helper_fini(). This unprepares the fb-helper instance
and the next hotplug event runs on stale data.
Solve this by moving drm_fb_helper_unprepare() from drm_fb_helper_fini()
into the fbdev implementations. Call it right before freeing the
fb-helper instance.
Fixes:
|
||
---|---|---|
.. | ||
armada_510.c | ||
armada_crtc.c | ||
armada_crtc.h | ||
armada_debugfs.c | ||
armada_drm.h | ||
armada_drv.c | ||
armada_fb.c | ||
armada_fb.h | ||
armada_fbdev.c | ||
armada_gem.c | ||
armada_gem.h | ||
armada_hw.h | ||
armada_ioctlP.h | ||
armada_overlay.c | ||
armada_plane.c | ||
armada_plane.h | ||
armada_trace.c | ||
armada_trace.h | ||
Kconfig | ||
Makefile |