zink: fix dereference before NULL check

The `sv->image_view` pointer is dereference before checking whether it's
NULL or not.
Check for NULL before dereferencing it to avoid a possible crash.

Fixes: 9de455bc43 ("zink: check for sampler view existence during
zink_rebind_all_images()")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: José Expósito <jexposit@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26140>
(cherry picked from commit 83ed419cd0)
This commit is contained in:
José Expósito
2023-11-10 10:01:46 +01:00
committed by Eric Engestrom
parent e8c975a642
commit 61bd4b332b
2 changed files with 2 additions and 2 deletions

View File

@@ -1334,7 +1334,7 @@
"description": "zink: fix dereference before NULL check",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "9de455bc4323d6bb484c1beed77454381e48b432",
"notes": null

View File

@@ -4846,7 +4846,7 @@ zink_rebind_all_images(struct zink_context *ctx)
for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
for (unsigned j = 0; j < ctx->di.num_sampler_views[i]; j++) {
struct zink_sampler_view *sv = zink_sampler_view(ctx->sampler_views[i][j]);
if (!sv || sv->image_view->base.texture->target == PIPE_BUFFER || !sv->image_view)
if (!sv || !sv->image_view || sv->image_view->base.texture->target == PIPE_BUFFER)
continue;
struct zink_resource *res = zink_resource(sv->image_view->base.texture);
if (res->obj != sv->image_view->obj) {