int family = nfmsg->nfgen_family, ret = 0;
 
        if (nla[NFTA_TABLE_FLAGS]) {
-               __be32 flags;
+               u32 flags;
 
                flags = ntohl(nla_get_be32(nla[NFTA_TABLE_FLAGS]));
                if (flags & ~NFT_TABLE_F_DORMANT)
        struct nft_table *table;
        struct net *net = sock_net(skb->sk);
        int family = nfmsg->nfgen_family;
+       u32 flags = 0;
 
        afi = nf_tables_afinfo_lookup(net, family, true);
        if (IS_ERR(afi))
                return nf_tables_updtable(nlsk, skb, nlh, nla, afi, table);
        }
 
+       if (nla[NFTA_TABLE_FLAGS]) {
+               flags = ntohl(nla_get_be32(nla[NFTA_TABLE_FLAGS]));
+               if (flags & ~NFT_TABLE_F_DORMANT)
+                       return -EINVAL;
+       }
+
        table = kzalloc(sizeof(*table) + nla_len(name), GFP_KERNEL);
        if (table == NULL)
                return -ENOMEM;
        nla_strlcpy(table->name, name, nla_len(name));
        INIT_LIST_HEAD(&table->chains);
        INIT_LIST_HEAD(&table->sets);
-
-       if (nla[NFTA_TABLE_FLAGS]) {
-               __be32 flags;
-
-               flags = ntohl(nla_get_be32(nla[NFTA_TABLE_FLAGS]));
-               if (flags & ~NFT_TABLE_F_DORMANT) {
-                       kfree(table);
-                       return -EINVAL;
-               }
-
-               table->flags |= flags;
-       }
+       table->flags = flags;
 
        list_add_tail(&table->list, &afi->tables);
        nf_tables_table_notify(skb, nlh, table, NFT_MSG_NEWTABLE, family);