Block signals when removing all input devices #737031
This commit is contained in:
parent
5e795c87f3
commit
70574d9ce1
46
0001-dix-block-signals-when-closing-all-devices.patch
Normal file
46
0001-dix-block-signals-when-closing-all-devices.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From 01e37883438b0bedf511f0b56d31943ad2a192f5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Mon, 24 Oct 2011 12:00:32 +1000
|
||||||
|
Subject: [PATCH] dix: block signals when closing all devices
|
||||||
|
|
||||||
|
When closing down all devices, we manually unset master for all attached
|
||||||
|
devices, but the device's sprite info still points to the master's sprite
|
||||||
|
info. This leaves us a window where the master is freed already but the
|
||||||
|
device isn't yet. A signal during that window causes dereference of the
|
||||||
|
already freed spriteInfo in mieqEnqueue's EnqueueScreen macro.
|
||||||
|
|
||||||
|
Simply block signals when removing all devices. It's not like we're really
|
||||||
|
worrying about high-responsive input at this stage.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=737031
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
dix/devices.c | 4 ++++
|
||||||
|
1 files changed, 4 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dix/devices.c b/dix/devices.c
|
||||||
|
index 63454fe..4a525d5 100644
|
||||||
|
--- a/dix/devices.c
|
||||||
|
+++ b/dix/devices.c
|
||||||
|
@@ -971,6 +971,8 @@ CloseDownDevices(void)
|
||||||
|
{
|
||||||
|
DeviceIntPtr dev;
|
||||||
|
|
||||||
|
+ OsBlockSignals();
|
||||||
|
+
|
||||||
|
/* Float all SDs before closing them. Note that at this point resources
|
||||||
|
* (e.g. cursors) have been freed already, so we can't just call
|
||||||
|
* AttachDevice(NULL, dev, NULL). Instead, we have to forcibly set master
|
||||||
|
@@ -993,6 +995,8 @@ CloseDownDevices(void)
|
||||||
|
inputInfo.keyboard = NULL;
|
||||||
|
inputInfo.pointer = NULL;
|
||||||
|
XkbDeleteRulesDflts();
|
||||||
|
+
|
||||||
|
+ OsReleaseSignals();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
--
|
||||||
|
1.7.7
|
||||||
|
|
@ -30,7 +30,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.11.1
|
Version: 1.11.1
|
||||||
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
Release: 2%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -87,6 +87,9 @@ Patch7007: xserver-1.10.99.1-test.patch
|
|||||||
# Submitted to upstream but not merged for 1.11
|
# Submitted to upstream but not merged for 1.11
|
||||||
Patch7009: xserver-1.10.99-config-add-udev-systemd-multi-seat-support.patch
|
Patch7009: xserver-1.10.99-config-add-udev-systemd-multi-seat-support.patch
|
||||||
|
|
||||||
|
# Bug 737031 - [Crestline] Coredump when doing exit
|
||||||
|
Patch7010: 0001-dix-block-signals-when-closing-all-devices.patch
|
||||||
|
|
||||||
|
|
||||||
%define moduledir %{_libdir}/xorg/modules
|
%define moduledir %{_libdir}/xorg/modules
|
||||||
%define drimoduledir %{_libdir}/dri
|
%define drimoduledir %{_libdir}/dri
|
||||||
@ -549,6 +552,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 24 2011 Peter Hutterer <peter.hutterer@redhat.com> 1.11.1-2
|
||||||
|
- Block signals when removing all input devices #737031
|
||||||
|
|
||||||
* Thu Oct 13 2011 Adam Jackson <ajax@redhat.com>
|
* Thu Oct 13 2011 Adam Jackson <ajax@redhat.com>
|
||||||
- Drop some Requires >= on things where we had newer versions in F14.
|
- Drop some Requires >= on things where we had newer versions in F14.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user