From 9d50d529f35b5ec2e9300bcff55fca1da84f75ec Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Mon, 30 May 2016 21:45:47 +0800 Subject: [PATCH 059/117] drm: fix multi GPU drmGetDevices only return one device When multi GPU present, after drmFoldDuplicatedDevices merge same busid deveces, two different devices may be seperated by zero in local_devices[]. The for loop should check all local_devices instead of exit when meet a zero. Change-Id: I0b655f795727492bd7886cb60e07832bd9849d89 Signed-off-by: Qiang Yu Reviewed-by Jim Qu --- xf86drm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xf86drm.c b/xf86drm.c index 5f587d9..6689f7c 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -3267,7 +3267,10 @@ int drmGetDevices(drmDevicePtr devices[], int max_devices) drmFoldDuplicatedDevices(local_devices, node_count); device_count = 0; - for (i = 0; i < node_count && local_devices[i]; i++) { + for (i = 0; i < node_count; i++) { + if (!local_devices[i]) + continue; + if ((devices != NULL) && (device_count < max_devices)) devices[device_count] = local_devices[i]; else -- 2.7.4