Accepting request 341481 from X11:XOrg

- Update to version 1.17.4:
  Minor brown-bag release. The important fix here is Martin's
  clientsWritable change which fixes a crash when built against
  xproto 7.0.28.
- supersedes u_0001-os-make-sure-the-clientsWritable-fd_set-is-initializ.patch

- Update to version 1.17.3:
  Various bugfixes across the board.  The most visible changes
  include fixing GLX extension setup under Xwayland and other
  non-Xorg servers (enabling core contexts in more scenarios),
  and various stability fixes to glamor and the Present extension.
- supersededs the following patches:
  * u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
  * u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
- removed evdev xorg.conf.d snippet since it's meanwhile shipped with
  evdev driver itself (since version 2.10.0)

OBS-URL: https://build.opensuse.org/request/show/341481
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=318
This commit is contained in:
Stephan Kulow 2015-10-30 20:52:38 +00:00 committed by Git OBS Bridge
commit cd11eb7c76
7 changed files with 33 additions and 183 deletions

View File

@ -1,63 +0,0 @@
From 7cc7ffd25d5e50b54cb942d07d4cb160f20ff9c5 Mon Sep 17 00:00:00 2001
From: Martin Peres <martin.peres@linux.intel.com>
Date: Fri, 17 Jul 2015 17:21:26 +0300
Subject: [PATCH] os: make sure the clientsWritable fd_set is initialized
before use
In WaitForSomething(), the fd_set clientsWritable may be used unitialized when
the boolean AnyClientsWriteBlocked is set in the WakeupHandler(). This leads to
a crash in FlushAllOutput() after x11proto's commit
2c94cdb453bc641246cc8b9a876da9799bee1ce7.
The problem did not manifest before because both the XFD_SIZE and the maximum
number of clients were set to 256. As the connectionTranslation table was
initalized for the 256 clients to 0, the test on the index not being 0 was
aborting before dereferencing the client #0.
As of commit 2c94cdb453bc641246cc8b9a876da9799bee1ce7 in x11proto, the XFD_SIZE
got bumped to 512. This lead the OutputPending fd_set to have any fd above 256
to be uninitialized which in turns lead to reading an index after the end of
the ConnectionTranslation table. This index would then be used to find the
client corresponding to the fd marked as pending writes and would also result
to an out-of-bound access which would usually be the fatal one.
Fix this by zeroing the clientsWritable fd_set at the beginning of
WaitForSomething(). In this case, the bottom part of the loop, which would
indirectly call FlushAllOutput, will not do any work but the next call to
select will result in the execution of the right codepath. This is exactly what
we want because we need to know the writable clients before handling them. In
the end, it also makes sure that the fds above MaxClient are initialized,
preventing the crash in FlushAllOutput().
Thanks to everyone involved in tracking this one down!
Reported-by: Karol Herbst <freedesktop@karolherbst.de>
Reported-by: Tobias Klausmann <tobias.klausmann@mni.thm.de>
Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
Tested-by: Martin Peres <martin.peres@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91316
Cc: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: Martin Peres <martin.peres@linux.intel.com>
Cc: Olivier Fourdan <ofourdan@redhat.com
Cc: Adam Jackson <ajax@redhat.com>
Cc: Alan Coopersmith <alan.coopersmith@oracle.com
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
os/WaitFor.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/os/WaitFor.c b/os/WaitFor.c
index 431f1a6..993c14e 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -158,6 +158,7 @@ WaitForSomething(int *pClientsReady)
Bool someReady = FALSE;
FD_ZERO(&clientsReadable);
+ FD_ZERO(&clientsWritable);
if (nready)
SmartScheduleStopTimer();
--
2.4.5

View File

