diff options
author | root <root@rshg054.dnsready.net> | 2011-11-19 23:14:49 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2011-11-19 23:14:49 +0000 |
commit | a3024f8996981b28ced27466cbd1d4ab40e57324 (patch) | |
tree | 33e1ab51e17de598241385ef355cc67662d9ad74 /extra/xorg-server/git-fixes.patch | |
parent | 126af148530f656a2ed192a852477b2ee97d5397 (diff) |
Sat Nov 19 23:14:48 UTC 2011
Diffstat (limited to 'extra/xorg-server/git-fixes.patch')
-rw-r--r-- | extra/xorg-server/git-fixes.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/extra/xorg-server/git-fixes.patch b/extra/xorg-server/git-fixes.patch index 9629b3040..27da61eca 100644 --- a/extra/xorg-server/git-fixes.patch +++ b/extra/xorg-server/git-fixes.patch @@ -115,3 +115,47 @@ index 31ed505..dce3f84 100644 miSetPixmapDepths (); -- cgit v0.9.0.2-2-gbebe +From 34bb83b9df20ff63dbb147ed661f39efb8bae8e4 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <peter.hutterer@who-t.net> +Date: Mon, 24 Oct 2011 02:00:32 +0000 +Subject: 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> +Reviewed-by: Julien Cristau <jcristau@debian.org> +(cherry picked from commit d7c44a7c9760449bef263413ad3b20f19b1dc95a) +--- +diff --git a/dix/devices.c b/dix/devices.c +index 0ccf252..cbdd4ea 100644 +--- a/dix/devices.c ++++ b/dix/devices.c +@@ -982,6 +982,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 +@@ -1004,6 +1006,8 @@ CloseDownDevices(void) + inputInfo.keyboard = NULL; + inputInfo.pointer = NULL; + XkbDeleteRulesDflts(); ++ ++ OsReleaseSignals(); + } + + /** +-- +cgit v0.9.0.2-2-gbebe |