• Eric Dumazet's avatar
    netpoll: more efficient locking · 89c4b442
    Eric Dumazet authored
    Callers of netpoll_poll_lock() own NAPI_STATE_SCHED
    
    Callers of netpoll_poll_unlock() have BH blocked between
    the NAPI_STATE_SCHED being cleared and poll_lock is released.
    
    We can avoid the spinlock which has no contention, and use cmpxchg()
    on poll_owner which we need to set anyway.
    
    This removes a possible lockdep violation after the cited commit,
    since sk_busy_loop() re-enables BH before calling busy_poll_stop()
    
    Fixes: 217f6974 ("net: busy-poll: allow preemption in sk_busy_loop()")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    89c4b442
netpoll.c 19.5 KB