summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariusz Ceier <mceier+mesa-dev@gmail.com>2018-07-29 10:20:14 +0200
committerMichel Dänzer <michel.daenzer@amd.com>2018-07-30 12:21:32 +0200
commit4519db23ef716f37f804485f50955c26c38a6ae6 (patch)
tree284817499a8eaaebbba4c815d024d00f3053ce2d
parent9c979e0ec4052acc93da94f477c3d3d6139ebd31 (diff)
downloadexternal_libdrm-4519db23ef716f37f804485f50955c26c38a6ae6.tar.gz
external_libdrm-4519db23ef716f37f804485f50955c26c38a6ae6.tar.bz2
external_libdrm-4519db23ef716f37f804485f50955c26c38a6ae6.zip
xf86drm: Fix error path in drmGetDevice2
In drmGetDevice2 when no local device is found or when drm_device_has_rdev filters out all devices, *device might be left uninitialized causing drmGetDevice2 to not return error - since it's only returned when *device == NULL. Above leads to crash in the firefox in system with amdgpu. With this change firefox displays: libGL error: MESA-LOADER: failed to retrieve device information libGL error: unable to load driver: amdgpu_dri.so libGL error: driver pointer missing libGL error: failed to load driver: amdgpu libGL error: MESA-LOADER: failed to retrieve device information libGL error: unable to load driver: amdgpu_dri.so libGL error: driver pointer missing libGL error: failed to load driver: amdgpu and doesn't crash. Bugzilla: https://bugs.freedesktop.org/107384 Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Mariusz Ceier <mceier+mesa-dev@gmail.com>
-rw-r--r--xf86drm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 1e621e99a..336d64de2 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -3935,6 +3935,8 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device)
drmFoldDuplicatedDevices(local_devices, node_count);
+ *device = NULL;
+
for (i = 0; i < node_count; i++) {
if (!local_devices[i])
continue;