]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
netfilter: nf_tables: kill nft_validate_output_register()
authorPatrick McHardy <kaber@trash.net>
Sat, 11 Apr 2015 01:27:29 +0000 (02:27 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 13 Apr 2015 14:25:50 +0000 (16:25 +0200)
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>
include/net/netfilter/nf_tables.h
net/bridge/netfilter/nft_meta_bridge.c
net/netfilter/nf_tables_api.c
net/netfilter/nft_bitwise.c
net/netfilter/nft_byteorder.c
net/netfilter/nft_ct.c
net/netfilter/nft_exthdr.c
net/netfilter/nft_immediate.c
net/netfilter/nft_lookup.c
net/netfilter/nft_meta.c
net/netfilter/nft_payload.c

index 7251f2034e3052cd12af92373b69407336881858..a8d4bd3edb26cca9dc4f10dfc8ad0ae596b76f05 100644 (file)
@@ -113,7 +113,6 @@ static inline enum nft_registers nft_type_to_reg(enum nft_data_types type)
 }
 
 int nft_validate_input_register(enum nft_registers reg);
-int nft_validate_output_register(enum nft_registers reg);
 int nft_validate_register_store(const struct nft_ctx *ctx,
                                enum nft_registers reg,
                                const struct nft_data *data,
index ee9e0b73d50e07cdfab21db715426a8cdd040649..54d98476844394ac955dde93a7f8a73b7b021e33 100644 (file)
@@ -54,7 +54,6 @@ static int nft_meta_bridge_get_init(const struct nft_ctx *ctx,
 {
        struct nft_meta *priv = nft_expr_priv(expr);
        unsigned int len;
-       int err;
 
        priv->key = ntohl(nla_get_be32(tb[NFTA_META_KEY]));
        switch (priv->key) {
@@ -67,16 +66,8 @@ static int nft_meta_bridge_get_init(const struct nft_ctx *ctx,
        }
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_META_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-
-       err = nft_validate_register_store(ctx, priv->dreg, NULL,
-                                         NFT_DATA_VALUE, len);
-       if (err < 0)
-               return err;
-
-       return 0;
+       return nft_validate_register_store(ctx, priv->dreg, NULL,
+                                          NFT_DATA_VALUE, len);
 }
 
 static struct nft_expr_type nft_meta_bridge_type;
index c96070e237e73fca90f48a198240249f0e28d39c..f01e89fe3c359d84e616c3afd54197d9f8ce2e83 100644 (file)
@@ -4139,24 +4139,6 @@ int nft_validate_input_register(enum nft_registers reg)
 }
 EXPORT_SYMBOL_GPL(nft_validate_input_register);
 
-/**
- *     nft_validate_output_register - validate an expressions' output register
- *
- *     @reg: the register number
- *
- *     Validate that the output register is one of the general purpose
- *     registers or the verdict register.
- */
-int nft_validate_output_register(enum nft_registers reg)
-{
-       if (reg < NFT_REG_VERDICT)
-               return -EINVAL;
-       if (reg > NFT_REG_MAX)
-               return -ERANGE;
-       return 0;
-}
-EXPORT_SYMBOL_GPL(nft_validate_output_register);
-
 /**
  *     nft_validate_register_store - validate an expressions' register store
  *
@@ -4198,10 +4180,15 @@ int nft_validate_register_store(const struct nft_ctx *ctx,
 
                return 0;
        default:
+               if (reg < NFT_REG_1)
+                       return -EINVAL;
+               if (reg > NFT_REG_MAX)
+                       return -ERANGE;
                if (len == 0)
                        return -EINVAL;
                if (len > FIELD_SIZEOF(struct nft_data, data))
                        return -ERANGE;
+
                if (data != NULL && type != NFT_DATA_VALUE)
                        return -EINVAL;
                return 0;
index afad27c700a1626bceded5ab1a635f97ab39f045..d312052873666999ee8dce6987985ca9cca3c47f 100644 (file)
@@ -71,10 +71,6 @@ static int nft_bitwise_init(const struct nft_ctx *ctx,
                return err;
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_BITWISE_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-
        err = nft_validate_register_store(ctx, priv->dreg, NULL,
                                          NFT_DATA_VALUE, priv->len);
        if (err < 0)
index 03bfb7598395969f55cfde2d45fef0f74ff3247f..848bce0323501a14032879179d8c04cfc491b6e2 100644 (file)
@@ -115,15 +115,8 @@ static int nft_byteorder_init(const struct nft_ctx *ctx,
                return err;
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_BYTEORDER_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-       err = nft_validate_register_store(ctx, priv->dreg, NULL,
-                                         NFT_DATA_VALUE, priv->len);
-       if (err < 0)
-               return err;
-
-       return 0;
+       return nft_validate_register_store(ctx, priv->dreg, NULL,
+                                          NFT_DATA_VALUE, priv->len);
 }
 
 static int nft_byteorder_dump(struct sk_buff *skb, const struct nft_expr *expr)
index e23ddb663c6930d5e073b815f113d082dd9d8ae3..d85f9ad921f29eec6aeb87b1039b73939cb920dc 100644 (file)
@@ -307,10 +307,6 @@ static int nft_ct_get_init(const struct nft_ctx *ctx,
        }
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_CT_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-
        err = nft_validate_register_store(ctx, priv->dreg, NULL,
                                          NFT_DATA_VALUE, len);
        if (err < 0)
index ab16a38096284fc7f6b365e14fa56b799b914546..8c4981cd813b353059967e434fed6276535557ec 100644 (file)
@@ -58,7 +58,6 @@ static int nft_exthdr_init(const struct nft_ctx *ctx,
                           const struct nlattr * const tb[])
 {
        struct nft_exthdr *priv = nft_expr_priv(expr);
-       int err;
 
        if (tb[NFTA_EXTHDR_DREG] == NULL ||
            tb[NFTA_EXTHDR_TYPE] == NULL ||
@@ -69,11 +68,8 @@ static int nft_exthdr_init(const struct nft_ctx *ctx,
        priv->type   = nla_get_u8(tb[NFTA_EXTHDR_TYPE]);
        priv->offset = ntohl(nla_get_be32(tb[NFTA_EXTHDR_OFFSET]));
        priv->len    = ntohl(nla_get_be32(tb[NFTA_EXTHDR_LEN]));
+       priv->dreg   = ntohl(nla_get_be32(tb[NFTA_EXTHDR_DREG]));
 
-       priv->dreg = ntohl(nla_get_be32(tb[NFTA_EXTHDR_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
        return nft_validate_register_store(ctx, priv->dreg, NULL,
                                           NFT_DATA_VALUE, priv->len);
 }
index d058a9338ea794c7bbb742cabf39933618474349..a164c04df9fab0ed06ed9cd48065dbec90e11918 100644 (file)
@@ -49,16 +49,12 @@ static int nft_immediate_init(const struct nft_ctx *ctx,
            tb[NFTA_IMMEDIATE_DATA] == NULL)
                return -EINVAL;
 
-       priv->dreg = ntohl(nla_get_be32(tb[NFTA_IMMEDIATE_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-
        err = nft_data_init(ctx, &priv->data, &desc, tb[NFTA_IMMEDIATE_DATA]);
        if (err < 0)
                return err;
        priv->dlen = desc.len;
 
+       priv->dreg = ntohl(nla_get_be32(tb[NFTA_IMMEDIATE_DREG]));
        err = nft_validate_register_store(ctx, priv->dreg, &priv->data,
                                          desc.type, desc.len);
        if (err < 0)
index 3e4d8efa76bc21e22a6c504452521669b0408665..3574543475c2ee2f43d13370a8a1a752efb05d61 100644 (file)
@@ -80,10 +80,6 @@ static int nft_lookup_init(const struct nft_ctx *ctx,
                        return -EINVAL;
 
                priv->dreg = ntohl(nla_get_be32(tb[NFTA_LOOKUP_DREG]));
-               err = nft_validate_output_register(priv->dreg);
-               if (err < 0)
-                       return err;
-
                err = nft_validate_register_store(ctx, priv->dreg, NULL,
                                                  set->dtype, set->dlen);
                if (err < 0)
index b733755811e76f37d09dacb0e69da71df59e570a..fbaee1d373bb3eb3201fdac2dfd1a9012ca35030 100644 (file)
@@ -218,7 +218,6 @@ int nft_meta_get_init(const struct nft_ctx *ctx,
 {
        struct nft_meta *priv = nft_expr_priv(expr);
        unsigned int len;
-       int err;
 
        priv->key = ntohl(nla_get_be32(tb[NFTA_META_KEY]));
        switch (priv->key) {
@@ -258,16 +257,8 @@ int nft_meta_get_init(const struct nft_ctx *ctx,
        }
 
        priv->dreg = ntohl(nla_get_be32(tb[NFTA_META_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
-
-       err = nft_validate_register_store(ctx, priv->dreg, NULL,
-                                         NFT_DATA_VALUE, len);
-       if (err < 0)
-               return err;
-
-       return 0;
+       return nft_validate_register_store(ctx, priv->dreg, NULL,
+                                          NFT_DATA_VALUE, len);
 }
 EXPORT_SYMBOL_GPL(nft_meta_get_init);
 
index 9c7ad4bfe9d6a1567ce96a34307ae0890937e023..b2a9ef9d3df56c1b85c145d0331aa82b06870fc0 100644 (file)
@@ -62,16 +62,12 @@ static int nft_payload_init(const struct nft_ctx *ctx,
                            const struct nlattr * const tb[])
 {
        struct nft_payload *priv = nft_expr_priv(expr);
-       int err;
 
        priv->base   = ntohl(nla_get_be32(tb[NFTA_PAYLOAD_BASE]));
        priv->offset = ntohl(nla_get_be32(tb[NFTA_PAYLOAD_OFFSET]));
        priv->len    = ntohl(nla_get_be32(tb[NFTA_PAYLOAD_LEN]));
+       priv->dreg   = ntohl(nla_get_be32(tb[NFTA_PAYLOAD_DREG]));
 
-       priv->dreg = ntohl(nla_get_be32(tb[NFTA_PAYLOAD_DREG]));
-       err = nft_validate_output_register(priv->dreg);
-       if (err < 0)
-               return err;
        return nft_validate_register_store(ctx, priv->dreg, NULL,
                                           NFT_DATA_VALUE, priv->len);
 }