• Pablo Neira Ayuso's avatar
    netfilter: nf_tables: fix racy rule deletion · 0165d932
    Pablo Neira Ayuso authored
    We may lost race if we flush the rule-set (which happens asynchronously
    via call_rcu) and we try to remove the table (that userspace assumes
    to be empty).
    
    Fix this by recovering synchronous rule and chain deletion. This was
    introduced time ago before we had no batch support, and synchronous
    rule deletion performance was not good. Now that we have the batch
    support, we can just postpone the purge of old rule in a second step
    in the commit phase. All object deletions are synchronous after this
    patch.
    
    As a side effect, we save memory as we don't need rcu_head per rule
    anymore.
    
    Cc: Patrick McHardy <kaber@trash.net>
    Reported-by: default avatarArturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    0165d932
nf_tables.h 13.9 KB