mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
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
@ -635,11 +635,12 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq,
|
||||
if (hdr == NULL)
|
||||
return -1;
|
||||
|
||||
NLA_PUT_STRING(skb, CTRL_ATTR_FAMILY_NAME, family->name);
|
||||
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_HDRSIZE, family->hdrsize);
|
||||
NLA_PUT_U32(skb, CTRL_ATTR_MAXATTR, family->maxattr);
|
||||
if (nla_put_string(skb, CTRL_ATTR_FAMILY_NAME, family->name) ||
|
||||
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_HDRSIZE, family->hdrsize) ||
|
||||
nla_put_u32(skb, CTRL_ATTR_MAXATTR, family->maxattr))
|
||||
goto nla_put_failure;
|
||||
|
||||
if (!list_empty(&family->ops_list)) {
|
||||
struct nlattr *nla_ops;
|
||||
@ -657,8 +658,9 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq,
|
||||
if (nest == NULL)
|
||||
goto nla_put_failure;
|
||||
|
||||
NLA_PUT_U32(skb, CTRL_ATTR_OP_ID, ops->cmd);
|
||||
NLA_PUT_U32(skb, CTRL_ATTR_OP_FLAGS, ops->flags);
|
||||
if (nla_put_u32(skb, CTRL_ATTR_OP_ID, ops->cmd) ||
|
||||
nla_put_u32(skb, CTRL_ATTR_OP_FLAGS, ops->flags))
|
||||
goto nla_put_failure;
|
||||
|
||||
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)
|
||||
goto nla_put_failure;
|
||||
|
||||
NLA_PUT_U32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id);
|
||||
NLA_PUT_STRING(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||
grp->name);
|
||||
if (nla_put_u32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id) ||
|
||||
nla_put_string(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||
grp->name))
|
||||
goto nla_put_failure;
|
||||
|
||||
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)
|
||||
return -1;
|
||||
|
||||
NLA_PUT_STRING(skb, CTRL_ATTR_FAMILY_NAME, grp->family->name);
|
||||
NLA_PUT_U16(skb, CTRL_ATTR_FAMILY_ID, grp->family->id);
|
||||
if (nla_put_string(skb, CTRL_ATTR_FAMILY_NAME, grp->family->name) ||
|
||||
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);
|
||||
if (nla_grps == NULL)
|
||||
@ -721,9 +725,10 @@ static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid,
|
||||
if (nest == NULL)
|
||||
goto nla_put_failure;
|
||||
|
||||
NLA_PUT_U32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id);
|
||||
NLA_PUT_STRING(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||
grp->name);
|
||||
if (nla_put_u32(skb, CTRL_ATTR_MCAST_GRP_ID, grp->id) ||
|
||||
nla_put_string(skb, CTRL_ATTR_MCAST_GRP_NAME,
|
||||
grp->name))
|
||||
goto nla_put_failure;
|
||||
|
||||
nla_nest_end(skb, nest);
|
||||
nla_nest_end(skb, nla_grps);
|
||||
|
Loading…
Reference in New Issue
Block a user