kernel: bump 4.14 to 4.14.68
[openwrt/openwrt.git] / target / linux / generic / backport-4.14 / 338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch
index 73cdab0be0d2c5147bd75953663aee810b5917e6..868f3e68e6f88363d7ebe0c7748790790e6335e1 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
 
 --- a/include/net/netfilter/nf_tables.h
 +++ b/include/net/netfilter/nf_tables.h
-@@ -950,28 +950,12 @@ struct nft_table {
+@@ -955,28 +955,12 @@ struct nft_table {
        struct list_head                flowtables;
        u64                             hgenerator;
        u32                             use;
@@ -42,7 +42,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  int nft_register_chain_type(const struct nf_chain_type *);
  void nft_unregister_chain_type(const struct nf_chain_type *);
  
-@@ -1139,9 +1123,6 @@ void nft_trace_notify(struct nft_tracein
+@@ -1144,9 +1128,6 @@ void nft_trace_notify(struct nft_tracein
  #define nft_dereference(p)                                    \
        nfnl_dereference(p, NFNL_SUBSYS_NFTABLES)
  
@@ -323,7 +323,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
  static void nft_ctx_init(struct nft_ctx *ctx,
                         struct net *net,
-@@ -390,7 +325,7 @@ static struct nft_table *nft_table_looku
+@@ -419,7 +354,7 @@ static struct nft_table *nft_table_looku
  
        list_for_each_entry(table, &net->nft.tables, list) {
                if (!nla_strcmp(nla, table->name) &&
@@ -332,7 +332,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                    nft_active_genmask(table, genmask))
                        return table;
        }
-@@ -531,7 +466,7 @@ static int nf_tables_dump_tables(struct
+@@ -560,7 +495,7 @@ static int nf_tables_dump_tables(struct
        cb->seq = net->nft.base_seq;
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -341,7 +341,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                if (idx < s_idx)
-@@ -545,7 +480,7 @@ static int nf_tables_dump_tables(struct
+@@ -574,7 +509,7 @@ static int nf_tables_dump_tables(struct
                                              NETLINK_CB(cb->skb).portid,
                                              cb->nlh->nlmsg_seq,
                                              NFT_MSG_NEWTABLE, NLM_F_MULTI,
@@ -350,7 +350,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        goto done;
  
                nl_dump_check_consistent(cb, nlmsg_hdr(skb));
-@@ -565,7 +500,6 @@ static int nf_tables_gettable(struct net
+@@ -594,7 +529,6 @@ static int nf_tables_gettable(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_cur(net);
@@ -358,7 +358,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        const struct nft_table *table;
        struct sk_buff *skb2;
        int family = nfmsg->nfgen_family;
-@@ -578,11 +512,7 @@ static int nf_tables_gettable(struct net
+@@ -607,11 +541,7 @@ static int nf_tables_gettable(struct net
                return netlink_dump_start(nlsk, skb, nlh, &c);
        }
  
@@ -371,7 +371,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -702,19 +632,14 @@ static int nf_tables_newtable(struct net
+@@ -731,19 +661,14 @@ static int nf_tables_newtable(struct net
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
        const struct nlattr *name;
@@ -392,7 +392,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        if (IS_ERR(table)) {
                if (PTR_ERR(table) != -ENOENT)
                        return PTR_ERR(table);
-@@ -724,7 +649,7 @@ static int nf_tables_newtable(struct net
+@@ -753,7 +678,7 @@ static int nf_tables_newtable(struct net
                if (nlh->nlmsg_flags & NLM_F_REPLACE)
                        return -EOPNOTSUPP;
  
@@ -401,7 +401,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                return nf_tables_updtable(&ctx);
        }
  
-@@ -734,40 +659,34 @@ static int nf_tables_newtable(struct net
+@@ -763,40 +688,34 @@ static int nf_tables_newtable(struct net
                        return -EINVAL;
        }
  
@@ -450,7 +450,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        return err;
  }
  
-@@ -838,10 +757,10 @@ static int nft_flush(struct nft_ctx *ctx
+@@ -867,10 +786,10 @@ static int nft_flush(struct nft_ctx *ctx
        int err = 0;
  
        list_for_each_entry_safe(table, nt, &ctx->net->nft.tables, list) {
@@ -463,7 +463,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
                if (!nft_is_active_next(ctx->net, table))
                        continue;
-@@ -867,7 +786,6 @@ static int nf_tables_deltable(struct net
+@@ -896,7 +815,6 @@ static int nf_tables_deltable(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
@@ -471,7 +471,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        int family = nfmsg->nfgen_family;
        struct nft_ctx ctx;
-@@ -876,11 +794,7 @@ static int nf_tables_deltable(struct net
+@@ -905,11 +823,7 @@ static int nf_tables_deltable(struct net
        if (family == AF_UNSPEC || nla[NFTA_TABLE_NAME] == NULL)
                return nft_flush(&ctx, family);
  
@@ -484,7 +484,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -889,7 +803,7 @@ static int nf_tables_deltable(struct net
+@@ -918,7 +832,7 @@ static int nf_tables_deltable(struct net
            table->use > 0)
                return -EBUSY;
  
@@ -493,7 +493,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        ctx.table = table;
  
        return nft_flush_table(&ctx);
-@@ -901,7 +815,6 @@ static void nf_tables_table_destroy(stru
+@@ -930,7 +844,6 @@ static void nf_tables_table_destroy(stru
  
        kfree(ctx->table->name);
        kfree(ctx->table);
@@ -501,7 +501,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  }
  
  int nft_register_chain_type(const struct nf_chain_type *ctype)
-@@ -1130,7 +1043,7 @@ static int nf_tables_dump_chains(struct
+@@ -1159,7 +1072,7 @@ static int nf_tables_dump_chains(struct
        cb->seq = net->nft.base_seq;
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -510,7 +510,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                list_for_each_entry_rcu(chain, &table->chains, list) {
-@@ -1146,7 +1059,7 @@ static int nf_tables_dump_chains(struct
+@@ -1175,7 +1088,7 @@ static int nf_tables_dump_chains(struct
                                                      cb->nlh->nlmsg_seq,
                                                      NFT_MSG_NEWCHAIN,
                                                      NLM_F_MULTI,
@@ -519,7 +519,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                                      chain) < 0)
                                goto done;
  
-@@ -1168,7 +1081,6 @@ static int nf_tables_getchain(struct net
+@@ -1197,7 +1110,6 @@ static int nf_tables_getchain(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_cur(net);
@@ -527,7 +527,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        const struct nft_table *table;
        const struct nft_chain *chain;
        struct sk_buff *skb2;
-@@ -1182,11 +1094,7 @@ static int nf_tables_getchain(struct net
+@@ -1211,11 +1123,7 @@ static int nf_tables_getchain(struct net
                return netlink_dump_start(nlsk, skb, nlh, &c);
        }
  
@@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -1550,7 +1458,6 @@ static int nf_tables_newchain(struct net
+@@ -1597,7 +1505,6 @@ static int nf_tables_newchain(struct net
        const struct nlattr * uninitialized_var(name);
        u8 genmask = nft_genmask_next(net);
        int family = nfmsg->nfgen_family;
@@ -548,7 +548,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_chain *chain;
        u8 policy = NF_ACCEPT;
-@@ -1560,11 +1467,7 @@ static int nf_tables_newchain(struct net
+@@ -1607,11 +1514,7 @@ static int nf_tables_newchain(struct net
  
        create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
  
@@ -561,7 +561,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -1605,7 +1508,7 @@ static int nf_tables_newchain(struct net
+@@ -1652,7 +1555,7 @@ static int nf_tables_newchain(struct net
                }
        }
  
@@ -570,7 +570,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        if (chain != NULL) {
                if (nlh->nlmsg_flags & NLM_F_EXCL)
-@@ -1626,7 +1529,6 @@ static int nf_tables_delchain(struct net
+@@ -1673,7 +1576,6 @@ static int nf_tables_delchain(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
@@ -578,7 +578,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_chain *chain;
        struct nft_rule *rule;
-@@ -1635,11 +1537,7 @@ static int nf_tables_delchain(struct net
+@@ -1682,11 +1584,7 @@ static int nf_tables_delchain(struct net
        u32 use;
        int err;
  
@@ -591,7 +591,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -1652,7 +1550,7 @@ static int nf_tables_delchain(struct net
+@@ -1699,7 +1597,7 @@ static int nf_tables_delchain(struct net
            chain->use > 0)
                return -EBUSY;
  
@@ -600,7 +600,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        use = chain->use;
        list_for_each_entry(rule, &chain->rules, list) {
-@@ -2075,7 +1973,7 @@ static int nf_tables_dump_rules(struct s
+@@ -2123,7 +2021,7 @@ static int nf_tables_dump_rules(struct s
        cb->seq = net->nft.base_seq;
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -609,7 +609,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                if (ctx && ctx->table && strcmp(ctx->table, table->name) != 0)
-@@ -2098,7 +1996,7 @@ static int nf_tables_dump_rules(struct s
+@@ -2146,7 +2044,7 @@ static int nf_tables_dump_rules(struct s
                                                              cb->nlh->nlmsg_seq,
                                                              NFT_MSG_NEWRULE,
                                                              NLM_F_MULTI | NLM_F_APPEND,
@@ -618,7 +618,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                                              table, chain, rule) < 0)
                                        goto done;
  
-@@ -2134,7 +2032,6 @@ static int nf_tables_getrule(struct net
+@@ -2182,7 +2080,6 @@ static int nf_tables_getrule(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_cur(net);
@@ -626,7 +626,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        const struct nft_table *table;
        const struct nft_chain *chain;
        const struct nft_rule *rule;
-@@ -2178,11 +2075,7 @@ static int nf_tables_getrule(struct net
+@@ -2226,11 +2123,7 @@ static int nf_tables_getrule(struct net
                return netlink_dump_start(nlsk, skb, nlh, &c);
        }
  
@@ -639,7 +639,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -2240,7 +2133,7 @@ static int nf_tables_newrule(struct net
+@@ -2295,7 +2188,7 @@ static int nf_tables_newrule(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
@@ -648,7 +648,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_chain *chain;
        struct nft_rule *rule, *old_rule = NULL;
-@@ -2256,11 +2149,7 @@ static int nf_tables_newrule(struct net
+@@ -2311,11 +2204,7 @@ static int nf_tables_newrule(struct net
  
        create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
  
@@ -661,7 +661,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -2300,7 +2189,7 @@ static int nf_tables_newrule(struct net
+@@ -2355,7 +2244,7 @@ static int nf_tables_newrule(struct net
                        return PTR_ERR(old_rule);
        }
  
@@ -670,7 +670,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        n = 0;
        size = 0;
-@@ -2424,18 +2313,13 @@ static int nf_tables_delrule(struct net
+@@ -2484,18 +2373,13 @@ static int nf_tables_delrule(struct net
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
@@ -690,7 +690,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -2447,7 +2331,7 @@ static int nf_tables_delrule(struct net
+@@ -2507,7 +2391,7 @@ static int nf_tables_delrule(struct net
                        return PTR_ERR(chain);
        }
  
@@ -699,7 +699,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        if (chain) {
                if (nla[NFTA_RULE_HANDLE]) {
-@@ -2632,26 +2516,17 @@ static int nft_ctx_init_from_setattr(str
+@@ -2692,26 +2576,17 @@ static int nft_ctx_init_from_setattr(str
                                     u8 genmask)
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
@@ -729,7 +729,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        return 0;
  }
  
-@@ -2882,7 +2757,7 @@ static int nf_tables_dump_sets(struct sk
+@@ -2943,7 +2818,7 @@ static int nf_tables_dump_sets(struct sk
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
                if (ctx->family != NFPROTO_UNSPEC &&
@@ -738,7 +738,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                if (ctx->table && ctx->table != table)
-@@ -2903,7 +2778,7 @@ static int nf_tables_dump_sets(struct sk
+@@ -2964,7 +2839,7 @@ static int nf_tables_dump_sets(struct sk
  
                        ctx_set = *ctx;
                        ctx_set.table = table;
@@ -747,7 +747,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
                        if (nf_tables_fill_set(skb, &ctx_set, set,
                                               NFT_MSG_NEWSET,
-@@ -3015,8 +2890,8 @@ static int nf_tables_newset(struct net *
+@@ -3076,8 +2951,8 @@ static int nf_tables_newset(struct net *
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
@@ -757,7 +757,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_set *set;
        struct nft_ctx ctx;
-@@ -3123,16 +2998,12 @@ static int nf_tables_newset(struct net *
+@@ -3184,16 +3059,12 @@ static int nf_tables_newset(struct net *
  
        create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
  
@@ -776,7 +776,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        set = nf_tables_set_lookup(table, nla[NFTA_SET_NAME], genmask);
        if (IS_ERR(set)) {
-@@ -3390,19 +3261,15 @@ static int nft_ctx_init_from_elemattr(st
+@@ -3455,19 +3326,15 @@ static int nft_ctx_init_from_elemattr(st
                                      u8 genmask)
  {
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
@@ -799,7 +799,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        return 0;
  }
  
-@@ -3520,7 +3387,7 @@ static int nf_tables_dump_set(struct sk_
+@@ -3585,7 +3452,7 @@ static int nf_tables_dump_set(struct sk_
        rcu_read_lock();
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
                if (dump_ctx->ctx.family != NFPROTO_UNSPEC &&
@@ -808,7 +808,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                if (table != dump_ctx->ctx.table)
-@@ -3550,7 +3417,7 @@ static int nf_tables_dump_set(struct sk_
+@@ -3615,7 +3482,7 @@ static int nf_tables_dump_set(struct sk_
                goto nla_put_failure;
  
        nfmsg = nlmsg_data(nlh);
@@ -817,7 +817,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        nfmsg->version      = NFNETLINK_V0;
        nfmsg->res_id       = htons(net->nft.base_seq & 0xffff);
  
-@@ -4427,7 +4294,6 @@ static int nf_tables_newobj(struct net *
+@@ -4494,7 +4361,6 @@ static int nf_tables_newobj(struct net *
        const struct nft_object_type *type;
        u8 genmask = nft_genmask_next(net);
        int family = nfmsg->nfgen_family;
@@ -825,7 +825,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_object *obj;
        struct nft_ctx ctx;
-@@ -4439,11 +4305,7 @@ static int nf_tables_newobj(struct net *
+@@ -4506,11 +4372,7 @@ static int nf_tables_newobj(struct net *
            !nla[NFTA_OBJ_DATA])
                return -EINVAL;
  
@@ -838,7 +838,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -4462,7 +4324,7 @@ static int nf_tables_newobj(struct net *
+@@ -4529,7 +4391,7 @@ static int nf_tables_newobj(struct net *
                return 0;
        }
  
@@ -847,7 +847,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        type = nft_obj_type_get(objtype);
        if (IS_ERR(type))
-@@ -4554,7 +4416,7 @@ static int nf_tables_dump_obj(struct sk_
+@@ -4621,7 +4483,7 @@ static int nf_tables_dump_obj(struct sk_
        cb->seq = net->nft.base_seq;
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -856,7 +856,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                list_for_each_entry_rcu(obj, &table->objects, list) {
-@@ -4577,7 +4439,7 @@ static int nf_tables_dump_obj(struct sk_
+@@ -4644,7 +4506,7 @@ static int nf_tables_dump_obj(struct sk_
                                                    cb->nlh->nlmsg_seq,
                                                    NFT_MSG_NEWOBJ,
                                                    NLM_F_MULTI | NLM_F_APPEND,
@@ -865,7 +865,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                                    obj, reset) < 0)
                                goto done;
  
-@@ -4635,7 +4497,6 @@ static int nf_tables_getobj(struct net *
+@@ -4702,7 +4564,6 @@ static int nf_tables_getobj(struct net *
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_cur(net);
        int family = nfmsg->nfgen_family;
@@ -873,7 +873,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        const struct nft_table *table;
        struct nft_object *obj;
        struct sk_buff *skb2;
-@@ -4666,11 +4527,7 @@ static int nf_tables_getobj(struct net *
+@@ -4733,11 +4594,7 @@ static int nf_tables_getobj(struct net *
            !nla[NFTA_OBJ_TYPE])
                return -EINVAL;
  
@@ -886,7 +886,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -4717,7 +4574,6 @@ static int nf_tables_delobj(struct net *
+@@ -4784,7 +4641,6 @@ static int nf_tables_delobj(struct net *
        const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
        u8 genmask = nft_genmask_next(net);
        int family = nfmsg->nfgen_family;
@@ -894,7 +894,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_object *obj;
        struct nft_ctx ctx;
-@@ -4727,11 +4583,7 @@ static int nf_tables_delobj(struct net *
+@@ -4794,11 +4650,7 @@ static int nf_tables_delobj(struct net *
            !nla[NFTA_OBJ_NAME])
                return -EINVAL;
  
@@ -907,7 +907,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                       genmask);
        if (IS_ERR(table))
                return PTR_ERR(table);
-@@ -4743,7 +4595,7 @@ static int nf_tables_delobj(struct net *
+@@ -4810,7 +4662,7 @@ static int nf_tables_delobj(struct net *
        if (obj->use > 0)
                return -EBUSY;
  
@@ -916,7 +916,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        return nft_delobj(&ctx, obj);
  }
-@@ -4928,33 +4780,31 @@ err1:
+@@ -4995,33 +4847,31 @@ err1:
        return err;
  }
  
@@ -956,7 +956,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        return ERR_PTR(-EAGAIN);
        }
  #endif
-@@ -5002,7 +4852,6 @@ static int nf_tables_newflowtable(struct
+@@ -5069,7 +4919,6 @@ static int nf_tables_newflowtable(struct
        u8 genmask = nft_genmask_next(net);
        int family = nfmsg->nfgen_family;
        struct nft_flowtable *flowtable;
@@ -964,7 +964,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        struct nft_table *table;
        struct nft_ctx ctx;
        int err, i, k;
-@@ -5012,12 +4861,8 @@ static int nf_tables_newflowtable(struct
+@@ -5079,12 +4928,8 @@ static int nf_tables_newflowtable(struct
            !nla[NFTA_FLOWTABLE_HOOK])
                return -EINVAL;
  
@@ -978,7 +978,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        if (IS_ERR(table))
                return PTR_ERR(table);
  
-@@ -5034,7 +4879,7 @@ static int nf_tables_newflowtable(struct
+@@ -5101,7 +4946,7 @@ static int nf_tables_newflowtable(struct
                return 0;
        }
  
@@ -987,7 +987,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        flowtable = kzalloc(sizeof(*flowtable), GFP_KERNEL);
        if (!flowtable)
-@@ -5047,7 +4892,7 @@ static int nf_tables_newflowtable(struct
+@@ -5114,7 +4959,7 @@ static int nf_tables_newflowtable(struct
                goto err1;
        }
  
@@ -996,7 +996,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        if (IS_ERR(type)) {
                err = PTR_ERR(type);
                goto err2;
-@@ -5107,16 +4952,11 @@ static int nf_tables_delflowtable(struct
+@@ -5174,16 +5019,11 @@ static int nf_tables_delflowtable(struct
        u8 genmask = nft_genmask_next(net);
        int family = nfmsg->nfgen_family;
        struct nft_flowtable *flowtable;
@@ -1014,7 +1014,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        if (IS_ERR(table))
                return PTR_ERR(table);
  
-@@ -5127,7 +4967,7 @@ static int nf_tables_delflowtable(struct
+@@ -5194,7 +5034,7 @@ static int nf_tables_delflowtable(struct
        if (flowtable->use > 0)
                return -EBUSY;
  
@@ -1023,7 +1023,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
        return nft_delflowtable(&ctx, flowtable);
  }
-@@ -5202,7 +5042,7 @@ static int nf_tables_dump_flowtable(stru
+@@ -5269,7 +5109,7 @@ static int nf_tables_dump_flowtable(stru
        cb->seq = net->nft.base_seq;
  
        list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -1032,7 +1032,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                        continue;
  
                list_for_each_entry_rcu(flowtable, &table->flowtables, list) {
-@@ -5221,7 +5061,7 @@ static int nf_tables_dump_flowtable(stru
+@@ -5288,7 +5128,7 @@ static int nf_tables_dump_flowtable(stru
                                                          cb->nlh->nlmsg_seq,
                                                          NFT_MSG_NEWFLOWTABLE,
                                                          NLM_F_MULTI | NLM_F_APPEND,
@@ -1041,7 +1041,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
                                goto done;
  
                        nl_dump_check_consistent(cb, nlmsg_hdr(skb));
-@@ -5281,7 +5121,6 @@ static int nf_tables_getflowtable(struct
+@@ -5348,7 +5188,6 @@ static int nf_tables_getflowtable(struct
        u8 genmask = nft_genmask_cur(net);
        int family = nfmsg->nfgen_family;
        struct nft_flowtable *flowtable;
@@ -1049,7 +1049,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        const struct nft_table *table;
        struct sk_buff *skb2;
        int err;
-@@ -5307,12 +5146,8 @@ static int nf_tables_getflowtable(struct
+@@ -5374,12 +5213,8 @@ static int nf_tables_getflowtable(struct
        if (!nla[NFTA_FLOWTABLE_NAME])
                return -EINVAL;
  
@@ -1063,7 +1063,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
        if (IS_ERR(table))
                return PTR_ERR(table);
  
-@@ -6476,7 +6311,7 @@ int __nft_release_basechain(struct nft_c
+@@ -6550,7 +6385,7 @@ int __nft_release_basechain(struct nft_c
  }
  EXPORT_SYMBOL_GPL(__nft_release_basechain);
  
@@ -1072,7 +1072,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  {
        struct nft_flowtable *flowtable, *nf;
        struct nft_table *table, *nt;
-@@ -6489,7 +6324,7 @@ static void __nft_release_afinfo(struct
+@@ -6563,7 +6398,7 @@ static void __nft_release_afinfo(struct
        };
  
        list_for_each_entry_safe(table, nt, &net->nft.tables, list) {
@@ -1081,7 +1081,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  
                list_for_each_entry(chain, &table->chains, list)
                        nf_tables_unregister_hook(net, table, chain);
-@@ -6541,7 +6376,7 @@ static int __net_init nf_tables_init_net
+@@ -6615,7 +6450,7 @@ static int __net_init nf_tables_init_net
  
  static void __net_exit nf_tables_exit_net(struct net *net)
  {