From: Guangshuo Li <[email protected]>

commit cc9a8e238e42c1f43b98c097995137d644b69245 upstream.

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 <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
[ Roman: added parentheses to the 'if' statement, matching the upstream
commit. ]
Signed-off-by: Roman Demidov <[email protected]>
---
Backport fix for CVE-2025-68190

 drivers/gpu/drm/amd/amdgpu/atom.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c 
b/drivers/gpu/drm/amd/amdgpu/atom.c
index cb6eb47aab65..0a7666be1dea 100644
--- a/drivers/gpu/drm/amd/amdgpu/atom.c
+++ b/drivers/gpu/drm/amd/amdgpu/atom.c
@@ -1228,10 +1228,15 @@ static int amdgpu_atom_execute_table_locked(struct 
atom_context *ctx, int index,
        ectx.ps = params;
        ectx.abort = false;
        ectx.last_jump = 0;
-       if (ws)
+       if (ws) {
                ectx.ws = kcalloc(4, ws, GFP_KERNEL);
-       else
+               if (!ectx.ws) {
+                       ret = -ENOMEM;
+                       goto free;
+               }
+       } else {
                ectx.ws = NULL;
+       }
 
        debug_depth++;
        while (1) {
-- 
2.53.0

Reply via email to