On Thu, Sep 28, 2023 at 06:52:37PM +0200, Phil Sutter wrote: [...] This whole chunk below looks like a cleanup to remove one indentation level? Please add an initial patch for this. > static int nf_tables_dump_rules_start(struct netlink_callback *cb) > { > + struct nft_rule_dump_ctx *ctx = (void *)cb->ctx; > const struct nlattr * const *nla = cb->data; > - struct nft_rule_dump_ctx *ctx = NULL; > > - if (nla[NFTA_RULE_TABLE] || nla[NFTA_RULE_CHAIN]) { > - ctx = kzalloc(sizeof(*ctx), GFP_ATOMIC); > - if (!ctx) > - return -ENOMEM; > + BUILD_BUG_ON(sizeof(*ctx) > sizeof(cb->ctx)); > > - if (nla[NFTA_RULE_TABLE]) { > - ctx->table = nla_strdup(nla[NFTA_RULE_TABLE], > - GFP_ATOMIC); > - if (!ctx->table) { > - kfree(ctx); > - return -ENOMEM; > - } > - } > - if (nla[NFTA_RULE_CHAIN]) { > - ctx->chain = nla_strdup(nla[NFTA_RULE_CHAIN], > - GFP_ATOMIC); > - if (!ctx->chain) { > - kfree(ctx->table); > - kfree(ctx); > - return -ENOMEM; > - } > + if (nla[NFTA_RULE_TABLE]) { > + ctx->table = nla_strdup(nla[NFTA_RULE_TABLE], GFP_ATOMIC); > + if (!ctx->table) > + return -ENOMEM; > + } > + if (nla[NFTA_RULE_CHAIN]) { > + ctx->chain = nla_strdup(nla[NFTA_RULE_CHAIN], GFP_ATOMIC); > + if (!ctx->chain) { > + kfree(ctx->table); > + return -ENOMEM; > } > } > + if (NFNL_MSG_TYPE(cb->nlh->nlmsg_type) == NFT_MSG_GETRULE_RESET) > + ctx->reset = true; > > - cb->data = ctx; > return 0; > } > > static int nf_tables_dump_rules_done(struct netlink_callback *cb) > { > - struct nft_rule_dump_ctx *ctx = cb->data; > + struct nft_rule_dump_ctx *ctx = (void *)cb->ctx; > > - if (ctx) { > - kfree(ctx->table); > - kfree(ctx->chain); > - kfree(ctx); > - } > + kfree(ctx->table); > + kfree(ctx->chain); > return 0; > } > > -- > 2.41.0 >