diff --git a/.gitignore b/.gitignore index 77f3c5d..ef266c0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /xf86-input-libinput-0.19.1.tar.bz2 /xf86-input-libinput-20160929.tar.xz /xf86-input-libinput-0.20.0.tar.bz2 +/xf86-input-libinput-0.22.0.tar.bz2 diff --git a/0001-Fix-crash-when-using-threaded-input-and-the-first-de.patch b/0001-Fix-crash-when-using-threaded-input-and-the-first-de.patch deleted file mode 100644 index 56f0537..0000000 --- a/0001-Fix-crash-when-using-threaded-input-and-the-first-de.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 38c5bc5e4974157131cda7647dde7b0f6ca6843e Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Wed, 5 Oct 2016 15:21:57 +0200 -Subject: [PATCH xf86-input-libinput] Fix crash when using threaded input and - the first device goes away - -When the xserver uses threaded input, it keeps a pointer to the InputInfo -passed into xf86AddEnabledDevice and calls pointer->read_input on events. - -But when the first enabled device goes away the pInfo we've passed into -xf86AddEnabledDevice gets freed and eventually pInfo->read_input gets -overwritten (or pInfo points to unmapped memory) leading to a segfault. - -This commit fixes this by replacing the pInfo passed into -xf86AddEnabledDevice with a pointer to a global InputInfo stored inside -the driver_context struct. - -Signed-off-by: Hans de Goede ---- - src/xf86libinput.c | 22 ++++++++++++++++------ - 1 file changed, 16 insertions(+), 6 deletions(-) - -diff --git a/src/xf86libinput.c b/src/xf86libinput.c -index 21f87f5..485e212 100644 ---- a/src/xf86libinput.c -+++ b/src/xf86libinput.c -@@ -86,6 +86,7 @@ - - struct xf86libinput_driver { - struct libinput *libinput; -+ struct _InputInfoRec InputInfo; - int device_enabled_count; - }; - -@@ -582,7 +583,17 @@ xf86libinput_on(DeviceIntPtr dev) - - if (driver_context.device_enabled_count == 0) { - #if HAVE_THREADED_INPUT -- xf86AddEnabledDevice(pInfo); -+ /* -+ * The xserver keeps a pointer to the InputInfo passed into -+ * xf86AddEnabledDevice and calls pointer->read_input on -+ * events. Thus we cannot simply pass in our current pInfo -+ * as that will be deleted when the current input device gets -+ * unplugged. Instead pass in a pointer to a global -+ * InputInfo inside the driver_context. -+ */ -+ driver_context.InputInfo.fd = pInfo->fd; -+ driver_context.InputInfo.read_input = pInfo->read_input; -+ xf86AddEnabledDevice(&driver_context.InputInfo); - #else - /* Can't use xf86AddEnabledDevice on an epollfd */ - AddEnabledDevice(pInfo->fd); -@@ -606,7 +617,7 @@ xf86libinput_off(DeviceIntPtr dev) - - if (--driver_context.device_enabled_count == 0) { - #if HAVE_THREADED_INPUT -- xf86RemoveEnabledDevice(pInfo); -+ xf86RemoveEnabledDevice(&driver_context.InputInfo); - #else - RemoveEnabledDevice(pInfo->fd); - #endif -@@ -1923,7 +1934,7 @@ out: - } - - static void --xf86libinput_read_input(InputInfoPtr pInfo) -+xf86libinput_read_input(InputInfoPtr do_not_use) - { - struct libinput *libinput = driver_context.libinput; - int rc; -@@ -1934,9 +1945,8 @@ xf86libinput_read_input(InputInfoPtr pInfo) - return; - - if (rc < 0) { -- xf86IDrvMsg(pInfo, X_ERROR, -- "Error reading events: %s\n", -- strerror(-rc)); -+ xf86Msg(X_ERROR, "Error reading libinput events: %s\n", -+ strerror(-rc)); - return; - } - --- -2.9.3 - diff --git a/sources b/sources index 8d921b9..87c3dcc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9a9e638c3e50e1789041619716ac59a2 xf86-input-libinput-0.20.0.tar.bz2 +e4364319f15f97dc2ef0ef62c8616826 xf86-input-libinput-0.22.0.tar.bz2 diff --git a/xorg-x11-drv-libinput.spec b/xorg-x11-drv-libinput.spec index 242249a..e0e3ee0 100644 --- a/xorg-x11-drv-libinput.spec +++ b/xorg-x11-drv-libinput.spec @@ -7,7 +7,7 @@ Summary: Xorg X11 libinput input driver Name: xorg-x11-drv-libinput -Version: 0.20.0 +Version: 0.22.0 Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} URL: http://www.x.org License: MIT @@ -17,7 +17,6 @@ Source0: %{tarball}-%{gitdate}.tar.xz %else Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2 %endif -Patch1: 0001-Fix-crash-when-using-threaded-input-and-the-first-de.patch ExcludeArch: s390 s390x @@ -37,7 +36,6 @@ supporting all devices. %prep %setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} -%patch1 -p1 %build autoreconf --force -v --install || exit 1 @@ -75,6 +73,9 @@ Xorg X11 libinput input driver development files. %{_includedir}/xorg/libinput-properties.h %changelog +* Wed Oct 19 2016 Peter Hutterer 0.22.0-1 +- xf86-input-libinput 0.22.0 + * Tue Oct 18 2016 Peter Hutterer 0.20.0-1 - xf86-input-libinput 0.20.0