[igt-dev] [PATCH i-g-t v2] tests/kms_writeback: Iterate over only non-null pipes

Rohith Iyer quic_rohiiyer at quicinc.com
Thu Jun 9 21:45:04 UTC 2022


Currently, kms_writeback_get_output iterates over all entries of
display->pipes, regardless of if the pipe is valid. This could lead to a
null dereference in igt_output_set_pipe() as the loop does not check for
null pipes. To avoid this issue, use the for_each_pipe method to iterate
over only non-null pipes.

Signed-off-by: Rohith Iyer <quic_rohiiyer at quicinc.com>
Reviewed-by: Petri Latvala <petri.latvala at intel.com>
---
 tests/kms_writeback.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index b6c815db..6efc72df 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -110,21 +110,21 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output)
 static igt_output_t *kms_writeback_get_output(igt_display_t *display)
 {
 	int i;
+	enum pipe pipe;
 
 	for (i = 0; i < display->n_outputs; i++) {
 		igt_output_t *output = &display->outputs[i];
-		int j;
 
 		if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK)
 			continue;
 
-		for (j = 0; j < igt_display_get_n_pipes(display); j++) {
-			igt_output_set_pipe(output, j);
+		for_each_pipe(display, pipe) {
+			igt_output_set_pipe(output, pipe);
 
 			if (check_writeback_config(display, output)) {
 				igt_debug("Using connector %u:%s on pipe %d\n",
 					  output->config.connector->connector_id,
-					  output->name, j);
+					  output->name, pipe);
 				return output;
 			}
 		}
-- 
2.17.1



More information about the igt-dev mailing list