]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/vmwgfx: Fix KMS with 3D on HW version 10
authorIan Forbes <ian.forbes@broadcom.com>
Fri, 14 Nov 2025 20:37:03 +0000 (14:37 -0600)
committerZack Rusin <zack.rusin@broadcom.com>
Wed, 7 Jan 2026 16:40:05 +0000 (11:40 -0500)
HW version 10 does not have GB Surfaces so there is no backing buffer for
surface backed FBs. This would result in a nullptr dereference and crash
the driver causing a black screen.

Fixes: 965544150d1c ("drm/vmwgfx: Refactor cursor handling")
Signed-off-by: Ian Forbes <ian.forbes@broadcom.com>
Reviewed-by: Zack Rusin <zack.rusin@broadcom.com>
Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
Link: https://patch.msgid.link/20251114203703.1946616-1-ian.forbes@broadcom.com
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c

index d32ce1cb579e6d915b5ee8d83f8174172266840c..bc51b5d55e38a96a081401aa2ba6403c8c178705 100644 (file)
@@ -766,13 +766,15 @@ err_out:
                return ERR_PTR(ret);
        }
 
-       ttm_bo_reserve(&bo->tbo, false, false, NULL);
-       ret = vmw_bo_dirty_add(bo);
-       if (!ret && surface && surface->res.func->dirty_alloc) {
-               surface->res.coherent = true;
-               ret = surface->res.func->dirty_alloc(&surface->res);
+       if (bo) {
+               ttm_bo_reserve(&bo->tbo, false, false, NULL);
+               ret = vmw_bo_dirty_add(bo);
+               if (!ret && surface && surface->res.func->dirty_alloc) {
+                       surface->res.coherent = true;
+                       ret = surface->res.func->dirty_alloc(&surface->res);
+               }
+               ttm_bo_unreserve(&bo->tbo);
        }
-       ttm_bo_unreserve(&bo->tbo);
 
        return &vfb->base;
 }