• Davide Caratti's avatar
    net/sched: don't dereference a->goto_chain to read the chain index · fe384e2f
    Davide Caratti authored
    callers of tcf_gact_goto_chain_index() can potentially read an old value
    of the chain index, or even dereference a NULL 'goto_chain' pointer,
    because 'goto_chain' and 'tcfa_action' are read in the traffic path
    without caring of concurrent write in the control path. The most recent
    value of chain index can be read also from a->tcfa_action (it's encoded
    there together with TC_ACT_GOTO_CHAIN bits), so we don't really need to
    dereference 'goto_chain': just read the chain id from the control action.
    
    Fixes: e457d86a ("net: sched: add couple of goto_chain helpers")
    Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fe384e2f
tc_gact.h 1.33 KB