Hello Timo,

 Thanks for reporting and debugging this issue. I have just adopted the package 
but I still need to setup a test environment and else.

 Anyway, could you please rebuild and test with the following patch which 
basically has two upstream patches which fixes:

From: Grazvydas Ignotas <[email protected]>

at least xserver 1.7.4 crashes on XGetPointerControl request because
of xf86-input-tslib:

Program received signal SIGSEGV, Segmentation fault.
#0  0x000355e0 in ProcGetPointerControl (client=0x4a2e58) at devices.c:2122
#1  0x00062fa8 in Dispatch () at dispatch.c:439
#2  0x00022444 in main (argc=4, argv=0xbeebedc4, envp=0xbeebedd8) at main.c:285

This happens because ptrfeed field is not set in device structure from tslib.
To fix this, call InitPtrFeedbackClassDeviceStruct() during DEVICE_INIT
to get necessary setup done (as done in other input drivers).

--

From: Stanislav Brabec <[email protected]>
Subject: xf86-input-tslib-0.0.6 crash fix with xorg-server-1.7.3

Here is a fix for crash of xf86-input-tslib-0.0.6 with xorg-server-1.7.3
that should be backward compatible.

xorg-server-1.7.3/hw/xfree86/common/xf86Helper.c contains this code
causing a double free crash on chvt or exit:

   /* This should *really* be handled in drv->UnInit(dev) call instead, but
    * if the driver forgets about it make sure we free it or at least crash
    * with flying colors */
   if (pInp->private)
       xfree(pInp->private);

PATCH:

Index: src/tslib.c
===================================================================
--- src/tslib.c (revision 46)
+++ src/tslib.c (revision 48)
@@ -103,8 +103,6 @@
static void
PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
{
-       ErrorF("%s\n", __FUNCTION__);
-       return;
}

static Bool
@@ -406,6 +404,8 @@
                xf86MotionHistoryAllocate(pInfo);
#endif

+               if (!InitPtrFeedbackClassDeviceStruct(device, 
PointerControlProc))
+                       return !Success;
                break;

        case DEVICE_ON:
@@ -435,6 +435,7 @@
        xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
        ts_close(priv->ts);
        xfree(pInfo->private);
+       pInfo->private = NULL;
        xf86DeleteInput(pInfo, 0);
}

Cheers,
--
Héctor Orón

"Our Sun unleashes tremendous flares expelling hot gas into the Solar System, which 
one day will disconnect us."


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to