mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
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:
|
||
|---|---|---|
| .. | ||
| dss | ||
| Kconfig | ||
| Makefile | ||
| omap_crtc.c | ||
| omap_crtc.h | ||
| omap_debugfs.c | ||
| omap_dmm_priv.h | ||
| omap_dmm_tiler.c | ||
| omap_dmm_tiler.h | ||
| omap_drv.c | ||
| omap_drv.h | ||
| omap_encoder.c | ||
| omap_encoder.h | ||
| omap_fb.c | ||
| omap_fb.h | ||
| omap_fbdev.c | ||
| omap_fbdev.h | ||
| omap_gem_dmabuf.c | ||
| omap_gem.c | ||
| omap_gem.h | ||
| omap_irq.c | ||
| omap_irq.h | ||
| omap_overlay.c | ||
| omap_overlay.h | ||
| omap_plane.c | ||
| omap_plane.h | ||
| tcm-sita.c | ||
| tcm.h | ||
| TODO | ||