[PATCH weston] compositor-fbdev: fix VT switching crash

Pekka Paalanen ppaalanen at gmail.com
Wed Aug 19 04:03:58 PDT 2015

From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

This bug was introduced in 954f183e2f9891b241c1efc0ea61ed56019a4326.

The session_notify() data was accidentally cast to fbdev_backend while
it is weston_compositor. This was possibly due to the code before the
mentioned commit casting data directly to fbdev_compositor without going
through the intended type first, which worked only because
weston_compositor was the first member in struct fbdev_compositor.

Fix the casts to be the right way around.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91654
Cc: nerdopolis1 at verizon.net
Cc: Giulio Camuffo <giuliocamuffo at gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
 src/compositor-fbdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index 051a381..a5c7947 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -756,8 +756,8 @@ fbdev_backend_destroy(struct weston_compositor *base)
 static void
 session_notify(struct wl_listener *listener, void *data)
-	struct fbdev_backend *backend = data;
-	struct weston_compositor *compositor = backend->compositor;
+	struct weston_compositor *compositor = data;
+	struct fbdev_backend *backend = to_fbdev_backend(compositor);
 	struct weston_output *output;
 	if (compositor->session_active) {

More information about the wayland-devel mailing list