[PATCH] drm/amdgpu: Fix memory leak in amdgpu_cs_pass1

2022-11-10 Thread Dong Chenchen
When p->gang_size equals 0, amdgpu_cs_pass1() will return directly
without freeing chunk_array, which will cause a memory leak issue,
this patch fixes it.

Fixes: 4624459c84d7 ("drm/amdgpu: add gang submit frontend v6")
Signed-off-by: Dong Chenchen 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 1bbd39b3b0fc..0e24d6b80e0b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -287,8 +287,10 @@ static int amdgpu_cs_pass1(struct amdgpu_cs_parser *p,
}
}
 
-   if (!p->gang_size)
-   return -EINVAL;
+   if (!p->gang_size) {
+   ret = -EINVAL;
+   goto free_partial_kdata;
+   }
 
for (i = 0; i < p->gang_size; ++i) {
ret = amdgpu_job_alloc(p->adev, num_ibs[i], >jobs[i], vm);
-- 
2.25.1


[PATCH -next] drm/amd/display: Removed unused variable 'sdp_stream_enable'

2022-09-30 Thread Dong Chenchen
Kernel test robot throws below warning ->

drivers/gpu/drm/amd/amdgpu/../display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c:
In function 'dcn31_hpo_dp_stream_enc_update_dp_info_packets':
   
drivers/gpu/drm/amd/amdgpu/../display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c:439:14:
warning: variable 'sdp_stream_enable' set but not used
[-Wunused-but-set-variable]
   439 | bool sdp_stream_enable = false;

Removed unused variable 'sdp_stream_enable'.

Reported-by: kernel test robot 
Signed-off-by: Dong Chenchen 
---
 .../dc/dcn31/dcn31_hpo_dp_stream_encoder.c   | 16 ++--
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c 
b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
index 23621ff08c90..7daafbab98da 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
@@ -436,32 +436,28 @@ static void 
dcn31_hpo_dp_stream_enc_update_dp_info_packets(
 {
struct dcn31_hpo_dp_stream_encoder *enc3 = 
DCN3_1_HPO_DP_STREAM_ENC_FROM_HPO_STREAM_ENC(enc);
uint32_t dmdata_packet_enabled = 0;
-   bool sdp_stream_enable = false;
 
-   if (info_frame->vsc.valid) {
+   if (info_frame->vsc.valid)
enc->vpg->funcs->update_generic_info_packet(
enc->vpg,
0,  /* packetIndex */
_frame->vsc,
true);
-   sdp_stream_enable = true;
-   }
-   if (info_frame->spd.valid) {
+
+   if (info_frame->spd.valid)
enc->vpg->funcs->update_generic_info_packet(
enc->vpg,
2,  /* packetIndex */
_frame->spd,
true);
-   sdp_stream_enable = true;
-   }
-   if (info_frame->hdrsmd.valid) {
+
+   if (info_frame->hdrsmd.valid)
enc->vpg->funcs->update_generic_info_packet(
enc->vpg,
3,  /* packetIndex */
_frame->hdrsmd,
true);
-   sdp_stream_enable = true;
-   }
+
/* enable/disable transmission of packet(s).
 * If enabled, packet transmission begins on the next frame
 */
-- 
2.25.1