From 9a694ffffc66de06dfeb6c612940ae0db584b9253c3acbf0c297008394ef1562 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Tue, 21 Feb 2017 16:55:34 +0000 Subject: [PATCH] Accepting request 459511 from home:dkondratenko:branches:X11:XOrg - U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch * Add the missing input_lock() around the call into the driver's UseHWCursor() callback (bnc #1023845). - U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch * The new input lock is missing for the xf86TransparentCursor() entry point (bnc #1023845). OBS-URL: https://build.opensuse.org/request/show/459511 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=656 --- ...put-lock-for-xf86ScreenCheckHWCursor.patch | 65 +++++++++++++++++++ ...input-lock-for-xf86TransparentCursor.patch | 38 +++++++++++ xorg-x11-server.changes | 11 ++++ xorg-x11-server.spec | 6 +- 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch create mode 100644 U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch diff --git a/U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch b/U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch new file mode 100644 index 0000000..63ffdff --- /dev/null +++ b/U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch @@ -0,0 +1,65 @@ +From chris at chris-wilson.co.uk Thu Feb 2 10:51:46 2017 +From: chris at chris-wilson.co.uk (Chris Wilson) +Date: Thu, 2 Feb 2017 10:51:46 +0000 +Subject: [PATCH xserver 3/3] xfree86: Take input_lock() for + +Add the missing input_lock() around the call into the driver's +UseHWCursor() callback. + +References: https://bugs.freedesktop.org/show_bug.cgi?id=99358 +--- + hw/xfree86/ramdac/xf86HWCurs.c | 27 ++++++++++++++++++++------- + 1 file changed, 20 insertions(+), 7 deletions(-) + +diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c +index 26dc7e5af..09d59b15d 100644 +--- a/hw/xfree86/ramdac/xf86HWCurs.c ++++ b/hw/xfree86/ramdac/xf86HWCurs.c +@@ -139,9 +139,14 @@ Bool + xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr) + { + ScreenPtr pSlave; ++ Bool use_hw_cursor = TRUE; + +- if (!xf86ScreenCheckHWCursor(pScreen, cursor, infoPtr)) +- return FALSE; ++ input_lock(); ++ ++ if (!xf86ScreenCheckHWCursor(pScreen, cursor, infoPtr)) { ++ use_hw_cursor = FALSE; ++ goto unlock; ++ } + + /* ask each driver consuming a pixmap if it can support HW cursor */ + xorg_list_for_each_entry(pSlave, &pScreen->slave_list, slave_head) { +@@ -151,14 +156,22 @@ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr + continue; + + sPriv = dixLookupPrivate(&pSlave->devPrivates, xf86CursorScreenKey); +- if (!sPriv) /* NULL if Option "SWCursor", possibly other conditions */ +- return FALSE; ++ if (!sPriv) { /* NULL if Option "SWCursor", possibly other conditions */ ++ use_hw_cursor = FALSE; ++ break; ++ } + + /* FALSE if HWCursor not supported by slave */ +- if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) +- return FALSE; ++ if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) { ++ use_hw_cursor = FALSE; ++ break; ++ } + } +- return TRUE; ++ ++unlock: ++ input_unlock(); ++ ++ return use_hw_cursor; + } + + static Bool +-- +2.11.0 + diff --git a/U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch b/U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch new file mode 100644 index 0000000..d40c403 --- /dev/null +++ b/U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch @@ -0,0 +1,38 @@ +From chris at chris-wilson.co.uk Thu Feb 2 10:51:45 2017 +From: chris at chris-wilson.co.uk (Chris Wilson) +Date: Thu, 2 Feb 2017 10:51:45 +0000 +Subject: [PATCH xserver 2/3] xfree86: Take input lock for xf86TransparentCursor + +The new input lock is missing for the xf86TransparentCursor() entry +point. + +References: https://bugs.freedesktop.org/show_bug.cgi?id=99358 +--- + hw/xfree86/ramdac/xf86HWCurs.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c +index 55d5861c1..26dc7e5af 100644 +--- a/hw/xfree86/ramdac/xf86HWCurs.c ++++ b/hw/xfree86/ramdac/xf86HWCurs.c +@@ -261,6 +261,8 @@ xf86SetTransparentCursor(ScreenPtr pScreen) + xf86CursorScreenKey); + xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr; + ++ input_lock(); ++ + if (!ScreenPriv->transparentData) + ScreenPriv->transparentData = + (*infoPtr->RealizeCursor) (infoPtr, NullCursor); +@@ -273,6 +275,8 @@ xf86SetTransparentCursor(ScreenPtr pScreen) + ScreenPriv->transparentData); + + (*infoPtr->ShowCursor) (infoPtr->pScrn); ++ ++ input_unlock(); + } + + static void +-- +2.11.0 + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 23f250f..7f4e285 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Feb 21 13:39:27 UTC 2017 - denis.kondratenko@suse.com + +- U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch + * Add the missing input_lock() around the call into the driver's +UseHWCursor() callback (bnc #1023845). + +- U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch + * The new input lock is missing for the xf86TransparentCursor() entry +point (bnc #1023845). + ------------------------------------------------------------------- Fri Feb 10 13:01:24 UTC 2017 - sndirsch@suse.com diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 4b94e7a..d91e872 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -47,9 +47,9 @@ Url: http://xorg.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: X +# Source URL: http://xorg.freedesktop.org/archive/individual/xserver/ License: MIT Group: System/X11/Servers/XF86_4 -# Source URL: http://xorg.freedesktop.org/archive/individual/xserver/ Source0: xorg-server-%{version}.tar.bz2 Source1: sysconfig.displaymanager.template Source2: README.updates @@ -211,6 +211,8 @@ 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 Patch1223: U_xfree86-Take-the-input-lock-for-xf86RecolorCursor.patch +Patch1224: U_xfree86-Take-the-input-lock-for-xf86ScreenCheckHWCursor.patch +Patch1225: U_xfree86-Take-the-input-lock-for-xf86TransparentCursor.patch %description This package contains the X.Org Server. @@ -349,6 +351,8 @@ sh %{SOURCE92} --verify . %{SOURCE91} #%patch1222 -p1 %patch1223 -p1 +%patch1224 -p1 +%patch1225 -p1 %build test -e source-file-list || \