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

Aaron Plattner aplattner at nvidia.com
Wed May 10 00:23:32 UTC 2017


On 05/09/2017 04:51 PM, Eric Anholt wrote:
> Aaron Plattner <aplattner at nvidia.com> writes:
> 
>> 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.
> 
> This is a pretty clear unintended behavior change.
> 
> Tested-by: Eric Anholt <eric at anholt.net>
> 
> Since we collided on me pushing the revert, shall I squash this into a
> re-cherry-pick of the change as a v2?

Sounds good to me.

-- Aaron


nvpublic


More information about the xorg-devel mailing list