On Fri, Nov 14, 2025 at 3:37 PM Ian Forbes <[email protected]> wrote:
>
> 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 <[email protected]>
> ---
>  drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 
> b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> index 87448e86d3b3..4446f25e526d 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> @@ -767,13 +767,15 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct 
> drm_device *dev,
>                 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;
>  }
> --
> 2.51.1
>

Looks great.

Reviewed-by: Zack Rusin <[email protected]>

z

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to