[igt-dev] [i-g-t] tests/intel/kms_big_joiner: Fix dangling pointer

Bhanuprakash Modem bhanuprakash.modem at intel.com
Tue Nov 21 05:59:00 UTC 2023


Fix the usage of dangling pointer:
Stack trace:
 #0 [fatal_sig_handler+0x175]
 #1 [__sigaction+0x50]
 #2 [__igt_unique____real_main220+0x32d]
 #3 [main+0x2d]
 #4 [__libc_init_first+0x90]
 #5 [__libc_start_main+0x80]
 #6 [_start+0x25]

Fixes: a6ca34472 tests/i915/kms_big_joiner: Fix Bigjoiner checks
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
---
 tests/intel/kms_big_joiner.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index 2f81204f5..3b6dc530b 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -221,7 +221,7 @@ igt_main
 {
 	data_t data;
 	igt_output_t *output;
-	drmModeModeInfo *mode;
+	drmModeModeInfo mode;
 	int valid_output = 0, i, count = 0, j = 0;
 	uint16_t width = 0, height = 0;
 	enum pipe pipe_seq[IGT_MAX_PIPES];
@@ -243,17 +243,17 @@ igt_main
 			 * Bigjoiner will come in to the picture when the
 			 * resolution > 5K or clock > max-dot-clock.
 			 */
-			found = (bigjoiner_mode_found(connector, sort_drm_modes_by_res_dsc, mode) ||
-				 bigjoiner_mode_found(connector, sort_drm_modes_by_clk_dsc, mode)) ?
+			found = (bigjoiner_mode_found(connector, sort_drm_modes_by_res_dsc, &mode) ||
+				 bigjoiner_mode_found(connector, sort_drm_modes_by_clk_dsc, &mode)) ?
 					true : false;
 
 			if (found) {
 				data.output[count].output_id = output->id;
-				memcpy(&data.output[count].mode, mode, sizeof(drmModeModeInfo));
+				memcpy(&data.output[count].mode, &mode, sizeof(drmModeModeInfo));
 				count++;
 
-				width = max(width, mode->hdisplay);
-				height = max(height, mode->vdisplay);
+				width = max(width, mode.hdisplay);
+				height = max(height, mode.vdisplay);
 			}
 			valid_output++;
 		}
@@ -290,9 +290,9 @@ igt_main
 			if (data.output[0].output_id != output->id)
 				continue;
 
-			mode = &data.output[0].mode;
+			mode = data.output[0].mode;
 			igt_output_set_pipe(output, data.pipe1);
-			igt_output_override_mode(output, mode);
+			igt_output_override_mode(output, &mode);
 
 			igt_dynamic_f("pipe-%s-%s",
 				      kmstest_pipe_name(data.pipe1),
@@ -311,10 +311,10 @@ igt_main
 				for_each_connected_output(&data.display, output) {
 					if (data.output[0].output_id == output->id) {
 						first_output = output;
-						mode = &data.output[0].mode;
+						mode = data.output[0].mode;
 
 						igt_output_set_pipe(output, data.pipe1);
-						igt_output_override_mode(output, mode);
+						igt_output_override_mode(output, &mode);
 					} else if (second_output == NULL) {
 						second_output = output;
 						igt_output_set_pipe(output, data.pipe2);
-- 
2.40.0



More information about the igt-dev mailing list