| From 1df23976c114a84fb405ea45a39391e418c43939 Mon Sep 17 00:00:00 2001 |
| From: Laura Garcia Liebana <nevola@gmail.com> |
| Date: Mon, 15 Jul 2019 13:23:37 +0200 |
| Subject: netfilter: nft_hash: fix symhash with modulus one |
| |
| [ Upstream commit 28b1d6ef53e3303b90ca8924bb78f31fa527cafb ] |
| |
| The rule below doesn't work as the kernel raises -ERANGE. |
| |
| nft add rule netdev nftlb lb01 ip daddr set \ |
| symhash mod 1 map { 0 : 192.168.0.10 } fwd to "eth0" |
| |
| This patch allows to use the symhash modulus with one |
| element, in the same way that the other types of hashes and |
| algorithms that uses the modulus parameter. |
| |
| Signed-off-by: Laura Garcia Liebana <nevola@gmail.com> |
| Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/netfilter/nft_hash.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/net/netfilter/nft_hash.c b/net/netfilter/nft_hash.c |
| index 24f2f7567ddb7..010a565b40001 100644 |
| --- a/net/netfilter/nft_hash.c |
| +++ b/net/netfilter/nft_hash.c |
| @@ -131,7 +131,7 @@ static int nft_symhash_init(const struct nft_ctx *ctx, |
| priv->dreg = nft_parse_register(tb[NFTA_HASH_DREG]); |
| |
| priv->modulus = ntohl(nla_get_be32(tb[NFTA_HASH_MODULUS])); |
| - if (priv->modulus <= 1) |
| + if (priv->modulus < 1) |
| return -ERANGE; |
| |
| if (priv->offset + priv->modulus - 1 < priv->offset) |
| -- |
| 2.20.1 |
| |