On Tue, 24 Nov 2020 18:50:43 +0100 Karsten Graul wrote:
> +static int smc_nl_fill_lgr(struct smc_link_group *lgr,
> +                        struct sk_buff *skb,
> +                        struct netlink_callback *cb)
> +{
> +     char smc_target[SMC_MAX_PNETID_LEN + 1];
> +     struct nlattr *attrs;
> +
> +     attrs = nla_nest_start_noflag(skb, SMC_GEN_LGR_SMCR);
> +     if (!attrs)
> +             goto errout;
> +
> +     if (nla_put_u32(skb, SMC_NLA_LGR_R_ID, *((u32 *)&lgr->id)) < 0)
> +             goto errattr;
> +     if (nla_put_u32(skb, SMC_NLA_LGR_R_CONNS_NUM, lgr->conns_num) < 0)
> +             goto errattr;
> +     if (nla_put_u8(skb, SMC_NLA_LGR_R_ROLE, lgr->role) < 0)
> +             goto errattr;
> +     if (nla_put_u8(skb, SMC_NLA_LGR_R_TYPE, lgr->type) < 0)
> +             goto errattr;
> +     if (nla_put_u8(skb, SMC_NLA_LGR_R_VLAN_ID, lgr->vlan_id) < 0)
> +             goto errattr;
> +     memset(smc_target, 0, sizeof(smc_target));

unnecessary

> +     snprintf(smc_target, sizeof(smc_target), "%s", lgr->pnet_id);
> +     if (nla_put_string(skb, SMC_NLA_LGR_R_PNETID, smc_target) < 0)
> +             goto errattr;
> +
> +     nla_nest_end(skb, attrs);
> +     return 0;
> +errattr:
> +     nla_nest_cancel(skb, attrs);
> +errout:
> +     return -EMSGSIZE;
> +}
> +
> +static int smc_nl_handle_lgr(struct smc_link_group *lgr,
> +                          struct sk_buff *skb,
> +                          struct netlink_callback *cb)
> +{
> +     int rc = 0;

unnecessary init

> +     void *nlh;
> +
> +     nlh = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
> +                       &smc_gen_nl_family, NLM_F_MULTI,
> +                       SMC_NETLINK_GET_LGR_SMCR);
> +     if (!nlh)
> +             return -EMSGSIZE;
> +     rc = smc_nl_fill_lgr(lgr, skb, cb);
> +     if (rc < 0)
> +             goto errout;
> +
> +     genlmsg_end(skb, nlh);
> +     return rc;

smc_nl_fill_lgr() never return positive values (why would it?)
so:

        if (rc)
                ...
        ...

        return 0;

> +errout:
> +     genlmsg_cancel(skb, nlh);
> +     return rc;
> +}

>  static const struct nla_policy smc_gen_nl_policy[SMC_GEN_MAX + 1] = {
>       [SMC_GEN_UNSPEC]        = { .type = NLA_UNSPEC, },
>       [SMC_GEN_SYS_INFO]      = { .type = NLA_NESTED, },
> +     [SMC_GEN_LGR_SMCR]      = { .type = NLA_NESTED, },

not an input attr

Reply via email to