From ef5e08a62c2a376dab550c0e3962797256c70d24 Mon Sep 17 00:00:00 2001
From: Aurabindo Pillai <aurabindo.pillai@amd.com>
Date: Tue, 7 Jun 2022 09:43:02 -0400
Subject: drm/amd/display: fix null pointer deref error
Git-commit: 136788cc74cbd9fabc2922b77bfdd38a53eb7155
Patch-mainline: v6.0-rc1
References: jsc#PED-1166 jsc#PED-1168 jsc#PED-1170 jsc#PED-1218 jsc#PED-1220 jsc#PED-1222 jsc#PED-1223 jsc#PED-1225 jsc#PED-2849
[Why]
0 was passed in place of a pointer which triggered null pointer
dereference.
Causes a backtrace like:
[ 41.159466] RIP: 0010:dccg31_set_audio_dtbclk_dto+0x10/0x120 [amdgpu]
[ 41.159928] Code: c0 00 00 00 6a 01 8b 92 84 01 00 00 52 0f b6 40 61 e9 30 ff ff ff 0f 1f 40 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55 41 54 53 <44> 8b 66 18 48 89 fb 48 8b 47 30 48 8b 3f 45 85 e4 74 09 4c 63 6e
[ 41.159932] RSP: 0018:ffffaee54055afd0 EFLAGS: 00010246
[ 41.159936] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff917445901800
[ 41.159939] RDX: ffffffffc15e6ca0 RSI: 0000000000000000 RDI: ffff91744dbd8c60
[ 41.159941] RBP: ffffaee54055aff0 R08: 0000000000000100 R09: ffffaee54055afe8
[ 41.159944] R10: 0000000000000001 R11: 0000000000000009 R12: ffff91747ca201f0
[ 41.159946] R13: ffff91747ca20000 R14: ffff917448720438 R15: ffff91747ca20000
[ 41.159948] FS: 00007f5e13e5f740(0000) GS:ffff91775ca40000(0000) knlGS:0000000000000000
[ 41.159951] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 41.159954] CR2: 0000000000000018 CR3: 000000010fea0000 CR4: 00000000003506e0
[ 41.159956] Call Trace:
[ 41.159959] <TASK>
[ 41.159964] dce110_setup_audio_dto.isra.0+0xd8/0x1f0 [amdgpu]
[ 41.160411] dce110_apply_ctx_to_hw+0x1aa/0x780 [amdgpu]
[ 41.160842] ? __free_pages+0x88/0xb0
[ 41.160850] ? kfree+0x360/0x3e0
[ 41.160857] dc_commit_state+0x337/0xac0 [amdgpu]
[ 41.161135] amdgpu_dm_atomic_commit_tail+0x5e3/0x2680 [amdgpu]
[How]
Pass in a pointer that contains nullified parameters instead of null
pointer.
Fixes: 405bb9eea36a ("drm/amd/display: Implement DTBCLK ref switching on dcn32")
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Patrik Jakobsson <pjakobsson@suse.de>
---
.../gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
index f45d6e913c91..8662703f306c 100644
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
@@ -2171,15 +2171,18 @@ static void dce110_setup_audio_dto(
build_audio_output(context, pipe_ctx, &audio_output);
if (dc->res_pool->dccg && dc->res_pool->dccg->funcs->set_audio_dtbclk_dto) {
- /* disable audio DTBCLK DTO */
- dc->res_pool->dccg->funcs->set_audio_dtbclk_dto(
- dc->res_pool->dccg, 0);
+ struct dtbclk_dto_params dto_params = {0};
pipe_ctx->stream_res.audio->funcs->wall_dto_setup(
pipe_ctx->stream_res.audio,
pipe_ctx->stream->signal,
&audio_output.crtc_info,
&audio_output.pll_info);
+
+ /* disable audio DTBCLK DTO */
+ dc->res_pool->dccg->funcs->set_audio_dtbclk_dto(
+ dc->res_pool->dccg, &dto_params);
+
} else
pipe_ctx->stream_res.audio->funcs->wall_dto_setup(
pipe_ctx->stream_res.audio,
--
2.38.1