@ -1,81 +0,0 @@
From: Egbert Eich <eich@suse.de>
Date: Sat May 24 02:02:32 2014 +0200
Subject: [PATCH]CloseConsole: Don't report FatalError() when shutting down
Patch-mainline: to be upstreamed
Git-commit: 4edf1fd15b9d2746f1f83165ab45efbe35af8de8
Git-repo:
References: bnc#879666, bnc#879489
Signed-off-by: Egbert Eich <eich@suse.com>
When encountering a problem while closing the console, don't report this
as a FatalError(). FatalError() will terminate the Xserver - no use calling
it when terminating anyway. Since FatalError() will call CloseConsole()
we would only come here again.
Signed-off-by: Egbert Eich <eich@suse.de>
---
hw/xfree86/os-support/linux/lnx_init.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
index bcb039f..c46bca9 100644
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -63,17 +63,24 @@ drain_console(int fd, void *closure)
}
static void
-switch_to(int vt, const char *from)
+switch_to(int vt, const char *from, Bool fatal)
{
int ret;
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
- if (ret < 0)
- FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
-
+ if (ret < 0) {
+ if (fatal)
+ FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
+ else
+ xf86Msg(X_WARNING, "%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
+ }
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
- if (ret < 0)
- FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ if (ret < 0) {
+ if (fatal)
+ FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ else
+ xf86Msg(X_WARNING, "%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ }
}
#pragma GCC diagnostic push
@@ -194,7 +201,7 @@ xf86OpenConsole(void)
/*
* now get the VT. This _must_ succeed, or else fail completely.
*/
- switch_to(xf86Info.vtno, "xf86OpenConsole");
+ switch_to(xf86Info.vtno, "xf86OpenConsole", TRUE);
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT));
if (ret < 0)
@@ -255,7 +262,7 @@ xf86OpenConsole(void)
else { /* serverGeneration != 1 */
if (!xf86Info.ShareVTs && xf86Info.autoVTSwitch) {
/* now get the VT */
- switch_to(xf86Info.vtno, "xf86OpenConsole");
+ switch_to(xf86Info.vtno, "xf86OpenConsole", TRUE);
}
}
}
@@ -305,7 +312,7 @@ xf86CloseConsole(void)
* Perform a switch back to the active VT when we were started
*/
if (activeVT >= 0) {
- switch_to(activeVT, "xf86CloseConsole");
+ switch_to(activeVT, "xf86CloseConsole", FALSE);
activeVT = -1;
}
}

View File

