linux_dsm_epyc7002/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
Makefile
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
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
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
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
omap_plane.c
omap_plane.h
tcm-sita.c
tcm.h
TODO