Skip to content

Commit 27e6d20

Browse files
kaberummakynes
authored andcommitted
netfilter: nf_tables: kill nft_validate_output_register()
All users of nft_validate_register_store() first invoke nft_validate_output_register(). There is in fact no use for using it on its own, so simplify the code by folding the functionality into nft_validate_register_store() and kill it. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
1 parent 58f40ab commit 27e6d20

File tree

11 files changed

+14
-77
lines changed

11 files changed

+14
-77
lines changed

include/net/netfilter/nf_tables.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ static inline enum nft_registers nft_type_to_reg(enum nft_data_types type)
113113
}
114114

115115
int nft_validate_input_register(enum nft_registers reg);
116-
int nft_validate_output_register(enum nft_registers reg);
117116
int nft_validate_register_store(const struct nft_ctx *ctx,
118117
enum nft_registers reg,
119118
const struct nft_data *data,

net/bridge/netfilter/nft_meta_bridge.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ static int nft_meta_bridge_get_init(const struct nft_ctx *ctx,
5454
{
5555
struct nft_meta *priv = nft_expr_priv(expr);
5656
unsigned int len;
57-
int err;
5857

5958
priv->key = ntohl(nla_get_be32(tb[NFTA_META_KEY]));
6059
switch (priv->key) {
@@ -67,16 +66,8 @@ static int nft_meta_bridge_get_init(const struct nft_ctx *ctx,
6766
}
6867

6968
priv->dreg = ntohl(nla_get_be32(tb[NFTA_META_DREG]));
70-
err = nft_validate_output_register(priv->dreg);
71-
if (err < 0)
72-
return err;
73-
74-
err = nft_validate_register_store(ctx, priv->dreg, NULL,
75-
NFT_DATA_VALUE, len);
76-
if (err < 0)
77-
return err;
78-
79-
return 0;
69+
return nft_validate_register_store(ctx, priv->dreg, NULL,
70+
NFT_DATA_VALUE, len);
8071
}
8172

8273
static struct nft_expr_type nft_meta_bridge_type;

net/netfilter/nf_tables_api.c

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4139,24 +4139,6 @@ int nft_validate_input_register(enum nft_registers reg)
41394139
}
41404140
EXPORT_SYMBOL_GPL(nft_validate_input_register);
41414141

4142-
/**
4143-
* nft_validate_output_register - validate an expressions' output register
4144-
*
4145-
* @reg: the register number
4146-
*
4147-
* Validate that the output register is one of the general purpose
4148-
* registers or the verdict register.
4149-
*/
4150-
int nft_validate_output_register(enum nft_registers reg)
4151-
{
4152-
if (reg < NFT_REG_VERDICT)
4153-
return -EINVAL;
4154-
if (reg > NFT_REG_MAX)
4155-
return -ERANGE;
4156-
return 0;
4157-
}
4158-
EXPORT_SYMBOL_GPL(nft_validate_output_register);
4159-
41604142
/**
41614143
* nft_validate_register_store - validate an expressions' register store
41624144
*
@@ -4198,10 +4180,15 @@ int nft_validate_register_store(const struct nft_ctx *ctx,
41984180

41994181
return 0;
42004182
default:
4183+
if (reg < NFT_REG_1)
4184+
return -EINVAL;
4185+
if (reg > NFT_REG_MAX)
4186+
return -ERANGE;
42014187
if (len == 0)
42024188
return -EINVAL;
42034189
if (len > FIELD_SIZEOF(struct nft_data, data))
42044190
return -ERANGE;
4191+
42054192
if (data != NULL && type != NFT_DATA_VALUE)
42064193
return -EINVAL;
42074194
return 0;

net/netfilter/nft_bitwise.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,6 @@ static int nft_bitwise_init(const struct nft_ctx *ctx,
7171
return err;
7272

7373
priv->dreg = ntohl(nla_get_be32(tb[NFTA_BITWISE_DREG]));
74-
err = nft_validate_output_register(priv->dreg);
75-
if (err < 0)
76-
return err;
77-
7874
err = nft_validate_register_store(ctx, priv->dreg, NULL,
7975
NFT_DATA_VALUE, priv->len);
8076
if (err < 0)

net/netfilter/nft_byteorder.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,8 @@ static int nft_byteorder_init(const struct nft_ctx *ctx,
115115
return err;
116116

117117
priv->dreg = ntohl(nla_get_be32(tb[NFTA_BYTEORDER_DREG]));
118-
err = nft_validate_output_register(priv->dreg);
119-
if (err < 0)
120-
return err;
121-
err = nft_validate_register_store(ctx, priv->dreg, NULL,
122-
NFT_DATA_VALUE, priv->len);
123-
if (err < 0)
124-
return err;
125-
126-
return 0;
118+
return nft_validate_register_store(ctx, priv->dreg, NULL,
119+
NFT_DATA_VALUE, priv->len);
127120
}
128121

129122
static int nft_byteorder_dump(struct sk_buff *skb, const struct nft_expr *expr)

net/netfilter/nft_ct.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,6 @@ static int nft_ct_get_init(const struct nft_ctx *ctx,
307307
}
308308

309309
priv->dreg = ntohl(nla_get_be32(tb[NFTA_CT_DREG]));
310-
err = nft_validate_output_register(priv->dreg);
311-
if (err < 0)
312-
return err;
313-
314310
err = nft_validate_register_store(ctx, priv->dreg, NULL,
315311
NFT_DATA_VALUE, len);
316312
if (err < 0)

net/netfilter/nft_exthdr.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ static int nft_exthdr_init(const struct nft_ctx *ctx,
5858
const struct nlattr * const tb[])
5959
{
6060
struct nft_exthdr *priv = nft_expr_priv(expr);
61-
int err;
6261

6362
if (tb[NFTA_EXTHDR_DREG] == NULL ||
6463
tb[NFTA_EXTHDR_TYPE] == NULL ||
@@ -69,11 +68,8 @@ static int nft_exthdr_init(const struct nft_ctx *ctx,
6968
priv->type = nla_get_u8(tb[NFTA_EXTHDR_TYPE]);
7069
priv->offset = ntohl(nla_get_be32(tb[NFTA_EXTHDR_OFFSET]));
7170
priv->len = ntohl(nla_get_be32(tb[NFTA_EXTHDR_LEN]));
71+
priv->dreg = ntohl(nla_get_be32(tb[NFTA_EXTHDR_DREG]));
7272

73-
priv->dreg = ntohl(nla_get_be32(tb[NFTA_EXTHDR_DREG]));
74-
err = nft_validate_output_register(priv->dreg);
75-
if (err < 0)
76-
return err;
7773
return nft_validate_register_store(ctx, priv->dreg, NULL,
7874
NFT_DATA_VALUE, priv->len);
7975
}

net/netfilter/nft_immediate.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,12 @@ static int nft_immediate_init(const struct nft_ctx *ctx,
4949
tb[NFTA_IMMEDIATE_DATA] == NULL)
5050
return -EINVAL;
5151

52-
priv->dreg = ntohl(nla_get_be32(tb[NFTA_IMMEDIATE_DREG]));
53-
err = nft_validate_output_register(priv->dreg);
54-
if (err < 0)
55-
return err;
56-
5752
err = nft_data_init(ctx, &priv->data, &desc, tb[NFTA_IMMEDIATE_DATA]);
5853
if (err < 0)
5954
return err;
6055
priv->dlen = desc.len;
6156

57+
priv->dreg = ntohl(nla_get_be32(tb[NFTA_IMMEDIATE_DREG]));
6258
err = nft_validate_register_store(ctx, priv->dreg, &priv->data,
6359
desc.type, desc.len);
6460
if (err < 0)

net/netfilter/nft_lookup.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@ static int nft_lookup_init(const struct nft_ctx *ctx,
8080
return -EINVAL;
8181

8282
priv->dreg = ntohl(nla_get_be32(tb[NFTA_LOOKUP_DREG]));
83-
err = nft_validate_output_register(priv->dreg);
84-
if (err < 0)
85-
return err;
86-
8783
err = nft_validate_register_store(ctx, priv->dreg, NULL,
8884
set->dtype, set->dlen);
8985
if (err < 0)

net/netfilter/nft_meta.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,6 @@ int nft_meta_get_init(const struct nft_ctx *ctx,
218218
{
219219
struct nft_meta *priv = nft_expr_priv(expr);
220220
unsigned int len;
221-
int err;
222221

223222
priv->key = ntohl(nla_get_be32(tb[NFTA_META_KEY]));
224223
switch (priv->key) {
@@ -258,16 +257,8 @@ int nft_meta_get_init(const struct nft_ctx *ctx,
258257
}
259258

260259
priv->dreg = ntohl(nla_get_be32(tb[NFTA_META_DREG]));
261-
err = nft_validate_output_register(priv->dreg);
262-
if (err < 0)
263-
return err;
264-
265-
err = nft_validate_register_store(ctx, priv->dreg, NULL,
266-
NFT_DATA_VALUE, len);
267-
if (err < 0)
268-
return err;
269-
270-
return 0;
260+
return nft_validate_register_store(ctx, priv->dreg, NULL,
261+
NFT_DATA_VALUE, len);
271262
}
272263
EXPORT_SYMBOL_GPL(nft_meta_get_init);
273264

0 commit comments

Comments
 (0)