Commit 7278b3c1 authored by Florian Westphal's avatar Florian Westphal Committed by Pablo Neira Ayuso
Browse files

netfilter: nf_tables: add and use BE register load-store helpers



Same as the existing ones, no conversions. This is just for sparse sake
only so that we no longer mix be16/u16 and be32/u32 types.

Alternative is to add __force __beX in various places, but this
seems nicer.

objdiff shows no changes.

Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent d86473bf
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -157,11 +157,26 @@ static inline void nft_reg_store16(u32 *dreg, u16 val)
	*(u16 *)dreg = val;
}

static inline void nft_reg_store_be16(u32 *dreg, __be16 val)
{
	nft_reg_store16(dreg, (__force __u16)val);
}

static inline u16 nft_reg_load16(const u32 *sreg)
{
	return *(u16 *)sreg;
}

static inline __be16 nft_reg_load_be16(const u32 *sreg)
{
	return (__force __be16)nft_reg_load16(sreg);
}

static inline __be32 nft_reg_load_be32(const u32 *sreg)
{
	return *(__force __be32 *)sreg;
}

static inline void nft_reg_store64(u32 *dreg, u64 val)
{
	put_unaligned(val, (u64 *)dreg);
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static void nft_meta_bridge_get_eval(const struct nft_expr *expr,
			goto err;

		br_vlan_get_proto(br_dev, &p_proto);
		nft_reg_store16(dest, htons(p_proto));
		nft_reg_store_be16(dest, htons(p_proto));
		return;
	}
	default:
+3 −3
Original line number Diff line number Diff line
@@ -52,11 +52,11 @@ static void nft_tproxy_eval_v4(const struct nft_expr *expr,
				   skb->dev, NF_TPROXY_LOOKUP_ESTABLISHED);

	if (priv->sreg_addr)
		taddr = regs->data[priv->sreg_addr];
		taddr = nft_reg_load_be32(&regs->data[priv->sreg_addr]);
	taddr = nf_tproxy_laddr4(skb, taddr, iph->daddr);

	if (priv->sreg_port)
		tport = nft_reg_load16(&regs->data[priv->sreg_port]);
		tport = nft_reg_load_be16(&regs->data[priv->sreg_port]);
	if (!tport)
		tport = hp->dest;

@@ -124,7 +124,7 @@ static void nft_tproxy_eval_v6(const struct nft_expr *expr,
	taddr = *nf_tproxy_laddr6(skb, &taddr, &iph->daddr);

	if (priv->sreg_port)
		tport = nft_reg_load16(&regs->data[priv->sreg_port]);
		tport = nft_reg_load_be16(&regs->data[priv->sreg_port]);
	if (!tport)
		tport = hp->dest;