• Florian Westphal's avatar
    netfilter: nft_compat: make sure xtables destructors have run · ffe8923f
    Florian Westphal authored
    Pablo Neira found that after recent update of xt_IDLETIMER the
    iptables-nft tests sometimes show an error.
    
    He tracked this down to the delayed cleanup used by nf_tables core:
    del rule (transaction A)
    add rule (transaction B)
    
    Its possible that by time transaction B (both in same netns) runs,
    the xt target destructor has not been invoked yet.
    
    For native nft expressions this is no problem because all expressions
    that have such side effects make sure these are handled from the commit
    phase, rather than async cleanup.
    
    For nft_compat however this isn't true.
    
    Instead of forcing synchronous behaviour for nft_compat, keep track
    of the number of outstanding destructor calls.
    
    When we attempt to create a new expression, flush the cleanup worker
    to make sure destructors have completed.
    
    With lots of help from Pablo Neira.
    Reported-by: default avatarPablo Neira Ayso <pablo@netfilter.org>
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    ffe8923f
nft_compat.c 22.3 KB