gpu-kms: Don't crash if drmModeGetResources returns NULL
authorAaron Plattner <aplattner@nvidia.com>
Thu, 19 Jul 2018 17:51:34 +0000 (10:51 -0700)
committerSimon McVittie <smcv@debian.org>
Tue, 31 Jul 2018 14:35:03 +0000 (15:35 +0100)
DRM drivers can be opened by meta_launcher_open_restricted() even if they don't
implement modesetting. However, drmModeGetResources() will return NULL.

Check whether that happened in meta_gpu_kms_new() and return with an error
instead of crashing.

Fixes #223.

Applied-Upstream: https://gitlab.gnome.org/GNOME/mutter/commit/62660bbd15
Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/223
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1767956

Gbp-Pq: Name gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch

src/backends/native/meta-gpu-kms.c

index 613a60705f6373e6a2ce804ff2bc7189c29e5f27..259cd71227900de42d37cc7e5a5b522e14b3d533 100644 (file)
@@ -801,6 +801,13 @@ meta_gpu_kms_new (MetaMonitorManagerKms  *monitor_manager_kms,
    */
   drm_resources = drmModeGetResources (kms_fd);
 
+  if (!drm_resources)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "No resources");
+      meta_launcher_close_restricted (launcher, kms_fd);
+      return NULL;
+    }
+
   n_connectors = drm_resources->count_connectors;
 
   drmModeFreeResources (drm_resources);