Hi Jonathan,

On 2026-01-30 at 19:19:54 +0000, Jonathan Cavitt wrote:
> 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 <[email protected]>
> Cc: Matthew Brost <[email protected]>
> Cc: Thomas Hellström <[email protected]>
> ---
>  drivers/gpu/drm/drm_gpuvm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
> index 14469765a780..76f70686f0e6 100644
> --- a/drivers/gpu/drm/drm_gpuvm.c
> +++ b/drivers/gpu/drm/drm_gpuvm.c
> @@ -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;
> -- 
> 2.43.0
> 
Since there alerady such checks in other functions, as you
pointed out above and the change looks sane:

Reviewed-by: Krzysztof Karas <[email protected]>

-- 
Best Regards,
Krzysztof

Reply via email to