netfilter: nf_tables: Use 32 bit addressing register from nft_type_to_reg()
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 12 Aug 2015 15:41:00 +0000 (17:41 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 19 Aug 2015 19:21:41 +0000 (21:21 +0200)
nft_type_to_reg() needs to return the register in the new 32 bit addressing,
otherwise we hit EINVAL when using mappings.

Fixes: 49499c3 ("netfilter: nf_tables: switch registers to 32 bit addressing")
Reported-by: Andreas Schultz <aschultz@tpip.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/netfilter/nf_tables.h

index 2a246680a6c38934485fbd7a540df04ad47a0253..aa8bee72c9d34288cd121ebd5ddd1e3ad7a7bf40 100644 (file)
@@ -125,7 +125,7 @@ static inline enum nft_data_types nft_dreg_to_type(enum nft_registers reg)
 
 static inline enum nft_registers nft_type_to_reg(enum nft_data_types type)
 {
-       return type == NFT_DATA_VERDICT ? NFT_REG_VERDICT : NFT_REG_1;
+       return type == NFT_DATA_VERDICT ? NFT_REG_VERDICT : NFT_REG_1 * NFT_REG_SIZE / NFT_REG32_SIZE;
 }
 
 unsigned int nft_parse_register(const struct nlattr *attr);