diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2676-drm-amdgpu-Use-kmemdup-rather-than-duplicating-its-i.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2676-drm-amdgpu-Use-kmemdup-rather-than-duplicating-its-i.patch | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2676-drm-amdgpu-Use-kmemdup-rather-than-duplicating-its-i.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2676-drm-amdgpu-Use-kmemdup-rather-than-duplicating-its-i.patch new file mode 100644 index 00000000..2613e751 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2676-drm-amdgpu-Use-kmemdup-rather-than-duplicating-its-i.patch @@ -0,0 +1,104 @@ +From 1323b9f9d3eb1a214da24baf9b3fe3b76acff1c5 Mon Sep 17 00:00:00 2001 +From: Fuqian Huang <huangfq.daxian@gmail.com> +Date: Thu, 4 Jul 2019 00:27:18 +0800 +Subject: [PATCH 2676/2940] drm/amdgpu: Use kmemdup rather than duplicating its + implementation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +kmemdup is introduced to duplicate a region of memory in a neat way. +Rather than kmalloc/kzalloc + memcpy, which the programmer needs to +write the size twice (sometimes lead to mistakes), kmemdup improves +readability, leads to smaller code and also reduce the chances of mistakes. +Suggestion to use kmemdup rather than using kmalloc/kzalloc + memcpy. + +Reviewed-by: Christian König <Christian.Koenig@amd.com> +Reviewed-by: Emil Velikov <emil.velikov@collabora.com> +Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 5 ++--- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 5 ++--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 6 ++---- + drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 4 +--- + 4 files changed, 7 insertions(+), 13 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +index 792aeb1b9e33..f84366f20dff 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +@@ -3921,11 +3921,10 @@ static int gfx_v8_0_init_save_restore_list(struct amdgpu_device *adev) + + int list_size; + unsigned int *register_list_format = +- kmalloc(adev->gfx.rlc.reg_list_format_size_bytes, GFP_KERNEL); ++ kmemdup(adev->gfx.rlc.register_list_format, ++ adev->gfx.rlc.reg_list_format_size_bytes, GFP_KERNEL); + if (!register_list_format) + return -ENOMEM; +- memcpy(register_list_format, adev->gfx.rlc.register_list_format, +- adev->gfx.rlc.reg_list_format_size_bytes); + + gfx_v8_0_parse_ind_reg_list(register_list_format, + RLC_FormatDirectRegListLength, +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index 00617a655e8a..550bd70b2edb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -2074,11 +2074,10 @@ static int gfx_v9_1_init_rlc_save_restore_list(struct amdgpu_device *adev) + u32 tmp = 0; + + u32 *register_list_format = +- kmalloc(adev->gfx.rlc.reg_list_format_size_bytes, GFP_KERNEL); ++ kmemdup(adev->gfx.rlc.register_list_format, ++ adev->gfx.rlc.reg_list_format_size_bytes, GFP_KERNEL); + if (!register_list_format) + return -ENOMEM; +- memcpy(register_list_format, adev->gfx.rlc.register_list_format, +- adev->gfx.rlc.reg_list_format_size_bytes); + + /* setup unique_indirect_regs array and indirect_start_offsets array */ + unique_indirect_reg_count = ARRAY_SIZE(unique_indirect_regs); +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 251c24a99e4e..c1bda186fd40 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -1200,14 +1200,12 @@ struct dc_state *dc_create_state(struct dc *dc) + struct dc_state *dc_copy_state(struct dc_state *src_ctx) + { + int i, j; +- struct dc_state *new_ctx = kzalloc(sizeof(struct dc_state), +- GFP_KERNEL); ++ struct dc_state *new_ctx = kmemdup(src_ctx, ++ sizeof(struct dc_state), GFP_KERNEL); + + if (!new_ctx) + return NULL; + +- memcpy(new_ctx, src_ctx, sizeof(struct dc_state)); +- + for (i = 0; i < MAX_PIPES; i++) { + struct pipe_ctx *cur_pipe = &new_ctx->res_ctx.pipe_ctx[i]; + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +index 30a25e694da0..1bc19d42fc9f 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +@@ -178,12 +178,10 @@ struct dc_stream_state *dc_copy_stream(const struct dc_stream_state *stream) + { + struct dc_stream_state *new_stream; + +- new_stream = kzalloc(sizeof(struct dc_stream_state), GFP_KERNEL); ++ new_stream = kmemdup(stream, sizeof(struct dc_stream_state), GFP_KERNEL); + if (!new_stream) + return NULL; + +- memcpy(new_stream, stream, sizeof(struct dc_stream_state)); +- + if (new_stream->sink) + dc_sink_retain(new_stream->sink); + +-- +2.17.1 + |