Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netfilter: nf_tables: use correct integer types

Sparse tool complains about mixing of different endianess
types, so use the correct ones.

Add type casts where needed.

objdiff shows no changes except in nft_tunnel (type is changed).

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>

authored by

Florian Westphal and committed by
Pablo Neira Ayuso
ffb3d9a3 7278b3c1

+12 -11
+3 -3
net/netfilter/nft_cmp.c
··· 125 125 { 126 126 switch (len) { 127 127 case 2: 128 - data->val16 = ntohs(*((u16 *)val)); 128 + data->val16 = ntohs(*((__be16 *)val)); 129 129 break; 130 130 case 4: 131 - data->val32 = ntohl(*((u32 *)val)); 131 + data->val32 = ntohl(*((__be32 *)val)); 132 132 break; 133 133 case 8: 134 - data->val64 = be64_to_cpu(*((u64 *)val)); 134 + data->val64 = be64_to_cpu(*((__be64 *)val)); 135 135 break; 136 136 default: 137 137 WARN_ON_ONCE(1);
+2 -2
net/netfilter/nft_ct.c
··· 204 204 case NFT_CT_SRC_IP: 205 205 if (nf_ct_l3num(ct) != NFPROTO_IPV4) 206 206 goto err; 207 - *dest = tuple->src.u3.ip; 207 + *dest = (__force __u32)tuple->src.u3.ip; 208 208 return; 209 209 case NFT_CT_DST_IP: 210 210 if (nf_ct_l3num(ct) != NFPROTO_IPV4) 211 211 goto err; 212 - *dest = tuple->dst.u3.ip; 212 + *dest = (__force __u32)tuple->dst.u3.ip; 213 213 return; 214 214 case NFT_CT_SRC_IP6: 215 215 if (nf_ct_l3num(ct) != NFPROTO_IPV6)
+5 -5
net/netfilter/nft_exthdr.c
··· 266 266 267 267 switch (priv->len) { 268 268 case 2: 269 - old.v16 = get_unaligned((u16 *)(opt + offset)); 269 + old.v16 = (__force __be16)get_unaligned((u16 *)(opt + offset)); 270 270 new.v16 = (__force __be16)nft_reg_load16( 271 271 &regs->data[priv->sreg]); 272 272 ··· 281 281 if (old.v16 == new.v16) 282 282 return; 283 283 284 - put_unaligned(new.v16, (u16*)(opt + offset)); 284 + put_unaligned(new.v16, (__be16*)(opt + offset)); 285 285 inet_proto_csum_replace2(&tcph->check, pkt->skb, 286 286 old.v16, new.v16, false); 287 287 break; 288 288 case 4: 289 - new.v32 = regs->data[priv->sreg]; 290 - old.v32 = get_unaligned((u32 *)(opt + offset)); 289 + new.v32 = nft_reg_load_be32(&regs->data[priv->sreg]); 290 + old.v32 = (__force __be32)get_unaligned((u32 *)(opt + offset)); 291 291 292 292 if (old.v32 == new.v32) 293 293 return; 294 294 295 - put_unaligned(new.v32, (u32*)(opt + offset)); 295 + put_unaligned(new.v32, (__be32*)(opt + offset)); 296 296 inet_proto_csum_replace4(&tcph->check, pkt->skb, 297 297 old.v32, new.v32, false); 298 298 break;
+2 -1
net/netfilter/nft_tunnel.c
··· 383 383 struct ip_tunnel_info *info, 384 384 struct nft_tunnel_opts *opts) 385 385 { 386 - int err, rem, type = 0; 387 386 struct nlattr *nla; 387 + __be16 type = 0; 388 + int err, rem; 388 389 389 390 err = nla_validate_nested_deprecated(attr, NFTA_TUNNEL_KEY_OPTS_MAX, 390 391 nft_tunnel_opts_policy, NULL);