]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/vmwgfx: Don't overwrite KMS surface dirty tracker
authorIan Forbes <ian.forbes@broadcom.com>
Mon, 2 Mar 2026 20:03:30 +0000 (14:03 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Mar 2026 10:13:31 +0000 (11:13 +0100)
[ Upstream commit c6cb77c474a32265e21c4871c7992468bf5e7638 ]

We were overwriting the surface's dirty tracker here causing a memory leak.

Reported-by: Mika Penttilä <mpenttil@redhat.com>
Closes: https://lore.kernel.org/dri-devel/8c53f3c6-c6de-46fe-a8ca-d98dd52b3abe@redhat.com/
Fixes: 965544150d1c ("drm/vmwgfx: Refactor cursor handling")
Signed-off-by: Ian Forbes <ian.forbes@broadcom.com>
Reviewed-by: Maaz Mombasawala <maaz.mombasawala@broadcom.com>
Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
Link: https://patch.msgid.link/20260302200330.66763-1-ian.forbes@broadcom.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c

index bc51b5d55e38a96a081401aa2ba6403c8c178705..35c7277521a90f108713e8bf3516a8732353794a 100644 (file)
@@ -771,7 +771,8 @@ err_out:
                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 (surface->res.dirty == NULL)
+                               ret = surface->res.func->dirty_alloc(&surface->res);
                }
                ttm_bo_unreserve(&bo->tbo);
        }