Don't delete the device on ENODEV to avoid free in signal handler

This commit is contained in:
Peter Hutterer 2012-08-04 17:00:34 +10:00
parent 81585ea56c
commit 8e470dd9f1
2 changed files with 45 additions and 1 deletions

View File

@ -0,0 +1,38 @@
From 1660f32f21ba1fa70fa79af1cb59436065a6ba8a Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@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@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

View File

@ -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@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@redhat.com> 2.7.2-2
- Add missing changelog message.