[xorg-x11-drv-evdev] Don't delete the device on ENODEV to avoid free in signal handler
Peter Hutterer
whot at fedoraproject.org
Sat Aug 4 06:56:18 UTC 2012
commit 8e470dd9f1db5815d5ffbe39cb85ac09c0332c5d
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date: Sat Aug 4 17:00:34 2012 +1000
Don't delete the device on ENODEV to avoid free in signal handler
0001-Don-t-delete-the-device-on-ENODEV.patch | 38 ++++++++++++++++++++++++++
xorg-x11-drv-evdev.spec | 8 +++++-
2 files changed, 45 insertions(+), 1 deletions(-)
---
diff --git a/0001-Don-t-delete-the-device-on-ENODEV.patch b/0001-Don-t-delete-the-device-on-ENODEV.patch
new file mode 100644
index 0000000..4a9805f
--- /dev/null
+++ b/0001-Don-t-delete-the-device-on-ENODEV.patch
@@ -0,0 +1,38 @@
+From 1660f32f21ba1fa70fa79af1cb59436065a6ba8a Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Tue, 31 Jul 2012 16:39:00 +1000
+Subject: [PATCH evdev] Don't delete the device on ENODEV
+
+This is signal handler code and we cannot clean up properly while in the
+signal handler. So reduce the code to removing the signal handler and let
+the device be cleaned up later.
+
+If hotplugging is on, the server will remove it when the config backend says
+so and if it is off, the server will remove it on shutdown.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ src/evdev.c | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/evdev.c b/src/evdev.c
+index f54b66f..b832d98 100644
+--- a/src/evdev.c
++++ b/src/evdev.c
+@@ -1113,12 +1113,8 @@ EvdevReadInput(InputInfoPtr pInfo)
+ if (len <= 0)
+ {
+ if (errno == ENODEV) /* May happen after resume */
+- {
+- EvdevMBEmuFinalize(pInfo);
+- Evdev3BEmuFinalize(pInfo);
+ xf86RemoveEnabledDevice(pInfo);
+- EvdevCloseDevice(pInfo);
+- } else if (errno != EAGAIN)
++ else if (errno != EAGAIN)
+ {
+ /* We use X_NONE here because it doesn't alloc */
+ xf86MsgVerb(X_NONE, 0, "%s: Read error: %s\n", pInfo->name,
+--
+1.7.10.4
+
diff --git a/xorg-x11-drv-evdev.spec b/xorg-x11-drv-evdev.spec
index 709f57b..8c579d0 100644
--- a/xorg-x11-drv-evdev.spec
+++ b/xorg-x11-drv-evdev.spec
@@ -8,7 +8,7 @@
Summary: Xorg X11 evdev input driver
Name: xorg-x11-drv-evdev
Version: 2.7.2
-Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
+Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X Hardware Support
@@ -23,6 +23,8 @@ Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
# Bug 805902 - Scrollwheels on tablets are broken
Patch02: 0001-Allow-relative-scroll-valuators-on-absolute-devices.patch
+# Only disable device on ENODEV to avoid free in sighandler
+Patch03: 0001-Don-t-delete-the-device-on-ENODEV.patch
ExcludeArch: s390 s390x %{?rhel:ppc ppc64}
@@ -42,6 +44,7 @@ X.Org X11 evdev input driver.
%prep
%setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
%patch02 -p1 -b .relscroll
+%patch03 -p1 -b .enodev
%build
autoreconf -v --install || exit 1
@@ -83,6 +86,9 @@ X.Org X11 evdev input driver development files.
%changelog
+* Sat Aug 04 2012 Peter Hutterer <peter.hutterer at redhat.com> 2.7.2-3
+- Don't delete the device on ENODEV to avoid free in signal handler
+
* Sat Aug 04 2012 Peter Hutterer <peter.hutterer at redhat.com> 2.7.2-2
- Add missing changelog message.
More information about the scm-commits
mailing list