[PATCH 0/3] Make timers even more resistant to signals
Peter Hutterer
peter.hutterer at who-t.net
Wed Sep 26 21:48:10 PDT 2012
On Sat, Sep 22, 2012 at 09:28:34PM +0800, Daniel Kurtz wrote:
> X Input drivers, such as xf86-input-synaptics, tend to do all of their
> processing in a SIGIO signal handler. This processing often involves
> creating, modifying or canceling a timer. Any of these operations may
> modify the global "timers" array. Therefore, all accesses of this global
> must be done in critical secitions during which signals are blocked.
>
> Otherwise, for example, a signal may clear the last timer between, which
> sets timers global to NULL, between the NULL check and checking "expires",
> which causes a SEGV.
>
> A previous patch protected write accesses. However, this is not
> sufficient. Read accesses must also be protected from a signal
> occurring between when the timers is NULL checked and subsequent
> dereferences.
>
> This patchset also does some small clean up to the timer list processing.
> Although, the whole timer list should probably be rewritten someday
> using the more modern - and better tested - struct xorg_list...
>
> Daniel Kurtz (3):
> os: block signals when accessing global timer list
> os: refactor timer processing
> os: refactor CheckAllTimers
>
> os/WaitFor.c | 79 ++++++++++++++++++++++++++++++---------------------------
> 1 files changed, 42 insertions(+), 37 deletions(-)
Thanks, merged this into my tree. This should fix the remaining issues we're
seeing with synaptics.
Cheers,
Peter
More information about the xorg-devel
mailing list