Blob Blame History Raw
From: JingPiao Chen <chenjingpiao@gmail.com>
Date: Sat, 23 Sep 2017 17:10:44 +0800
Subject: netfilter: nf_tables: fix update chain error
Patch-mainline: v4.14-rc5
Git-commit: 0d18779be13766b33c69cbc26df38383598da373
References: bsc#1076830

 # 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>
Acked-by: Michal Kubecek <mkubecek@suse.cz>

---
 net/netfilter/nf_tables_api.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index da314be0c048..3a4128cfcb73 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -1429,8 +1429,8 @@ static int nf_tables_newchain(struct net *net, struct sock *nlsk,
 			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]) {
-- 
2.15.1