• Thomas Gleixner's avatar
    posix-timers: Prevent softirq starvation by small intervals and SIG_IGN · 58229a18
    Thomas Gleixner authored
    posix-timers which deliver an ignored signal are currently rearmed in
    the timer softirq: This is necessary because the timer needs to be
    delivered again when SIG_IGN is removed. This is not a problem, when
    the interval is reasonable.
    
    With high resolution timers enabled one might arm a posix timer with a
    very small interval and ignore the signal. This might lead to a
    softirq starvation when the interval is so small that the timer is
    requeued onto the softirq pending list right away.
    
    This problem was pointed out by Jan Kiszka. Thanks Jan !
    
    The correct solution would be to stop the timer, when the signal is
    ignored and rearm it when SIG_IGN is removed. Unfortunately this
    requires modification in sigaction and involves non trivial sighand
    locking. It's too late in the release cycle for such a change.
    
    For now we just keep the timer running and enforce that the timer only
    fires every jiffie. This does not break anything as we keep the
    o...
    58229a18
posix-timers.c 29.1 KB