mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 16:44:10 +08:00
nfnetlink_acct: 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
48f03bdad8
commit
7c80118953
@ -109,7 +109,8 @@ nfnl_acct_fill_info(struct sk_buff *skb, u32 pid, u32 seq, u32 type,
|
||||
nfmsg->version = NFNETLINK_V0;
|
||||
nfmsg->res_id = 0;
|
||||
|
||||
NLA_PUT_STRING(skb, NFACCT_NAME, acct->name);
|
||||
if (nla_put_string(skb, NFACCT_NAME, acct->name))
|
||||
goto nla_put_failure;
|
||||
|
||||
if (type == NFNL_MSG_ACCT_GET_CTRZERO) {
|
||||
pkts = atomic64_xchg(&acct->pkts, 0);
|
||||
@ -118,9 +119,10 @@ nfnl_acct_fill_info(struct sk_buff *skb, u32 pid, u32 seq, u32 type,
|
||||
pkts = atomic64_read(&acct->pkts);
|
||||
bytes = atomic64_read(&acct->bytes);
|
||||
}
|
||||
NLA_PUT_BE64(skb, NFACCT_PKTS, cpu_to_be64(pkts));
|
||||
NLA_PUT_BE64(skb, NFACCT_BYTES, cpu_to_be64(bytes));
|
||||
NLA_PUT_BE32(skb, NFACCT_USE, htonl(atomic_read(&acct->refcnt)));
|
||||
if (nla_put_be64(skb, NFACCT_PKTS, cpu_to_be64(pkts)) ||
|
||||
nla_put_be64(skb, NFACCT_BYTES, cpu_to_be64(bytes)) ||
|
||||
nla_put_be32(skb, NFACCT_USE, htonl(atomic_read(&acct->refcnt))))
|
||||
goto nla_put_failure;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
return skb->len;
|
||||
|
Loading…
Reference in New Issue
Block a user