[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