@ -1,24 +0,0 @@
From 6d0da2a4d5c31d055674f482d3d1afe308ed8eeb Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@suse.com>
Date: Mon, 7 Oct 2013 17:55:30 +0300
Subject: [PATCH] randr: Allow RRSelectInput for ProviderChange and
ResourceChange events.
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Michal Srb <msrb@suse.com>
diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
index 7fbc9f0..f050d38 100644
--- a/randr/rrdispatch.c
+++ b/randr/rrdispatch.c
@@ -92,7 +92,9 @@ ProcRRSelectInput(ClientPtr client)
RRCrtcChangeNotifyMask |
RROutputChangeNotifyMask |
RROutputPropertyNotifyMask |
- RRProviderPropertyNotifyMask)) {
+ RRProviderChangeNotifyMask |
+ RRProviderPropertyNotifyMask |
+ RRResourceChangeNotifyMask)) {
ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f61120612728f2c5034671d0ca3e2273438c60aba93b3dda4a8aa40e6a257993
size 5767983

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c4b45c116a812a996eb432d8508cf26c2ec8c3916ff2a50781796882f8d6457
size 5791384

View File

@ -1,3 +1,26 @@
-------------------------------------------------------------------
Wed Oct 28 17:32:07 UTC 2015 - sndirsch@suse.com
- Update to version 1.17.4:
Minor brown-bag release. The important fix here is Martin's
clientsWritable change which fixes a crash when built against
xproto 7.0.28.
- supersedes u_0001-os-make-sure-the-clientsWritable-fd_set-is-initializ.patch
-------------------------------------------------------------------
Wed Oct 28 16:23:39 UTC 2015 - sndirsch@suse.com
- Update to version 1.17.3:
Various bugfixes across the board.  The most visible changes
include fixing GLX extension setup under Xwayland and other
non-Xorg servers (enabling core contexts in more scenarios),
and various stability fixes to glamor and the Present extension.
- supersededs the following patches:
* u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
* u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
- removed evdev xorg.conf.d snippet since it's meanwhile shipped with
evdev driver itself (since version 2.10.0)
-------------------------------------------------------------------
Fri Sep 25 10:06:45 UTC 2015 - eich@suse.com

View File

@ -26,7 +26,7 @@
Name: xorg-x11-server
%define dirsuffix 1.17.2
%define dirsuffix 1.17.4
Summary: X
License: MIT
@ -168,12 +168,10 @@ Patch100: u_fbdevhw.diff
Patch101: u_confine_to_shape.diff
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
Patch102: u_x86emu-include-order.patch
Patch103: u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
Patch104: u_xorg-server-xdmcp.patch
Patch105: ux_xserver_xvfb-randr.patch
# PATCH-FIX-UPSTREAM u_exa-only-draw-valid-trapezoids.patch bnc#853846 msrb@suse.com -- Fixes possible crash of server using invalid trapezoids. 2013-12-12 patch is waiting in mailing list to be upstreamed.
Patch106: u_exa-only-draw-valid-trapezoids.patch
Patch111: u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch
Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch
Patch114: u_ad-hoc-fix-for-mmap-s-truncated-offset-parameter-on-.patch
@ -194,8 +192,6 @@ Patch1162: b_cache-xkbcomp-output-for-fast-start-up.patch
Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
Patch1222: b_sync-fix.patch
Patch1300: u_0001-os-make-sure-the-clientsWritable-fd_set-is-initializ.patch
%description
This package contains the X.Org Server.
@ -269,12 +265,10 @@ cp %{SOURCE90} .
%patch100
%patch101
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch111 -p1
%patch112 -p1
%patch114 -p1
@ -298,8 +292,6 @@ cp %{SOURCE90} .
### patch222 might not be applicable anymore
#%patch1222 -p1
%patch1300 -p1
find . -type f \! -name '*.orig' \! -path ./source-file-list > source-file-list
%build
@ -373,9 +365,12 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/X11
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
%if 0%{?suse_version} > 1120
# get rid of evdev config file, since it's meanwhile shipped with
# evdev driver itself (since 2.10.0)
rm -f %{buildroot}/%{_datadir}/X11/xorg.conf.d/10-evdev.conf
%ifnarch s390 s390x
mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d
cp %{buildroot}/%{_datadir}/X11/xorg.conf.d/10-evdev.conf %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
cp %{buildroot}/%{_datadir}/X11/xorg.conf.d/10-quirks.conf %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
%endif
%endif
%if 0%{?suse_version} < 1315
@ -386,7 +381,7 @@ install -m 644 $RPM_SOURCE_DIR/README.updates %{buildroot}%{_libdir}/xorg/module
rm -f %{buildroot}%{_datadir}/aclocal/*.m4
%endif
%ifarch s390 s390x
rm -f %{buildroot}%{_sysconfdir}/X11/10-evdev.conf
rm -f %{buildroot}%{_sysconfdir}/X11/10-quirks.conf
mkdir -p %{buildroot}%{_includedir}/xorg
install -m 644 include/list.h \
%{buildroot}%{_includedir}/xorg
@ -456,7 +451,7 @@ fi
%ifnarch s390 s390x
%if 0%{?suse_version} > 1120
%dir %{_sysconfdir}/X11/xorg.conf.d
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-evdev.conf
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-quirks.conf
%dir %{_datadir}/X11/xorg.conf.d
%{_datadir}/X11/xorg.conf.d/10-*.conf
%endif