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:
commit
cd11eb7c76
@ -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
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -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);
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:f61120612728f2c5034671d0ca3e2273438c60aba93b3dda4a8aa40e6a257993
|
|
||||||
size 5767983
|
|
3
xorg-server-1.17.4.tar.bz2
Normal file
3
xorg-server-1.17.4.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:0c4b45c116a812a996eb432d8508cf26c2ec8c3916ff2a50781796882f8d6457
|
||||||
|
size 5791384
|
@ -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
|
Fri Sep 25 10:06:45 UTC 2015 - eich@suse.com
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
|
|
||||||
%define dirsuffix 1.17.2
|
%define dirsuffix 1.17.4
|
||||||
|
|
||||||
Summary: X
|
Summary: X
|
||||||
License: MIT
|
License: MIT
|
||||||
@ -168,12 +168,10 @@ Patch100: u_fbdevhw.diff
|
|||||||
Patch101: u_confine_to_shape.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
|
# 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
|
Patch102: u_x86emu-include-order.patch
|
||||||
Patch103: u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
|
|
||||||
Patch104: u_xorg-server-xdmcp.patch
|
Patch104: u_xorg-server-xdmcp.patch
|
||||||
Patch105: ux_xserver_xvfb-randr.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.
|
# 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
|
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
|
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
|
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
|
Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
||||||
Patch1222: b_sync-fix.patch
|
Patch1222: b_sync-fix.patch
|
||||||
|
|
||||||
Patch1300: u_0001-os-make-sure-the-clientsWritable-fd_set-is-initializ.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains the X.Org Server.
|
This package contains the X.Org Server.
|
||||||
|
|
||||||
@ -269,12 +265,10 @@ cp %{SOURCE90} .
|
|||||||
%patch100
|
%patch100
|
||||||
%patch101
|
%patch101
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
%patch103 -p1
|
|
||||||
%patch104 -p1
|
%patch104 -p1
|
||||||
%patch105 -p1
|
%patch105 -p1
|
||||||
%patch106 -p1
|
%patch106 -p1
|
||||||
|
|
||||||
%patch111 -p1
|
|
||||||
%patch112 -p1
|
%patch112 -p1
|
||||||
|
|
||||||
%patch114 -p1
|
%patch114 -p1
|
||||||
@ -298,8 +292,6 @@ cp %{SOURCE90} .
|
|||||||
### patch222 might not be applicable anymore
|
### patch222 might not be applicable anymore
|
||||||
#%patch1222 -p1
|
#%patch1222 -p1
|
||||||
|
|
||||||
%patch1300 -p1
|
|
||||||
|
|
||||||
find . -type f \! -name '*.orig' \! -path ./source-file-list > source-file-list
|
find . -type f \! -name '*.orig' \! -path ./source-file-list > source-file-list
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -373,9 +365,12 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/X11
|
|||||||
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
|
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
|
||||||
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
|
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
|
||||||
%if 0%{?suse_version} > 1120
|
%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
|
%ifnarch s390 s390x
|
||||||
mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d
|
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
|
||||||
%endif
|
%endif
|
||||||
%if 0%{?suse_version} < 1315
|
%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
|
rm -f %{buildroot}%{_datadir}/aclocal/*.m4
|
||||||
%endif
|
%endif
|
||||||
%ifarch s390 s390x
|
%ifarch s390 s390x
|
||||||
rm -f %{buildroot}%{_sysconfdir}/X11/10-evdev.conf
|
rm -f %{buildroot}%{_sysconfdir}/X11/10-quirks.conf
|
||||||
mkdir -p %{buildroot}%{_includedir}/xorg
|
mkdir -p %{buildroot}%{_includedir}/xorg
|
||||||
install -m 644 include/list.h \
|
install -m 644 include/list.h \
|
||||||
%{buildroot}%{_includedir}/xorg
|
%{buildroot}%{_includedir}/xorg
|
||||||
@ -456,7 +451,7 @@ fi
|
|||||||
%ifnarch s390 s390x
|
%ifnarch s390 s390x
|
||||||
%if 0%{?suse_version} > 1120
|
%if 0%{?suse_version} > 1120
|
||||||
%dir %{_sysconfdir}/X11/xorg.conf.d
|
%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
|
%dir %{_datadir}/X11/xorg.conf.d
|
||||||
%{_datadir}/X11/xorg.conf.d/10-*.conf
|
%{_datadir}/X11/xorg.conf.d/10-*.conf
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
Reference in New Issue
Block a user