From: Hersen Wu <[email protected]>

[WHY]
&mode_lib->mp.Watermark and &locals->Watermark are
the same address. memcpy may lead to unexpected behavior.

[HOW]
memmove should be used.

Reviewed-by: Rodrigo Siqueira <[email protected]>
Acked-by: Wayne Lin <[email protected]>
Reviewed-by: Alex Hung <[email protected]>
Signed-off-by: Hersen Wu <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dml2/display_mode_core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml2/display_mode_core.c 
b/drivers/gpu/drm/amd/display/dc/dml2/display_mode_core.c
index 6255101737b5..3e919f5c00ca 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/display_mode_core.c
+++ b/drivers/gpu/drm/amd/display/dc/dml2/display_mode_core.c
@@ -9460,8 +9460,10 @@ void dml_core_mode_programming(struct 
display_mode_lib_st *mode_lib, const struc
 
                /* Copy the calculated watermarks to mp.Watermark as the getter 
functions are
                 * implemented by the DML team to copy the calculated values 
from the mp.Watermark interface.
+                * &mode_lib->mp.Watermark and &locals->Watermark are the same 
address, memcpy may lead to
+                * unexpected behavior. memmove should be used.
                 */
-               memcpy(&mode_lib->mp.Watermark, 
CalculateWatermarks_params->Watermark, sizeof(struct Watermarks));
+               memmove(&mode_lib->mp.Watermark, 
CalculateWatermarks_params->Watermark, sizeof(struct Watermarks));
 
                for (k = 0; k < mode_lib->ms.num_active_planes; ++k) {
                        if 
(mode_lib->ms.cache_display_cfg.writeback.WritebackEnable[k] == true) {
-- 
2.37.3

Reply via email to