[mutter] kms: drmModeGetCrtc may fail



commit 578ff2246411e9dbd4f14cbc34e03ebe173de8d0
Author: Hans de Goede <hdegoede redhat com>
Date:   Fri Aug 2 22:57:28 2019 +0200

    kms: drmModeGetCrtc may fail
    
    drmModeGetCrtc may fail and return NULL. This will trigger when
    meta_kms_crtc_update_state gets called from meta_kms_update_states_sync
    after a GPU has been unplugged leading to a NULL pointer deref causing
    a crash.
    
    This commit fixes this by checking for NULL and clearing the current_state
    when NULL is returned.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/713

 src/backends/native/meta-kms-crtc.c | 7 +++++++
 1 file changed, 7 insertions(+)
---
diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c
index b07a6e7d5..2b0f5385a 100644
--- a/src/backends/native/meta-kms-crtc.c
+++ b/src/backends/native/meta-kms-crtc.c
@@ -132,6 +132,13 @@ meta_kms_crtc_update_state (MetaKmsCrtc *crtc)
   impl_device = meta_kms_device_get_impl_device (crtc->device);
   drm_crtc = drmModeGetCrtc (meta_kms_impl_device_get_fd (impl_device),
                              crtc->id);
+  if (!drm_crtc)
+    {
+      crtc->current_state.rect = (MetaRectangle) { };
+      crtc->current_state.is_drm_mode_valid = FALSE;
+      return;
+    }
+
   meta_kms_crtc_read_state (crtc, impl_device, drm_crtc);
   drmModeFreeCrtc (drm_crtc);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]