• Xie He's avatar
    net: hdlc_ppp: Fix issues when mod_timer is called while timer is running · 1fef7359
    Xie He authored
    ppp_cp_event is called directly or indirectly by ppp_rx with "ppp->lock"
    held. It may call mod_timer to add a new timer. However, at the same time
    ppp_timer may be already running and waiting for "ppp->lock". In this
    case, there's no need for ppp_timer to continue running and it can just
    exit.
    
    If we let ppp_timer continue running, it may call add_timer. This causes
    kernel panic because add_timer can't be called with a timer pending.
    This patch fixes this problem.
    
    Fixes: e022c2f0 ("WAN: new synchronous PPP implementation for generic HDLC.")
    Cc: Krzysztof Halasa <khc@pm.waw.pl>
    Signed-off-by: default avatarXie He <xie.he.0141@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1fef7359
hdlc_ppp.c 18.9 KB