| From 00ac99ed79808d4f67b69c054966e4dce9ddf28e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 26 Sep 2025 14:54:25 -0500 |
| Subject: drm/vmwgfx: Fix Use-after-free in validation |
| |
| From: Ian Forbes <ian.forbes@broadcom.com> |
| |
| [ 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 | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c |
| index f5c4a40fb16d7..d37cf22e9caeb 100644 |
| --- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c |
| +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c |
| @@ -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) { |
| -- |
| 2.51.0 |
| |