From 77b68f434dd095dadecabd9e463a04ba84f06658 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Nov 28 2012 00:01:00 +0000 Subject: Merge branch 'master' into f18 Conflicts: xorg-x11-server.spec --- diff --git a/0001-dix-fix-crash-on-XI-1.x-grabs-on-disabled-devices.-5.patch b/0001-dix-fix-crash-on-XI-1.x-grabs-on-disabled-devices.-5.patch new file mode 100644 index 0000000..02db1ca --- /dev/null +++ b/0001-dix-fix-crash-on-XI-1.x-grabs-on-disabled-devices.-5.patch @@ -0,0 +1,60 @@ +From 9d6b8365702e4648e793fea21ad22f7174558680 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +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 + +Signed-off-by: Peter Hutterer +Reviewed-by: Chase Douglas +--- + 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 + diff --git a/0001-xf86-Fix-build-against-recent-Linux-kernel.patch b/0001-xf86-Fix-build-against-recent-Linux-kernel.patch new file mode 100644 index 0000000..db59b9f --- /dev/null +++ b/0001-xf86-Fix-build-against-recent-Linux-kernel.patch @@ -0,0 +1,35 @@ +From c5396ec05a5c6cab6608ba677f703c5227b1de13 Mon Sep 17 00:00:00 2001 +From: Thierry Reding +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 +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +--- + 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 */ +-#if defined(linux) && defined(_INPUT_H) ++#if defined(linux) + #undef BUS_NONE + #undef BUS_PCI + #undef BUS_SBUS +-- +1.7.11.7 + diff --git a/v2-xf86-Fix-non-PCI-configuration-less-setups.patch b/v2-xf86-Fix-non-PCI-configuration-less-setups.patch new file mode 100644 index 0000000..5afa39a --- /dev/null +++ b/v2-xf86-Fix-non-PCI-configuration-less-setups.patch @@ -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 +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 + +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 + +--- +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++) { diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index c11aa7d..43fed9a 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -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 1.13.0-7 +* Wed Nov 28 2012 Peter Hutterer 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 1.13.0-8 +- Fix for non-PCI configuration-less setups + +* Wed Oct 31 2012 Peter Hutterer 1.13.0-7 +- Fix build issues on new kernels caused by removal of _INPUT_H + +* Tue Oct 30 2012 Peter Hutterer 1.13.0-6 - Add touchscreen fixes (including pointer emulation) #871064 * Tue Sep 25 2012 Dave Airlie 1.13.0-6