genetlink: Stop using NLA_PUT*().
These macros contain a hidden goto, and are thus extremely error prone and make code hard to audit. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1e6428d82b
commit
444653f696
1 changed files with 20 additions and 15 deletions
|
@ -635,11 +635,12 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq,
|
||||||
if (hdr == NULL)
|
if (hdr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
NLA_PUT_STRING(skb, CTRL_ATTR_FAMILY_NAME, family->name);
|
if (nla_put_string(skb, CTRL_ATTR_FAMILY_NAME, family->name) ||
|
||||||
NLA_PUT_U16(skb, CTRL_ATTR_FAMILY_ID, family->id);
|
nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, family->id) ||
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_VERSION, family->version);
|
nla_put_u32(skb, CTRL_ATTR_VERSION, family->version) ||
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_HDRSIZE, family->hdrsize);
|
nla_put_u32(skb, CTRL_ATTR_HDRSIZE, family->hdrsize) ||
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_MAXATTR, family->maxattr);
|
nla_put_u32(skb, CTRL_ATTR_MAXATTR, family->maxattr))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (!list_empty(&family->ops_list)) {
|
if (!list_empty(&family->ops_list)) {
|
||||||
struct nlattr *nla_ops;
|
struct nlattr *nla_ops;
|
||||||
|
@ -657,8 +658,9 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq,
|
||||||
if (nest == NULL)
|
if (nest == NULL)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_OP_ID, ops->cmd);
|
if (nla_put_u32(skb, CTRL_ATTR_OP_ID, ops->cmd) ||
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_OP_FLAGS, ops->flags);
|
nla_put_u32(skb, CTRL_ATTR_OP_FLAGS, ops->flags))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
nla_nest_end(skb, nest);
|
nla_nest_end(skb, nest);
|
||||||
}
|
}
|
||||||
|
@ -682,9 +684,10 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq,
|
||||||
if (nest == NULL)
|
if (nest == NULL)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id);
|
if (nla_put_u32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id) ||
|
||||||
NLA_PUT_STRING(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
nla_put_string(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||||
grp->name);
|
grp->name))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
nla_nest_end(skb, nest);
|
nla_nest_end(skb, nest);
|
||||||
}
|
}
|
||||||
|
@ -710,8 +713,9 @@ static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid,
|
||||||
if (hdr == NULL)
|
if (hdr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
NLA_PUT_STRING(skb, CTRL_ATTR_FAMILY_NAME, grp->family->name);
|
if (nla_put_string(skb, CTRL_ATTR_FAMILY_NAME, grp->family->name) ||
|
||||||
NLA_PUT_U16(skb, CTRL_ATTR_FAMILY_ID, grp->family->id);
|
nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, grp->family->id))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
nla_grps = nla_nest_start(skb, CTRL_ATTR_MCAST_GROUPS);
|
nla_grps = nla_nest_start(skb, CTRL_ATTR_MCAST_GROUPS);
|
||||||
if (nla_grps == NULL)
|
if (nla_grps == NULL)
|
||||||
|
@ -721,9 +725,10 @@ static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid,
|
||||||
if (nest == NULL)
|
if (nest == NULL)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
NLA_PUT_U32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id);
|
if (nla_put_u32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id) ||
|
||||||
NLA_PUT_STRING(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
nla_put_string(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||||
grp->name);
|
grp->name))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
nla_nest_end(skb, nest);
|
nla_nest_end(skb, nest);
|
||||||
nla_nest_end(skb, nla_grps);
|
nla_nest_end(skb, nla_grps);
|
||||||
|
|
Loading…
Reference in a new issue