static int nft_limit_init(struct nft_limit_priv *priv,
                          const struct nlattr * const tb[], bool pkts)
 {
+       bool invert = false;
        u64 unit, tokens;
 
        if (tb[NFTA_LIMIT_RATE] == NULL ||
                                 priv->rate);
        }
 
+       if (tb[NFTA_LIMIT_FLAGS]) {
+               u32 flags = ntohl(nla_get_be32(tb[NFTA_LIMIT_FLAGS]));
+
+               if (flags & ~NFT_LIMIT_F_INV)
+                       return -EOPNOTSUPP;
+
+               if (flags & NFT_LIMIT_F_INV)
+                       invert = true;
+       }
+
        priv->limit = kmalloc(sizeof(*priv->limit), GFP_KERNEL_ACCOUNT);
        if (!priv->limit)
                return -ENOMEM;
 
        priv->limit->tokens = tokens;
        priv->tokens_max = priv->limit->tokens;
-
-       if (tb[NFTA_LIMIT_FLAGS]) {
-               u32 flags = ntohl(nla_get_be32(tb[NFTA_LIMIT_FLAGS]));
-
-               if (flags & NFT_LIMIT_F_INV)
-                       priv->invert = true;
-       }
+       priv->invert = invert;
        priv->limit->last = ktime_get_ns();
        spin_lock_init(&priv->limit->lock);