]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu/atom: Check kcalloc() for WS buffer in amdgpu_atom_execute_table_locked()
authorGuangshuo Li <lgs201920130244@gmail.com>
Thu, 18 Sep 2025 10:57:05 +0000 (18:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:37:27 +0000 (15:37 -0500)
[ Upstream commit cc9a8e238e42c1f43b98c097995137d644b69245 ]

kcalloc() may fail. When WS is non-zero and allocation fails, ectx.ws
remains NULL while ectx.ws_size is set, leading to a potential NULL
pointer dereference in atom_get_src_int() when accessing WS entries.

Return -ENOMEM on allocation failure to avoid the NULL dereference.

Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/atom.c

index 427b073de2fc143a432b9f249921b97212eb2c1e..1a7591ca2f9a0bec7e16f698b7fb5cd22062c4c8 100644 (file)
@@ -1246,6 +1246,10 @@ static int amdgpu_atom_execute_table_locked(struct atom_context *ctx, int index,
        ectx.last_jump_jiffies = 0;
        if (ws) {
                ectx.ws = kcalloc(4, ws, GFP_KERNEL);
+               if (!ectx.ws) {
+                       ret = -ENOMEM;
+                       goto free;
+               }
                ectx.ws_size = ws;
        } else {
                ectx.ws = NULL;