netfilter: nf_tables: fix update chain error
authorJingPiao Chen <chenjingpiao@gmail.com>
Sat, 23 Sep 2017 09:10:44 +0000 (17:10 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 29 Sep 2017 11:34:36 +0000 (13:34 +0200)
 # nft add table filter
 # nft add chain filter c1
 # nft rename chain filter c1 c2

Error: Could not process rule: No such file or directory
rename chain filter c1 c2
^^^^^^^^^^^^^^^^^^^^^^^^^^

 # nft add chain filter c2
 # nft rename chain filter c1 c2
 # nft list table filter

table ip filter {
chain c2 {
}

chain c2 {
}
}

Fixes: 664b0f8cd8 ("netfilter: nf_tables: add generation mask to chains")
Signed-off-by: JingPiao Chen <chenjingpiao@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index 929927171426a6e286bd5cc4412aaa99b77fec77..f98ca8c6aa59d112495de749009848dbe4e90465 100644 (file)
@@ -1487,8 +1487,8 @@ static int nf_tables_updchain(struct nft_ctx *ctx, u8 genmask, u8 policy,
 
                chain2 = nf_tables_chain_lookup(table, nla[NFTA_CHAIN_NAME],
                                                genmask);
-               if (IS_ERR(chain2))
-                       return PTR_ERR(chain2);
+               if (!IS_ERR(chain2))
+                       return -EEXIST;
        }
 
        if (nla[NFTA_CHAIN_COUNTERS]) {