weston: Re-order gbm destruction at DRM-backend tear down

Fixes an annoying segfault seen on rpi4 when launching weston during
boot especially using systemd service or sysvinit script, if weston is
launched manually on VT, it works fine. This backport specifically
addresses the issue described above.

For more details see [1]

[1] https://gitlab.freedesktop.org/wayland/weston/-/issues/314

(From OE-Core rev: 922ed57043282cdf0c264d42f16362bd8d0890b2)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 74e0249af85782af436791d1339ce864536d2022)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj
2021-08-21 13:08:09 -07:00
committed by Richard Purdie
parent 0f966a0ce6
commit 3233145fe1
2 changed files with 51 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
From c8bfa1f8d576cdc6d515dbbac36c48c6166be0d5 Mon Sep 17 00:00:00 2001
From: Marius Vlad <marius.vlad@collabora.com>
Date: Thu, 1 Apr 2021 00:12:00 +0300
Subject: [PATCH] libweston/backend-drm: Re-order gbm destruction at DRM-backend tear down
Tearing down the drm-backend when there are no input devices, would call
for the gbm device destruction before compositor shutdown. The latter
would call into the renderer detroy function and assume that the
EGLDisplay, which was created using the before-mentioned gbm device, is
still available. This patch re-orders the gbm destruction after the
compositor shutdown when no one would make use of it.
Fixes: #314
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/d171c7b3ba346c4d0bd6494f45ebf0be3c3cc5fb]
---
libweston/backend-drm/drm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
index 2780f3b..fbcfeca 100644
--- a/libweston/backend-drm/drm.c
+++ b/libweston/backend-drm/drm.c
@@ -3025,10 +3025,6 @@ err_drm_source:
err_udev_input:
udev_input_destroy(&b->input);
err_sprite:
-#ifdef BUILD_DRM_GBM
- if (b->gbm)
- gbm_device_destroy(b->gbm);
-#endif
destroy_sprites(b);
err_udev_dev:
udev_device_unref(drm_device);
@@ -3038,6 +3034,10 @@ err_launcher:
weston_launcher_destroy(compositor->launcher);
err_compositor:
weston_compositor_shutdown(compositor);
+#ifdef BUILD_DRM_GBM
+ if (b->gbm)
+ gbm_device_destroy(b->gbm);
+#endif
free(b);
return NULL;
}
--
2.33.0

View File

@@ -12,6 +12,7 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \
file://0001-meson.build-fix-incorrect-header.patch \
file://0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch \
"
SRC_URI_append_libc-musl = " file://dont-use-plane-add-prop.patch "