linux/drivers/gpu/drm/omapdrm
Sebastian Reichel 3c613a3bdd drm/omap: fix incorrect union usage
The DSI encoder sets dssdev->ops->dsi.set_config, which is stored at the
same offset as dssdev->ops->hdmi.set_hdmi_mode. The code in omap_encoder
only checks if dssdev->ops->hdmi.set_hdmi_mode is NULL. Due to the way
union works, it won't be NULL if dsi.set_config is set. This means
dsi_set_config will be called with config=hdmi_mode=false=NULL parameter
resulting in a NULL dereference. Also the dereference happens while
console is locked, so kernel hangs without any debug output without
"fb.lockless_register_fb=1" parameter.

This restructures the code, so that the HDMI mode is only configured
for HDMI output types.

Fixes: 83910ad3f5 ("drm/omap: Move most omap_dss_driver operations to omap_dss_device_ops")
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Tony Lindgren <tony@atomide.com>
[tomi.valkeinen@ti.com: dropped the safeguard]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181121160916.22017-5-sebastian.reichel@collabora.com
2018-12-03 14:46:30 +02:00
..
displays drm/omap: fix bus_flags for panel-dpi 2018-12-03 14:36:05 +02:00
dss drm/omap: populate DSI platform bus earlier 2018-12-03 14:46:30 +02:00
Kconfig drm/omap: Get rid of DRM_OMAP_NUM_CRTCS config option 2017-04-03 12:36:40 +03:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
omap_connector.c drm/omap: fix use of freed memory 2018-10-02 09:36:56 +03:00
omap_connector.h drm/omap: Determine connector type directly in omap_connector.c 2018-09-03 16:13:29 +03:00
omap_crtc.c drm/omap: Move DISPC runtime PM handling to omapdrm 2018-11-12 11:50:13 +02:00
omap_crtc.h drm/omap: Pass pipe pointer to omap_crtc_init() 2018-09-03 16:13:28 +03:00
omap_debugfs.c drm/omap: gem: Fix mm_list locking 2018-06-28 13:41:05 +03:00
omap_dmm_priv.h drm/omap: partial workaround for DRA7xx DMM errata i878 2018-10-02 09:36:56 +03:00
omap_dmm_tiler.c drm/omap: partial workaround for DRA7xx DMM errata i878 2018-10-02 09:36:56 +03:00
omap_dmm_tiler.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
omap_drv.c drm/omap: Replace drm_dev_unref with drm_dev_put 2018-10-02 09:36:56 +03:00
omap_drv.h drm/omap: Store CRTC lookup by channel table in omap_drm_private 2018-09-03 16:13:28 +03:00
omap_encoder.c drm/omap: fix incorrect union usage 2018-12-03 14:46:30 +02:00
omap_encoder.h drm/omap: Pass both output and display omap_dss_device to encoder init 2018-09-03 16:13:29 +03:00
omap_fb.c drm/omap: Replace drm_gem_object_unreference_unlocked with put function 2018-10-02 09:36:56 +03:00
omap_fb.h drm/omapdrm: Nuke omap_framebuffer_get_next_connector() 2018-05-25 21:21:39 +03:00
omap_fbdev.c drm/omap: Replace drm_gem_object_unreference_unlocked with put function 2018-10-02 09:36:56 +03:00
omap_fbdev.h drm/omap: cleanup fbdev init/free 2018-03-01 09:18:18 +02:00
omap_gem_dmabuf.c drm/omap: Replace drm_gem_object_{un/reference} with put,get functions 2018-10-02 09:36:56 +03:00
omap_gem.c drm/omap: Replace drm_gem_object_unreference_unlocked with put function 2018-10-02 09:36:56 +03:00
omap_gem.h gpu: drm: omapdrm: Adding new typedef vm_fault_t 2018-06-28 13:41:05 +03:00
omap_irq.c drm/omap: Group CRTC, encoder, connector and dssdev in a structure 2018-09-03 16:13:27 +03:00
omap_irq.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
omap_plane.c drm/omap: Use normalized zpos for plane placement 2018-03-28 09:45:45 +03:00
omap_plane.h drm: omapdrm: Deconstruct the omap_drv.h header. 2017-12-19 10:32:00 +02:00
tcm-sita.c drm/omap: silence unititialized variable warning 2018-05-07 10:19:11 -04:00
tcm.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
TODO