• Pablo Neira Ayuso's avatar
    netfilter: nf_tables: restore synchronous object release from commit/abort · b326dd37
    Pablo Neira Ayuso authored
    The existing xtables matches and targets, when used from nft_compat, may
    sleep from the destroy path, ie. when removing rules. Since the objects
    are released via call_rcu from softirq context, this results in lockdep
    splats and possible lockups that may be hard to reproduce.
    
    Patrick also indicated that delayed object release via call_rcu can
    cause us problems in the ordering of event notifications when anonymous
    sets are in place.
    
    So, this patch restores the synchronous object release from the commit
    and abort paths. This includes a call to synchronize_rcu() to make sure
    that no packets are walking on the objects that are going to be
    released. This is slowier though, but it's simple and it resolves the
    aforementioned problems.
    
    This is a partial revert of c7c32e72 ("netfilter: nf_tables: defer all
    object release via rcu") that was introduced in 3.16 to speed up
    interaction with userspace.
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    b326dd37
nf_tables_api.c 99.4 KB