Patch "drm/amd/display: Fix null pointer deref in dcn20_resource.c" has been added to the 6.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/amd/display: Fix null pointer deref in dcn20_resource.c

to the 6.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-amd-display-fix-null-pointer-deref-in-dcn20_reso.patch
and it can be found in the queue-6.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 379467002e520422ebc323a6a68552741ad8b0f8
Author: Aurabindo Pillai <aurabindo.pillai@xxxxxxx>
Date:   Wed Jun 26 13:13:57 2024 -0400

    drm/amd/display: Fix null pointer deref in dcn20_resource.c
    
    [ Upstream commit ecbf60782662f0a388493685b85a645a0ba1613c ]
    
    Fixes a hang thats triggered when MPV is run on a DCN401 dGPU:
    
    mpv --hwdec=vaapi --vo=gpu --hwdec-codecs=all
    
    and then enabling fullscreen playback (double click on the video)
    
    The following calltrace will be seen:
    
    [  181.843989] BUG: kernel NULL pointer dereference, address: 0000000000000000
    [  181.843997] #PF: supervisor instruction fetch in kernel mode
    [  181.844003] #PF: error_code(0x0010) - not-present page
    [  181.844009] PGD 0 P4D 0
    [  181.844020] Oops: 0010 [#1] PREEMPT SMP NOPTI
    [  181.844028] CPU: 6 PID: 1892 Comm: gnome-shell Tainted: G        W  OE      6.5.0-41-generic #41~22.04.2-Ubuntu
    [  181.844038] Hardware name: System manufacturer System Product Name/CROSSHAIR VI HERO, BIOS 6302 10/23/2018
    [  181.844044] RIP: 0010:0x0
    [  181.844079] Code: Unable to access opcode bytes at 0xffffffffffffffd6.
    [  181.844084] RSP: 0018:ffffb593c2b8f7b0 EFLAGS: 00010246
    [  181.844093] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000004
    [  181.844099] RDX: ffffb593c2b8f804 RSI: ffffb593c2b8f7e0 RDI: ffff9e3c8e758400
    [  181.844105] RBP: ffffb593c2b8f7b8 R08: ffffb593c2b8f9c8 R09: ffffb593c2b8f96c
    [  181.844110] R10: 0000000000000000 R11: 0000000000000000 R12: ffffb593c2b8f9c8
    [  181.844115] R13: 0000000000000001 R14: ffff9e3c88000000 R15: 0000000000000005
    [  181.844121] FS:  00007c6e323bb5c0(0000) GS:ffff9e3f85f80000(0000) knlGS:0000000000000000
    [  181.844128] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  181.844134] CR2: ffffffffffffffd6 CR3: 0000000140fbe000 CR4: 00000000003506e0
    [  181.844141] Call Trace:
    [  181.844146]  <TASK>
    [  181.844153]  ? show_regs+0x6d/0x80
    [  181.844167]  ? __die+0x24/0x80
    [  181.844179]  ? page_fault_oops+0x99/0x1b0
    [  181.844192]  ? do_user_addr_fault+0x31d/0x6b0
    [  181.844204]  ? exc_page_fault+0x83/0x1b0
    [  181.844216]  ? asm_exc_page_fault+0x27/0x30
    [  181.844237]  dcn20_get_dcc_compression_cap+0x23/0x30 [amdgpu]
    [  181.845115]  amdgpu_dm_plane_validate_dcc.constprop.0+0xe5/0x180 [amdgpu]
    [  181.845985]  amdgpu_dm_plane_fill_plane_buffer_attributes+0x300/0x580 [amdgpu]
    [  181.846848]  fill_dc_plane_info_and_addr+0x258/0x350 [amdgpu]
    [  181.847734]  fill_dc_plane_attributes+0x162/0x350 [amdgpu]
    [  181.848748]  dm_update_plane_state.constprop.0+0x4e3/0x6b0 [amdgpu]
    [  181.849791]  ? dm_update_plane_state.constprop.0+0x4e3/0x6b0 [amdgpu]
    [  181.850840]  amdgpu_dm_atomic_check+0xdfe/0x1760 [amdgpu]
    
    Signed-off-by: Aurabindo Pillai <aurabindo.pillai@xxxxxxx>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx>
    Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
index 0a939437e19f1..6b380e037e3f8 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
@@ -2193,10 +2193,11 @@ bool dcn20_get_dcc_compression_cap(const struct dc *dc,
 		const struct dc_dcc_surface_param *input,
 		struct dc_surface_dcc_cap *output)
 {
-	return dc->res_pool->hubbub->funcs->get_dcc_compression_cap(
-			dc->res_pool->hubbub,
-			input,
-			output);
+	if (dc->res_pool->hubbub->funcs->get_dcc_compression_cap)
+		return dc->res_pool->hubbub->funcs->get_dcc_compression_cap(
+			dc->res_pool->hubbub, input, output);
+
+	return false;
 }
 
 static void dcn20_destroy_resource_pool(struct resource_pool **pool)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux