]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/vmwgfx: Fix Use-after-free in validation
authorIan Forbes <ian.forbes@broadcom.com>
Fri, 26 Sep 2025 19:54:25 +0000 (14:54 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 19 Oct 2025 14:23:08 +0000 (16:23 +0200)
[ Upstream commit dfe1323ab3c8a4dd5625ebfdba44dc47df84512a ]

Nodes stored in the validation duplicates hashtable come from an arena
allocator that is cleared at the end of vmw_execbuf_process. All nodes
are expected to be cleared in vmw_validation_drop_ht but this node escaped
because its resource was destroyed prematurely.

Fixes: 64ad2abfe9a6 ("drm/vmwgfx: Adapt validation code for reference-free lookups")
Reported-by: Kuzey Arda Bulut <kuzeyardabulut@gmail.com>
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://lore.kernel.org/r/20250926195427.1405237-1-ian.forbes@broadcom.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/vmwgfx/vmwgfx_validation.c

index f5c4a40fb16d750c08943e5bac22d460a9e98fd3..d37cf22e9caeb752f6560599f9ae93f63afa970b 100644 (file)
@@ -339,8 +339,10 @@ int vmw_validation_add_resource(struct vmw_validation_context *ctx,
                hash_add_rcu(ctx->sw_context->res_ht, &node->hash.head, node->hash.key);
        }
        node->res = vmw_resource_reference_unless_doomed(res);
-       if (!node->res)
+       if (!node->res) {
+               hash_del_rcu(&node->hash.head);
                return -ESRCH;
+       }
 
        node->first_usage = 1;
        if (!res->dev_priv->has_mob) {