Merge branch 'master' into f18

Conflicts:
	xorg-x11-server.spec
This commit is contained in:
Peter Hutterer 2012-11-28 10:01:00 +10:00
commit 77b68f434d
4 changed files with 169 additions and 2 deletions

View File

@ -0,0 +1,60 @@
From 9d6b8365702e4648e793fea21ad22f7174558680 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 28 Sep 2012 11:49:29 +1000
Subject: [PATCH] dix: fix crash on XI 1.x grabs on disabled devices.
(#54934)
If the device is disabled, the sprite window is NULL and dereferencing
crashes the server.
This is only triggered for XI 1.x grabs (ProcXGrabDevice) as XI2 grabs would
trigger another code path, creating a sprite for the disabled device as if
detaching it (which is wrong and fixed with this patch too).
Grabbing a disabled device doesn't make sense as it won't send events
anyway. However, the protocol specs do not prohibit it, so we need to keep
it working.
Luckily, oldWin is only used for focus out events, which aren't necessary
given that the device is disabled.
X.Org Bug 54934 <http://bugs.freedesktop.org/show_bug.cgi?id=54934>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@ubuntu.com>
---
dix/events.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dix/events.c b/dix/events.c
index 3b40446..c0e330b 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -1555,11 +1555,13 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
WindowPtr oldWin;
/* slave devices need to float for the duration of the grab. */
- if (grab->grabtype == XI2 &&
+ if (grab->grabtype == XI2 && keybd->enabled &&
!(passive & ImplicitGrabMask) && !IsMaster(keybd))
DetachFromMaster(keybd);
- if (grabinfo->grab)
+ if (!keybd->enabled)
+ oldWin = NULL;
+ else if (grabinfo->grab)
oldWin = grabinfo->grab->window;
else if (keybd->focus)
oldWin = keybd->focus->win;
@@ -1569,7 +1571,8 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
oldWin = keybd->focus->win;
if (keybd->valuator)
keybd->valuator->motionHintWindow = NullWindow;
- DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
+ if (oldWin)
+ DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
if (syncEvents.playingEvents)
grabinfo->grabTime = syncEvents.time;
else
--
1.7.11.7

View File

@ -0,0 +1,35 @@
From c5396ec05a5c6cab6608ba677f703c5227b1de13 Mon Sep 17 00:00:00 2001
From: Thierry Reding <thierry.reding@avionic-design.de>
Date: Wed, 17 Oct 2012 12:11:49 +0200
Subject: [PATCH] xf86: Fix build against recent Linux kernel
Recent Linux kernels reworked the linux/input.h header file, which is
now part of the "user-space API". The include guard therefore has an
additional additional _UAPI prefix.
Instead of adding another case to the #ifdef, drop any include guard
checks and instead always undefine the BUS_* definitions on Linux.
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
hw/xfree86/common/xf86str.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index 0590262..4c2d147 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -347,7 +347,7 @@ typedef struct _DriverRec {
*/
/* Tolerate prior #include <linux/input.h> */
-#if defined(linux) && defined(_INPUT_H)
+#if defined(linux)
#undef BUS_NONE
#undef BUS_PCI
#undef BUS_SBUS
--
1.7.11.7

View File

@ -0,0 +1,53 @@
From patchwork Wed Oct 17 10:06:47 2012
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [v2] xf86: Fix non-PCI configuration-less setups
Date: Wed, 17 Oct 2012 10:06:47 -0000
From: Thierry Reding <thierry.reding@avionic-design.de>
X-Patchwork-Id: 12233
Message-Id: <1350468407-27681-1-git-send-email-thierry.reding@avionic-design.de>
To: xorg-devel@lists.x.org
Cc: Dave Airlie <airlied@gmail.com>
For non-PCI video devices, such as those found on many ARM embedded
systems, the X server currently requires the BusID option to specify the
full path to the DRM device's sysfs node in order to properly match it
against the probed platform devices.
In order to allow X to start up properly if either the BusID option was
omitted or no configuration is present at all, the first video device is
used by default.
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- Add additional checks for safety (I don't think numDevs will ever be 0
since a default will be generated if no configuration is present, but
it doesn't hurt to check anyway). Without these checks there is a
possibility of the X server crashing if no platform devices have been
found.
hw/xfree86/common/xf86platformBus.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index 0525e39..599d84a 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -377,6 +377,14 @@ xf86platformProbeDev(DriverPtr drvp)
continue;
}
+ /*
+ * If all of the above fails, which can happen if X was started without
+ * configuration or if BusID wasn't set for non-PCI devices, use the first
+ * device by default.
+ */
+ if (!foundScreen && xf86_num_platform_devices > 0 && numDevs > 0)
+ foundScreen = probeSingleDevice(&xf86_platform_devices[0], drvp, devList[0], 0);
+
/* if autoaddgpu devices is enabled then go find a few more and add them as GPU screens */
if (xf86Info.autoAddGPU && numDevs) {
for (j = 0; j < xf86_num_platform_devices; j++) {

View File

@ -43,7 +43,7 @@
Summary: X.Org X11 X server
Name: xorg-x11-server
Version: 1.13.0
Release: 7%{?gitdate:.%{gitdate}}%{dist}
Release: 9%{?gitdate:.%{gitdate}}%{dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X
@ -125,6 +125,15 @@ Patch7057: 0001-Xi-Call-UpdateDeviceState-after-the-first-emulated-m.patch
Patch7058: 0001-Xi-Don-t-check-for-TOUCH_END-it-s-never-set.patch
Patch7059: 0001-Xi-don-t-deliver-TouchEnd-to-a-client-waiting-for-To.patch
# kernel doesn't use _INPUT_H anymore
Patch7060: 0001-xf86-Fix-build-against-recent-Linux-kernel.patch
# Fix non-PCI configuration-less setups
Patch7061: v2-xf86-Fix-non-PCI-configuration-less-setups.patch
# fdo Bug 54934 - Crash on XGrabDevice() of deactivated synaptics device -
Patch7062: 0001-dix-fix-crash-on-XI-1.x-grabs-on-disabled-devices.-5.patch
%global moduledir %{_libdir}/xorg/modules
%global drimoduledir %{_libdir}/dri
%global sdkdir %{_includedir}/xorg
@ -597,7 +606,17 @@ rm -rf $RPM_BUILD_ROOT
%{xserver_source_dir}
%changelog
* Tue Oct 30 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.13.0-7
* Wed Nov 28 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.13.0-9
- Fix server crash when a XI 1.x device grab is activated on a disabled
synaptics touchpad is disabled
* Tue Nov 27 2012 Jiri Kastner <jkastner@redhat.com> 1.13.0-8
- Fix for non-PCI configuration-less setups
* Wed Oct 31 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.13.0-7
- Fix build issues on new kernels caused by removal of _INPUT_H
* Tue Oct 30 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.13.0-6
- Add touchscreen fixes (including pointer emulation) #871064
* Tue Sep 25 2012 Dave Airlie <airlied@redhat.com> 1.13.0-6