From 5dac9c10807674704be260fc12d25b6f2550660b Mon Sep 17 00:00:00 2001 From: Ander Conselvan de Oliveira Date: Wed, 27 May 2015 10:25:09 +0300 Subject: [PATCH] testdisplay: Fix segfault when first modeset and there's only one mode When testing all modes on a connector with a single mode, if the modeset fails, the code attempts to remove fb_info[-1], because old_fb still has the inital value of -1. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90625 Signed-off-by: Ander Conselvan de Oliveira --- tests/testdisplay.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/testdisplay.c b/tests/testdisplay.c index 9068a95..3dbb638 100644 --- a/tests/testdisplay.c +++ b/tests/testdisplay.c @@ -367,6 +367,7 @@ set_mode(struct connector *c) if (drmModeSetCrtc(drm_fd, c->crtc, fb_id, 0, 0, &c->id, 1, &c->mode)) { igt_warn("failed to set mode (%dx%d@%dHz): %s\n", width, height, c->mode.vrefresh, strerror(errno)); + igt_remove_fb(drm_fd, &fb_info[current_fb]); continue; } @@ -390,7 +391,7 @@ set_mode(struct connector *c) } } - if (test_all_modes) + if (test_all_modes && old_fb != -1) igt_remove_fb(drm_fd, &fb_info[old_fb]); drmModeFreeEncoder(c->encoder); -- 2.1.0