diff --git a/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-atomic-helper-null-pointer-fix.patch b/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-atomic-helper-null-pointer-fix.patch new file mode 100644 index 0000000000..b0564f4ab1 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-atomic-helper-null-pointer-fix.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ryzer58 +Date: Mon, 23 Jun 2025 18:19:15 +0100 +Subject: Backport null pointer check to drm HDMI atomic helper function + + Backport fix from upstream kernel to address null pointer dereference in drm_atomic_helper_connector_hdmi_check(). + If these checks are not in place, then drm_default_rgb_quant_range(), called by drm_atomic_helper_connector_hdmi_check() + would dereference the NULL pointer to_match in drm_match_cea_mode(). + +Signed-off-by: Ryzer58 +--- + drivers/gpu/drm/display/drm_hdmi_state_helper.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c +index 936a8f95d80f..15661712d722 100644 +--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c ++++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c +@@ -500,10 +500,13 @@ int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, + drm_atomic_get_new_connector_state(state, connector); + const struct drm_display_mode *mode = + connector_state_get_mode(new_conn_state); + int ret; + ++ if (!new_conn_state->crtc || !new_conn_state->best_encoder) ++ return 0; ++ + new_conn_state->hdmi.is_limited_range = hdmi_is_limited_range(connector, new_conn_state); + + ret = hdmi_compute_config(connector, new_conn_state, mode); + if (ret) + return ret; +-- +Created with Armbian build tools https://github.com/armbian/build + diff --git a/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-sun4i-hdmi-atomic-fix.patch b/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-sun4i-hdmi-atomic-fix.patch new file mode 100644 index 0000000000..da3e72f48c --- /dev/null +++ b/patch/kernel/archive/sunxi-6.12/patches.armbian/drv-drm-sun4i-hdmi-atomic-fix.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ryzer58 +Date: Sun, 8 Jun 2025 22:19:27 +0100 +Subject: Backport DRM atomic check function change from upstream kernel to restore HDMI + output functionality + +Signed-off-by: Ryzer58 +--- + drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 20 +--------- + 1 file changed, 1 insertion(+), 19 deletions(-) + +diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +index 6c3862f39c55..5d10b1c54cf9 100644 +--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c ++++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +@@ -197,28 +197,10 @@ sun4i_hdmi_connector_clock_valid(const struct drm_connector *connector, + return MODE_OK; + + return MODE_NOCLOCK; + } + +-static int sun4i_hdmi_connector_atomic_check(struct drm_connector *connector, +- struct drm_atomic_state *state) +-{ +- struct drm_connector_state *conn_state = +- drm_atomic_get_new_connector_state(state, connector); +- struct drm_crtc *crtc = conn_state->crtc; +- struct drm_crtc_state *crtc_state = crtc->state; +- struct drm_display_mode *mode = &crtc_state->adjusted_mode; +- enum drm_mode_status status; +- +- status = sun4i_hdmi_connector_clock_valid(connector, mode, +- conn_state->hdmi.tmds_char_rate); +- if (status != MODE_OK) +- return -EINVAL; +- +- return 0; +-} +- + static enum drm_mode_status + sun4i_hdmi_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) + { + unsigned long long rate = drm_hdmi_compute_mode_clock(mode, 8, +@@ -278,11 +260,11 @@ static const struct drm_connector_hdmi_funcs sun4i_hdmi_hdmi_connector_funcs = { + .tmds_char_rate_valid = sun4i_hdmi_connector_clock_valid, + .write_infoframe = sun4i_hdmi_write_infoframe, + }; + + static const struct drm_connector_helper_funcs sun4i_hdmi_connector_helper_funcs = { +- .atomic_check = sun4i_hdmi_connector_atomic_check, ++ .atomic_check = drm_atomic_helper_connector_hdmi_check, + .mode_valid = sun4i_hdmi_connector_mode_valid, + .get_modes = sun4i_hdmi_get_modes, + }; + + static enum drm_connector_status +-- +Created with Armbian build tools https://github.com/armbian/build + diff --git a/patch/kernel/archive/sunxi-6.12/series.conf b/patch/kernel/archive/sunxi-6.12/series.conf index ae1846206d..87b2a60ff7 100644 --- a/patch/kernel/archive/sunxi-6.12/series.conf +++ b/patch/kernel/archive/sunxi-6.12/series.conf @@ -319,6 +319,8 @@ patches.armbian/drv-mmc-host-sunxi-mmc-add-h5-emmc-compatible.patch patches.armbian/drv-pinctrl-sunxi-pinctrl-sun50i-h6.c-GPIO-disable_strict_mode.patch patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch + patches.armbian/drv-drm-sun4i-hdmi-atomic-fix.patch + patches.armbian/drv-drm-atomic-helper-null-pointer-fix.patch patches.armbian/drv-mtd-nand-raw-nand_ids.c-add-H27UBG8T2BTR-BC-nand.patch patches.armbian/drv-mfd-axp20x-add-sysfs-interface.patch patches.armbian/drv-spi-spidev-Add-armbian-spi-dev-compatible.patch