diff options
| author | Dave Airlie <airlied@redhat.com> | 2026-01-30 12:54:03 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2026-01-30 12:54:09 +1000 |
| commit | 8fbe215d3764aedebdde92ed88cf64ae681276f8 (patch) | |
| tree | 1f9a61e7dfb3b5cd02a89817a265003133783746 /drivers | |
| parent | 608fb0a78c42ee61cb567f9b918ee109663854bb (diff) | |
| parent | db7e7ea838c916ee4cdf26bee126fd36f58295dc (diff) | |
Merge tag 'drm-misc-next-fixes-2026-01-29' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
Two fixes for NULL pointer dereference in imx8 following the bridge
refcounting conversions, and one for the bridge connector following the
HDMI audio reworks.
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <mripard@redhat.com>
Link: https://patch.msgid.link/20260129-efficient-jerboa-of-ecstasy-822832@houat
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/display/drm_bridge_connector.c | 9 |
3 files changed, 14 insertions, 5 deletions
diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c index 675995cbeb6b..f27ca5f08ce0 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c @@ -65,9 +65,12 @@ static inline struct imx8qxp_ldb *base_to_imx8qxp_ldb(struct ldb *base) static void imx8qxp_ldb_bridge_destroy(struct drm_bridge *bridge) { struct ldb_channel *ldb_ch = bridge->driver_private; - struct ldb *ldb = ldb_ch->ldb; - struct imx8qxp_ldb *imx8qxp_ldb = base_to_imx8qxp_ldb(ldb); + struct imx8qxp_ldb *imx8qxp_ldb; + + if (!ldb_ch) + return; + imx8qxp_ldb = base_to_imx8qxp_ldb(ldb_ch->ldb); drm_bridge_put(imx8qxp_ldb->companion); } diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c b/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c index 2c40ca86e319..d5de39b5710b 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c @@ -67,6 +67,9 @@ static void imx8qxp_pxl2dpi_bridge_destroy(struct drm_bridge *bridge) { struct imx8qxp_pxl2dpi *p2d = bridge->driver_private; + if (!p2d) + return; + drm_bridge_put(p2d->companion); } diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c index ba8ff113cff1..258132c6b8b5 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -851,6 +851,11 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, !bridge->funcs->hdmi_clear_hdmi_infoframe) return ERR_PTR(-EINVAL); + if (bridge->ops & DRM_BRIDGE_OP_HDMI_AUDIO && + (!bridge->funcs->hdmi_write_audio_infoframe || + !bridge->funcs->hdmi_clear_audio_infoframe)) + return ERR_PTR(-EINVAL); + if (bridge->ops & DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME && (!bridge->funcs->hdmi_write_hdr_drm_infoframe || !bridge->funcs->hdmi_clear_hdr_drm_infoframe)) @@ -880,9 +885,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, !bridge->hdmi_audio_spdif_playback) return ERR_PTR(-EINVAL); - if (!bridge->funcs->hdmi_write_audio_infoframe || - !bridge->funcs->hdmi_clear_audio_infoframe || - !bridge->funcs->hdmi_audio_prepare || + if (!bridge->funcs->hdmi_audio_prepare || !bridge->funcs->hdmi_audio_shutdown) return ERR_PTR(-EINVAL); |
