On Wed, Aug 26, 2020 at 11:20 AM Casey Schaufler <casey@xxxxxxxxxxxxxxxx> wrote: > > Change netlink netfilter interfaces to use lsmcontext > pointers, and remove scaffolding. > > Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> > Reviewed-by: John Johansen <john.johansen@xxxxxxxxxxxxx> > Acked-by: Stephen Smalley <sds@xxxxxxxxxxxxx> > Signed-off-by: Casey Schaufler <casey@xxxxxxxxxxxxxxxx> > cc: netdev@xxxxxxxxxxxxxxx > --- > net/netfilter/nfnetlink_queue.c | 31 ++++++++++++------------------- > 1 file changed, 12 insertions(+), 19 deletions(-) ... > diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c > index d3f8e808c5d3..c830401f7792 100644 > --- a/net/netfilter/nfnetlink_queue.c > +++ b/net/netfilter/nfnetlink_queue.c > @@ -401,8 +399,7 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue, > enum ip_conntrack_info ctinfo; > struct nfnl_ct_hook *nfnl_ct; > bool csum_verify; > - struct lsmcontext scaff; /* scaffolding */ > - char *secdata = NULL; > + struct lsmcontext context = { }; > u32 seclen = 0; > > size = nlmsg_total_size(sizeof(struct nfgenmsg)) > @@ -469,7 +466,7 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue, > } > > if ((queue->flags & NFQA_CFG_F_SECCTX) && entskb->sk) { > - seclen = nfqnl_get_sk_secctx(entskb, &secdata); > + seclen = nfqnl_get_sk_secctx(entskb, &context); > if (seclen) > size += nla_total_size(seclen); > } I think we can get rid of the local "seclen" variable, right? We can embed the nfqnl_get_sk_secctx() in the conditional and then simply reference "context.len" everywhere else, yes? For example: if (nfqnl_get_sk_secctx(..., &context)) size += nla_total_size(context.len); -- paul moore www.paul-moore.com