• Vlad Buslov's avatar
    net: sched: protect filter_chain list with filter_chain_lock mutex · ed76f5ed
    Vlad Buslov authored
    Extend tcf_chain with new filter_chain_lock mutex. Always lock the chain
    when accessing filter_chain list, instead of relying on rtnl lock.
    Dereference filter_chain with tcf_chain_dereference() lockdep macro to
    verify that all users of chain_list have the lock taken.
    
    Rearrange tp insert/remove code in tc_new_tfilter/tc_del_tfilter to execute
    all necessary code while holding chain lock in order to prevent
    invalidation of chain_info structure by potential concurrent change. This
    also serializes calls to tcf_chain0_head_change(), which allows head change
    callbacks to rely on filter_chain_lock for synchronization instead of rtnl
    mutex.
    Signed-off-by: default avatarVlad Buslov <vladbu@mellanox.com>
    Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ed76f5ed
sch_generic.c 33 KB