aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch
new file mode 100644
index 00000000..5528f1b6
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5576-drm-amd-display-fix-bug-of-accessing-invalid-memory.patch
@@ -0,0 +1,55 @@
+From 558a81423955eb43a8e73ad01e46d0fee589c44b Mon Sep 17 00:00:00 2001
+From: Su Sung Chung <Su.Chung@amd.com>
+Date: Thu, 20 Sep 2018 15:03:27 -0400
+Subject: [PATCH 5576/5725] drm/amd/display: fix bug of accessing invalid
+ memory
+
+[Why]
+A loop inside of build_evenly_distributed_points function that traverse through
+the array of points become an infinite loop when m_GammaUpdates does not
+get assigned to any value.
+
+[How]
+In DMColor, clear m_gammaIsValid bit just before writting all Zeromem for
+m_GammaUpdates, to prevent calling build_evenly_distributed_points
+before m_GammaUpdates gets assigned to some value.
+
+Signed-off-by: Su Sung Chung <Su.Chung@amd.com>
+Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/modules/color/color_gamma.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
+index 0fe9882..16f7ea8 100644
+--- a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
++++ b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
+@@ -1071,10 +1071,14 @@ static void build_evenly_distributed_points(
+ struct dividers dividers)
+ {
+ struct gamma_pixel *p = points;
+- struct gamma_pixel *p_last = p + numberof_points - 1;
++ struct gamma_pixel *p_last;
+
+ uint32_t i = 0;
+
++ // This function should not gets called with 0 as a parameter
++ ASSERT(numberof_points > 0);
++ p_last = p + numberof_points - 1;
++
+ do {
+ struct fixed31_32 value = dc_fixpt_from_fraction(i,
+ numberof_points - 1);
+@@ -1085,7 +1089,7 @@ static void build_evenly_distributed_points(
+
+ ++p;
+ ++i;
+- } while (i != numberof_points);
++ } while (i < numberof_points);
+
+ p->r = dc_fixpt_div(p_last->r, dividers.divider1);
+ p->g = dc_fixpt_div(p_last->g, dividers.divider1);
+--
+2.7.4
+