[PATCH xserver] xfree86: fix autoConfigDevice() regression that skipped all but the first driver match

Aaron Plattner aplattner at nvidia.com
Tue May 9 22:08:33 UTC 2017


Commit 112d0d7d01b9 lost the initialization of the variable i in the loop to add
secondary driver matches to the list of configs:

 @@ -398,8 +412,8 @@ autoConfigDevice(GDevPtr preconf_device)

              /* for each other driver found, copy the first screen, insert it
               * into the list of screens and set the driver */
 -            for (i = 1; i < num_matches; i++) {
 -                if (!copyScreen(slp[0].screen, ptr, i, matches[i]))
 +            while (i++ < md.nmatches) {
 +                if (!copyScreen(slp[0].screen, ptr, i, md.matches[i]))
                      return NULL;
              }

This caused only the first match to be added, because an earlier loop sets i =
md.nmatches.

Fix this by reverting the while loop back to a for loop.

Reported-by: Michel Dänzer <michel at daenzer.net>
Reported-by: Peter Hutterer <peter.hutterer at who-t.net>
Reported-by: Eric Anholt <eric at anholt.net>
Cc: Adam Jackson <ajax at redhat.com>
Fixes: 112d0d7d01b9 ("xfree86: Improved autoconfig drivers matching")
Signed-off-by: Aaron Plattner <aplattner at nvidia.com>
---
Resend: forgot to Cc the list.

 hw/xfree86/common/xf86AutoConfig.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index a32c108ff2de..0f4f05de99e0 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -412,7 +412,7 @@ autoConfigDevice(GDevPtr preconf_device)
 
             /* for each other driver found, copy the first screen, insert it
              * into the list of screens and set the driver */
-            while (i++ < md.nmatches) {
+            for (i = 1; i < md.nmatches; i++) {
                 if (!copyScreen(slp[0].screen, ptr, i, md.matches[i]))
                     return NULL;
             }
-- 
2.12.2



More information about the xorg-devel mailing list