• Mark Huang's avatar
    [NETFILTER]: ulog: fix panic on SMP kernels · dcb7cd97
    Mark Huang authored
    Fix kernel panic on various SMP machines. The culprit is a null
    ub->skb in ulog_send(). If ulog_timer() has already been scheduled on
    one CPU and is spinning on the lock, and ipt_ulog_packet() flushes the
    queue on another CPU by calling ulog_send() right before it exits,
    there will be no skbuff when ulog_timer() acquires the lock and calls
    ulog_send(). Cancelling the timer in ulog_send() doesn't help because
    it has already been scheduled and is running on the first CPU.
    
    Similar problem exists in ebt_ulog.c and nfnetlink_log.c.
    Signed-off-by: default avatarMark Huang <mlhuang@cs.princeton.edu>
    Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dcb7cd97
nfnetlink_log.c 26 KB