Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c801189 authored by David S. Miller's avatar David S. Miller
Browse files

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: default avatarDavid S. Miller <davem@davemloft.net>
parent 48f03bda
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -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;