• Manfred Spraul's avatar
    net/netfilter/nf_conntrack_core: Fix net_conntrack_lock() · 3ef0c7a7
    Manfred Spraul authored
    As we want to remove spin_unlock_wait() and replace it with explicit
    spin_lock()/spin_unlock() calls, we can use this to simplify the
    locking.
    
    In addition:
    - Reading nf_conntrack_locks_all needs ACQUIRE memory ordering.
    - The new code avoids the backwards loop.
    
    Only slightly tested, I did not manage to trigger calls to
    nf_conntrack_all_lock().
    
    V2: With improved comments, to clearly show how the barriers
        pair.
    
    Fixes: b16c2919 ("netfilter: nf_conntrack: use safer way to lock all buckets")
    Signed-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
    Cc: <stable@vger.kernel.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: netfilter-devel@vger.kernel.org
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    3ef0c7a7
nf_conntrack_core.c 56.5 KB