• Louis Peens's avatar
    nfp: flower-ct: remove callback delete deadlock · 7cc93d88
    Louis Peens authored
    The current location of the callback delete can lead to a race
    condition where deleting the callback requires a write_lock on
    the nf_table, but at the same time another thread from netfilter
    could have taken a read lock on the table before trying to offload.
    Since the driver is taking a rtnl_lock this can lead into a deadlock
    situation, where the netfilter offload will wait for the cls_flower
    rtnl_lock to be released, but this cannot happen since this is
    waiting for the nf_table read_lock to be released before it can
    delete the callback.
    
    Solve this by completely removing the nf_flow_table_offload_del_cb
    call, as this will now be cleaned up by act_ct itself when cleaning
    up the specific nf_table.
    
    Fixes: 62268e78 ("nfp: flower-ct: add nft callback stubs")
    Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
    Signed-off-by: default avatarYinjun Zhang <yinjun.zhang@corigine.com>
    Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7cc93d88
conntrack.c 31.2 KB