lkml.org 
[lkml]   [2021]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 054/151] netfilter: nf_tables: reverse order in rule replacement expansion
    Date
    From: Pablo Neira Ayuso <pablo@netfilter.org>

    [ Upstream commit 2c964c558641a3bddaee5719c9e6d8805f777812 ]

    Deactivate old rule first, then append the new rule, so rule replacement
    notification via netlink first reports the deletion of the old rule with
    handle X in first place, then it adds the new rule (reusing the handle X
    of the replaced old rule).

    Note that the abort path releases the transaction that has been created
    by nft_delrule() on error.

    Fixes: ca08987885a1 ("netfilter: nf_tables: deactivate expressions in rule replecement routine")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/netfilter/nf_tables_api.c | 10 ++++------
    1 file changed, 4 insertions(+), 6 deletions(-)

    diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
    index 085783b14075..c8acd26c7201 100644
    --- a/net/netfilter/nf_tables_api.c
    +++ b/net/netfilter/nf_tables_api.c
    @@ -3419,17 +3419,15 @@ static int nf_tables_newrule(struct sk_buff *skb, const struct nfnl_info *info,
    }

    if (info->nlh->nlmsg_flags & NLM_F_REPLACE) {
    + err = nft_delrule(&ctx, old_rule);
    + if (err < 0)
    + goto err_destroy_flow_rule;
    +
    trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
    if (trans == NULL) {
    err = -ENOMEM;
    goto err_destroy_flow_rule;
    }
    - err = nft_delrule(&ctx, old_rule);
    - if (err < 0) {
    - nft_trans_destroy(trans);
    - goto err_destroy_flow_rule;
    - }
    -
    list_add_tail_rcu(&rule->list, &old_rule->list);
    } else {
    trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-10-11 16:05    [W:4.163 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site