35 lines
1.1 KiB
Diff
35 lines
1.1 KiB
Diff
From 779bafa175e6b47da086d84324f95cedd4dc487c Mon Sep 17 00:00:00 2001
|
|
From: Olivier Fourdan <ofourdan@redhat.com>
|
|
Date: Thu, 23 May 2019 16:26:15 +0200
|
|
Subject: [PATCH] Avoid RADEONLeaveVT_KMS() after we left the VT
|
|
|
|
RADEONLeaveVT_KMS() will un-reference its all-black FB in a timer, but
|
|
if we end calling RADEONLeaveVT_KMS() twice in a row, we may try to
|
|
access those after they've been just freed up, and crash.
|
|
|
|
Return early in RADEONLeaveVT_KMS() if the VT semaphore is unset.
|
|
|
|
Bugzilla: https://bugzilla.redhat.com/1674474
|
|
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
|
---
|
|
src/radeon_kms.c | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
|
|
index ff4f8dcf..0d4d2ef4 100644
|
|
--- a/src/radeon_kms.c
|
|
+++ b/src/radeon_kms.c
|
|
@@ -2624,6 +2624,9 @@ void RADEONLeaveVT_KMS(ScrnInfoPtr pScrn)
|
|
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
|
|
"RADEONLeaveVT_KMS\n");
|
|
|
|
+ if (xf86ScreenToScrn(pScreen)->vtSema)
|
|
+ return;
|
|
+
|
|
if (!info->r600_shadow_fb) {
|
|
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
|
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
|
|
--
|
|
2.21.0
|
|
|