Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netfilter: nf_tables: use C99 struct initializer for nft_set_iter

Use C99 struct initializer for nft_set_iter, simplifying the code and
preventing future errors due to uninitialized fields if new fields are
added to the struct.

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Florian Westphal <fw@strlen.de>

authored by

Fernando Fernandez Mancera and committed by
Florian Westphal
320d80ee ea7d0d60

+21 -26
+16 -18
net/netfilter/nf_tables_api.c
··· 5770 5770 struct nft_set_binding *binding) 5771 5771 { 5772 5772 struct nft_set_binding *i; 5773 - struct nft_set_iter iter; 5773 + struct nft_set_iter iter = { 5774 + .genmask = nft_genmask_next(ctx->net), 5775 + .type = NFT_ITER_UPDATE, 5776 + .fn = nf_tables_bind_check_setelem, 5777 + }; 5774 5778 5775 5779 if (!list_empty(&set->bindings) && nft_set_is_anonymous(set)) 5776 5780 return -EBUSY; ··· 5788 5784 i->chain == binding->chain) 5789 5785 goto bind; 5790 5786 } 5791 - 5792 - iter.genmask = nft_genmask_next(ctx->net); 5793 - iter.type = NFT_ITER_UPDATE; 5794 - iter.skip = 0; 5795 - iter.count = 0; 5796 - iter.err = 0; 5797 - iter.fn = nf_tables_bind_check_setelem; 5798 5787 5799 5788 set->ops->walk(ctx, set, &iter); 5800 5789 if (!iter.err) ··· 6192 6195 struct nftables_pernet *nft_net; 6193 6196 struct nft_table *table; 6194 6197 struct nft_set *set; 6195 - struct nft_set_dump_args args; 6198 + struct nft_set_dump_args args = { 6199 + .cb = cb, 6200 + .skb = skb, 6201 + .reset = dump_ctx->reset, 6202 + .iter = { 6203 + .genmask = nft_genmask_cur(net), 6204 + .type = NFT_ITER_READ, 6205 + .skip = cb->args[0], 6206 + .fn = nf_tables_dump_setelem, 6207 + }, 6208 + }; 6196 6209 bool set_found = false; 6197 6210 struct nlmsghdr *nlh; 6198 6211 struct nlattr *nest; ··· 6253 6246 if (nest == NULL) 6254 6247 goto nla_put_failure; 6255 6248 6256 - args.cb = cb; 6257 - args.skb = skb; 6258 - args.reset = dump_ctx->reset; 6259 - args.iter.genmask = nft_genmask_cur(net); 6260 - args.iter.type = NFT_ITER_READ; 6261 - args.iter.skip = cb->args[0]; 6262 - args.iter.count = 0; 6263 - args.iter.err = 0; 6264 - args.iter.fn = nf_tables_dump_setelem; 6265 6249 set->ops->walk(&dump_ctx->ctx, set, &args.iter); 6266 6250 6267 6251 if (!args.iter.err && args.iter.count == cb->args[0])
+5 -8
net/netfilter/nft_lookup.c
··· 246 246 const struct nft_expr *expr) 247 247 { 248 248 const struct nft_lookup *priv = nft_expr_priv(expr); 249 - struct nft_set_iter iter; 249 + struct nft_set_iter iter = { 250 + .genmask = nft_genmask_next(ctx->net), 251 + .type = NFT_ITER_UPDATE, 252 + .fn = nft_setelem_validate, 253 + }; 250 254 251 255 if (!(priv->set->flags & NFT_SET_MAP) || 252 256 priv->set->dtype != NFT_DATA_VERDICT) 253 257 return 0; 254 - 255 - iter.genmask = nft_genmask_next(ctx->net); 256 - iter.type = NFT_ITER_UPDATE; 257 - iter.skip = 0; 258 - iter.count = 0; 259 - iter.err = 0; 260 - iter.fn = nft_setelem_validate; 261 258 262 259 priv->set->ops->walk(ctx, priv->set, &iter); 263 260 if (!iter.err)