diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmscursor.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmscursor.cpp
index dda61e3901d1ad05e8c55ccb3d392559638067d8..97ea3f1eca04d5da9a507e243607ba505667adea 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmscursor.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmscursor.cpp
@@ -100,8 +100,10 @@ QEglFSKmsCursor::~QEglFSKmsCursor()
         drmModeMoveCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id, 0, 0);
     }
 
-    gbm_bo_destroy(m_bo);
-    m_bo = Q_NULLPTR;
+    if (m_bo) {
+        gbm_bo_destroy(m_bo);
+        m_bo = Q_NULLPTR;
+    }
 }
 
 void QEglFSKmsCursor::pointerEvent(const QMouseEvent &event)
@@ -114,6 +116,9 @@ void QEglFSKmsCursor::changeCursor(QCursor *windowCursor, QWindow *window)
 {
     Q_UNUSED(window);
 
+    if (!m_bo)
+        return;
+
     if (!m_visible)
         return;