[oe-commits] Ross Burton : xserver-xorg: don't close already-closed connections
git at git.openembedded.org
git at git.openembedded.org
Mon Mar 9 17:59:42 UTC 2015
Module: openembedded-core.git
Branch: master-next
Commit: 04ffd02a14f5e0cd2ce0288b589d4c4a0120e2f4
URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=04ffd02a14f5e0cd2ce0288b589d4c4a0120e2f4
Author: Ross Burton <ross.burton at intel.com>
Date: Mon Mar 9 17:40:37 2015 +0000
xserver-xorg: don't close already-closed connections
On shutdown xserver was closing connections that were already closed, resulting
in a segfault.
Signed-off-by: Ross Burton <ross.burton at intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
.../xorg-xserver/xserver-xorg/xtrans.patch | 38 ++++++++++++++++++++++
.../xorg-xserver/xserver-xorg_1.16.3.bb | 1 +
2 files changed, 39 insertions(+)
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/xtrans.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/xtrans.patch
new file mode 100644
index 0000000..e6dba04
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg/xtrans.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Submitted
+Signed-off-by: Ross Burton <ross.burton at intel.com>
+
+Since _XSERVTransClose frees the connection pointer passed to it,
+remove that pointer from the array, so we don't try to double free it
+if we come back into CloseWellKnownConnections again.
+
+Should fix https://bugzilla.yoctoproject.org/show_bug.cgi?id=6665 in which
+the shutdown section of the main() loop called CloseWellKnownConnections()
+and then moved on to ddxGiveUp(), which failed to release the VT and thus
+called AbortServer(), which called CloseWellKnownConnections() again.
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
+Reviewed-by: Adam Jackson <ajax at redhat.com>
+---
+ os/connection.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/os/connection.c b/os/connection.c
+index ddfe50a..7ff44e1 100644
+--- a/os/connection.c
++++ b/os/connection.c
+@@ -513,8 +513,13 @@ CloseWellKnownConnections(void)
+ {
+ int i;
+
+- for (i = 0; i < ListenTransCount; i++)
+- _XSERVTransClose(ListenTransConns[i]);
++ for (i = 0; i < ListenTransCount; i++) {
++ if (ListenTransConns[i] != NULL) {
++ _XSERVTransClose(ListenTransConns[i]);
++ ListenTransConns[i] = NULL;
++ }
++ }
++ ListenTransCount = 0;
+ }
+
+ static void
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.16.3.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.16.3.bb
index 347ce3b..9d9ede2 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.16.3.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.16.3.bb
@@ -5,6 +5,7 @@ SRC_URI += "file://fix_open_max_preprocessor_error.patch \
file://xorg-CVE-2013-6424.patch \
file://xshmfence-option.patch \
file://Fix-subwindow-in-Xi-emulated-events.patch \
+ file://xtrans.patch \
"
SRC_URI[md5sum] = "afd93977235584a9caa7528a737c1b52"
More information about the Openembedded-commits
mailing list