]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/gpuvm: Do not prepare NULL objects
authorJonathan Cavitt <jonathan.cavitt@intel.com>
Fri, 30 Jan 2026 19:19:54 +0000 (19:19 +0000)
committerJonathan Cavitt <jonathan.cavitt@intel.com>
Thu, 16 Apr 2026 18:27:17 +0000 (02:27 +0800)
Statis analysis issue:

drm_gpuvm_prepare_range issues an exec_object_prepare call to all
drm_gem_objects mapped between addr and addr + range.  However, it is
possible (albeit very unlikely) that the objects found through
drm_gpuvm_for_each_va_range (as connected to va->gem) are NULL, as seen
in other functions such as drm_gpuva_link and drm_gpuva_unlink_defer.

Do not prepare NULL objects.

Fixes: 50c1a36f594b ("drm/gpuvm: track/lock/validate external/evicted objects")
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Link: https://patch.msgid.link/20260130191953.61718-2-jonathan.cavitt@intel.com
drivers/gpu/drm/drm_gpuvm.c

index 44acfe4120d243bea70c6178a3ac7cb1583543a7..f56719e9f4350a3e1d539fd24a7de8b791a683e0 100644 (file)
@@ -1322,6 +1322,9 @@ drm_gpuvm_prepare_range(struct drm_gpuvm *gpuvm, struct drm_exec *exec,
        drm_gpuvm_for_each_va_range(va, gpuvm, addr, end) {
                struct drm_gem_object *obj = va->gem.obj;
 
+               if (unlikely(!obj))
+                       continue;
+
                ret = exec_prepare_obj(exec, obj, num_fences);
                if (ret)
                        return ret;