diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0563-drm-vc4-kms-Fix-return-code-check.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.15/950-0563-drm-vc4-kms-Fix-return-code-check.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0563-drm-vc4-kms-Fix-return-code-check.patch b/target/linux/bcm27xx/patches-5.15/950-0563-drm-vc4-kms-Fix-return-code-check.patch new file mode 100644 index 0000000000..2bff88c517 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.15/950-0563-drm-vc4-kms-Fix-return-code-check.patch @@ -0,0 +1,42 @@ +From e0788eaab7b0dca567c52a5959fbdd9da942a1f5 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard <maxime@cerno.tech> +Date: Wed, 20 Oct 2021 13:31:22 +0200 +Subject: [PATCH] drm/vc4: kms: Fix return code check + +The HVS global state functions return an error pointer, but in most +cases we check if it's NULL, possibly resulting in an invalid pointer +dereference. + +Fixes: 9ec03d7f1ed3 ("drm/vc4: kms: Wait on previous FIFO users before a commit") +Signed-off-by: Maxime Ripard <maxime@cerno.tech> +--- + drivers/gpu/drm/vc4/vc4_kms.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_kms.c ++++ b/drivers/gpu/drm/vc4/vc4_kms.c +@@ -352,11 +352,11 @@ static void vc4_atomic_commit_tail(struc + int i; + + old_hvs_state = vc4_hvs_get_old_global_state(state); +- if (WARN_ON(!old_hvs_state)) ++ if (WARN_ON(IS_ERR(old_hvs_state))) + return; + + new_hvs_state = vc4_hvs_get_new_global_state(state); +- if (WARN_ON(!new_hvs_state)) ++ if (WARN_ON(IS_ERR(new_hvs_state))) + return; + + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { +@@ -891,8 +891,8 @@ vc4_core_clock_atomic_check(struct drm_a + load_state = to_vc4_load_tracker_state(priv_state); + + hvs_new_state = vc4_hvs_get_global_state(state); +- if (!hvs_new_state) +- return -EINVAL; ++ if (IS_ERR(hvs_new_state)) ++ return PTR_ERR(hvs_new_state); + + for_each_oldnew_crtc_in_state(state, crtc, + old_crtc_state, |