Skip to content
Snippets Groups Projects
  • Yunsheng Lin's avatar
    net: sched: add barrier to ensure correct ordering for lockless qdisc · 89837eb4
    Yunsheng Lin authored
    
    The spin_trylock() was assumed to contain the implicit
    barrier needed to ensure the correct ordering between
    STATE_MISSED setting/clearing and STATE_MISSED checking
    in commit a90c57f2 ("net: sched: fix packet stuck
    problem for lockless qdisc").
    
    But it turns out that spin_trylock() only has load-acquire
    semantic, for strongly-ordered system(like x86), the compiler
    barrier implicitly contained in spin_trylock() seems enough
    to ensure the correct ordering. But for weakly-orderly system
    (like arm64), the store-release semantic is needed to ensure
    the correct ordering as clear_bit() and test_bit() is store
    operation, see queued_spin_lock().
    
    So add the explicit barrier to ensure the correct ordering
    for the above case.
    
    Fixes: a90c57f2 ("net: sched: fix packet stuck problem for lockless qdisc")
    Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
    Acked-by: default avatarJakub Kicinski <kuba@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    89837eb4
Code owners
Assign users and groups as approvers for specific file changes. Learn more.