From 3a65dc4f7f430e158296821962cd8e0ab97a3783 Mon Sep 17 00:00:00 2001 From: Italo Nicola Date: Tue, 24 Jan 2023 14:23:56 +0000 Subject: [PATCH] panfrost: fix off-by-one when exporting format modifiers `count` should not be incremented before the check, because it causes the modifiers array to be filled starting from position 1 instead of 0. This bug causes one less format modifier to be available than would otherwise be expected, which could then lead to a dmabuf query failing in situations where a supported modifier wouldn't be advertised. It also causes garbage data to be advertised as a modifier in position 0 of the array, although this is not very likely to cause issues. Fixes: 2a1217513 ("panfrost: Implement panfrost_query_dmabuf_modifiers") Cc: mesa-stable Signed-off-by: Italo Nicola Reviewed-by: Daniel Stone Reviewed-by: Alyssa Rosenzweig Part-of: (cherry picked from commit 6c446377ff22d981191929de21cedecf519fe70f) --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_screen.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index de4c8deaf38..03036e563ba 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -580,7 +580,7 @@ "description": "panfrost: fix off-by-one when exporting format modifiers", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2a1217513e1c5d881718c2a7f2afb951e1fe6305" }, diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 36f15c2a5d8..a14b34c677d 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -620,14 +620,13 @@ panfrost_walk_dmabuf_modifiers(struct pipe_screen *screen, test_modifier != pan_best_modifiers[i]) continue; - count++; - if (max > (int) count) { modifiers[count] = pan_best_modifiers[i]; if (external_only) external_only[count] = false; } + count++; } *out_count = count;