diff options
author | Ross Burton <ross.burton@intel.com> | 2015-03-09 17:40:37 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-03-09 17:58:59 +0000 |
commit | 04ffd02a14f5e0cd2ce0288b589d4c4a0120e2f4 (patch) | |
tree | d089cbf6da2795c922a169e8d3f02f9e1593bf66 | |
parent | 7ec29a4dbcc62a928c517bd968c499e325580bfe (diff) | |
download | openembedded-core-contrib-04ffd02a14f5e0cd2ce0288b589d4c4a0120e2f4.tar.gz |
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@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-graphics/xorg-xserver/xserver-xorg/xtrans.patch | 38 | ||||
-rw-r--r-- | meta/recipes-graphics/xorg-xserver/xserver-xorg_1.16.3.bb | 1 |
2 files changed, 39 insertions, 0 deletions
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 00000000000..e6dba049194 --- /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@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@oracle.com> +Reviewed-by: Adam Jackson <ajax@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 347ce3ba2ae..9d9ede2afca 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" |