xorg-x11-drv-ati/SOURCES/0001-Avoid-RADEONLeaveVT_KM...

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