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

netfilter: nf_tables: remove unused arg in nft_set_pktinfo_unspec()

The functions pass extra skb arg, but either its not used or the helpers
can already access it via pkt->skb.

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
f06ad944 2d7b4ace

+43 -52
+1 -2
include/net/netfilter/nf_tables.h
··· 72 72 pkt->xt.state = state; 73 73 } 74 74 75 - static inline void nft_set_pktinfo_unspec(struct nft_pktinfo *pkt, 76 - struct sk_buff *skb) 75 + static inline void nft_set_pktinfo_unspec(struct nft_pktinfo *pkt) 77 76 { 78 77 pkt->tprot_set = false; 79 78 pkt->tprot = 0;
+12 -16
include/net/netfilter/nf_tables_ipv4.h
··· 5 5 #include <net/netfilter/nf_tables.h> 6 6 #include <net/ip.h> 7 7 8 - static inline void nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt, 9 - struct sk_buff *skb) 8 + static inline void nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt) 10 9 { 11 10 struct iphdr *ip; 12 11 ··· 16 17 pkt->xt.fragoff = ntohs(ip->frag_off) & IP_OFFSET; 17 18 } 18 19 19 - static inline int __nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt, 20 - struct sk_buff *skb) 20 + static inline int __nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt) 21 21 { 22 22 struct iphdr *iph, _iph; 23 23 u32 len, thoff; 24 24 25 - iph = skb_header_pointer(skb, skb_network_offset(skb), sizeof(*iph), 26 - &_iph); 25 + iph = skb_header_pointer(pkt->skb, skb_network_offset(pkt->skb), 26 + sizeof(*iph), &_iph); 27 27 if (!iph) 28 28 return -1; 29 29 ··· 31 33 32 34 len = ntohs(iph->tot_len); 33 35 thoff = iph->ihl * 4; 34 - if (skb->len < len) 36 + if (pkt->skb->len < len) 35 37 return -1; 36 38 else if (len < thoff) 37 39 return -1; ··· 44 46 return 0; 45 47 } 46 48 47 - static inline void nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt, 48 - struct sk_buff *skb) 49 + static inline void nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt) 49 50 { 50 - if (__nft_set_pktinfo_ipv4_validate(pkt, skb) < 0) 51 - nft_set_pktinfo_unspec(pkt, skb); 51 + if (__nft_set_pktinfo_ipv4_validate(pkt) < 0) 52 + nft_set_pktinfo_unspec(pkt); 52 53 } 53 54 54 - static inline int nft_set_pktinfo_ipv4_ingress(struct nft_pktinfo *pkt, 55 - struct sk_buff *skb) 55 + static inline int nft_set_pktinfo_ipv4_ingress(struct nft_pktinfo *pkt) 56 56 { 57 57 struct iphdr *iph; 58 58 u32 len, thoff; 59 59 60 - if (!pskb_may_pull(skb, sizeof(*iph))) 60 + if (!pskb_may_pull(pkt->skb, sizeof(*iph))) 61 61 return -1; 62 62 63 - iph = ip_hdr(skb); 63 + iph = ip_hdr(pkt->skb); 64 64 if (iph->ihl < 5 || iph->version != 4) 65 65 goto inhdr_error; 66 66 67 67 len = ntohs(iph->tot_len); 68 68 thoff = iph->ihl * 4; 69 - if (skb->len < len) { 69 + if (pkt->skb->len < len) { 70 70 __IP_INC_STATS(nft_net(pkt), IPSTATS_MIB_INTRUNCATEDPKTS); 71 71 return -1; 72 72 } else if (len < thoff) {
+13 -17
include/net/netfilter/nf_tables_ipv6.h
··· 6 6 #include <net/ipv6.h> 7 7 #include <net/netfilter/nf_tables.h> 8 8 9 - static inline void nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt, 10 - struct sk_buff *skb) 9 + static inline void nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt) 11 10 { 12 11 unsigned int flags = IP6_FH_F_AUTH; 13 12 int protohdr, thoff = 0; ··· 14 15 15 16 protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, &flags); 16 17 if (protohdr < 0) { 17 - nft_set_pktinfo_unspec(pkt, skb); 18 + nft_set_pktinfo_unspec(pkt); 18 19 return; 19 20 } 20 21 ··· 24 25 pkt->xt.fragoff = frag_off; 25 26 } 26 27 27 - static inline int __nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt, 28 - struct sk_buff *skb) 28 + static inline int __nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt) 29 29 { 30 30 #if IS_ENABLED(CONFIG_IPV6) 31 31 unsigned int flags = IP6_FH_F_AUTH; ··· 34 36 int protohdr; 35 37 u32 pkt_len; 36 38 37 - ip6h = skb_header_pointer(skb, skb_network_offset(skb), sizeof(*ip6h), 38 - &_ip6h); 39 + ip6h = skb_header_pointer(pkt->skb, skb_network_offset(pkt->skb), 40 + sizeof(*ip6h), &_ip6h); 39 41 if (!ip6h) 40 42 return -1; 41 43 ··· 43 45 return -1; 44 46 45 47 pkt_len = ntohs(ip6h->payload_len); 46 - if (pkt_len + sizeof(*ip6h) > skb->len) 48 + if (pkt_len + sizeof(*ip6h) > pkt->skb->len) 47 49 return -1; 48 50 49 51 protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, &flags); ··· 61 63 #endif 62 64 } 63 65 64 - static inline void nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt, 65 - struct sk_buff *skb) 66 + static inline void nft_set_pktinfo_ipv6_validate(struct nft_pktinfo *pkt) 66 67 { 67 - if (__nft_set_pktinfo_ipv6_validate(pkt, skb) < 0) 68 - nft_set_pktinfo_unspec(pkt, skb); 68 + if (__nft_set_pktinfo_ipv6_validate(pkt) < 0) 69 + nft_set_pktinfo_unspec(pkt); 69 70 } 70 71 71 - static inline int nft_set_pktinfo_ipv6_ingress(struct nft_pktinfo *pkt, 72 - struct sk_buff *skb) 72 + static inline int nft_set_pktinfo_ipv6_ingress(struct nft_pktinfo *pkt) 73 73 { 74 74 #if IS_ENABLED(CONFIG_IPV6) 75 75 unsigned int flags = IP6_FH_F_AUTH; ··· 78 82 int protohdr; 79 83 u32 pkt_len; 80 84 81 - if (!pskb_may_pull(skb, sizeof(*ip6h))) 85 + if (!pskb_may_pull(pkt->skb, sizeof(*ip6h))) 82 86 return -1; 83 87 84 - ip6h = ipv6_hdr(skb); 88 + ip6h = ipv6_hdr(pkt->skb); 85 89 if (ip6h->version != 6) 86 90 goto inhdr_error; 87 91 88 92 pkt_len = ntohs(ip6h->payload_len); 89 - if (pkt_len + sizeof(*ip6h) > skb->len) { 93 + if (pkt_len + sizeof(*ip6h) > pkt->skb->len) { 90 94 idev = __in6_dev_get(nft_in(pkt)); 91 95 __IP6_INC_STATS(nft_net(pkt), idev, IPSTATS_MIB_INTRUNCATEDPKTS); 92 96 return -1;
+13 -13
net/netfilter/nft_chain_filter.c
··· 18 18 struct nft_pktinfo pkt; 19 19 20 20 nft_set_pktinfo(&pkt, skb, state); 21 - nft_set_pktinfo_ipv4(&pkt, skb); 21 + nft_set_pktinfo_ipv4(&pkt); 22 22 23 23 return nft_do_chain(&pkt, priv); 24 24 } ··· 62 62 struct nft_pktinfo pkt; 63 63 64 64 nft_set_pktinfo(&pkt, skb, state); 65 - nft_set_pktinfo_unspec(&pkt, skb); 65 + nft_set_pktinfo_unspec(&pkt); 66 66 67 67 return nft_do_chain(&pkt, priv); 68 68 } ··· 102 102 struct nft_pktinfo pkt; 103 103 104 104 nft_set_pktinfo(&pkt, skb, state); 105 - nft_set_pktinfo_ipv6(&pkt, skb); 105 + nft_set_pktinfo_ipv6(&pkt); 106 106 107 107 return nft_do_chain(&pkt, priv); 108 108 } ··· 149 149 150 150 switch (state->pf) { 151 151 case NFPROTO_IPV4: 152 - nft_set_pktinfo_ipv4(&pkt, skb); 152 + nft_set_pktinfo_ipv4(&pkt); 153 153 break; 154 154 case NFPROTO_IPV6: 155 - nft_set_pktinfo_ipv6(&pkt, skb); 155 + nft_set_pktinfo_ipv6(&pkt); 156 156 break; 157 157 default: 158 158 break; ··· 174 174 ingress_state.hook = NF_INET_INGRESS; 175 175 nft_set_pktinfo(&pkt, skb, &ingress_state); 176 176 177 - if (nft_set_pktinfo_ipv4_ingress(&pkt, skb) < 0) 177 + if (nft_set_pktinfo_ipv4_ingress(&pkt) < 0) 178 178 return NF_DROP; 179 179 break; 180 180 case htons(ETH_P_IPV6): ··· 182 182 ingress_state.hook = NF_INET_INGRESS; 183 183 nft_set_pktinfo(&pkt, skb, &ingress_state); 184 184 185 - if (nft_set_pktinfo_ipv6_ingress(&pkt, skb) < 0) 185 + if (nft_set_pktinfo_ipv6_ingress(&pkt) < 0) 186 186 return NF_DROP; 187 187 break; 188 188 default: ··· 238 238 239 239 switch (eth_hdr(skb)->h_proto) { 240 240 case htons(ETH_P_IP): 241 - nft_set_pktinfo_ipv4_validate(&pkt, skb); 241 + nft_set_pktinfo_ipv4_validate(&pkt); 242 242 break; 243 243 case htons(ETH_P_IPV6): 244 - nft_set_pktinfo_ipv6_validate(&pkt, skb); 244 + nft_set_pktinfo_ipv6_validate(&pkt); 245 245 break; 246 246 default: 247 - nft_set_pktinfo_unspec(&pkt, skb); 247 + nft_set_pktinfo_unspec(&pkt); 248 248 break; 249 249 } 250 250 ··· 293 293 294 294 switch (skb->protocol) { 295 295 case htons(ETH_P_IP): 296 - nft_set_pktinfo_ipv4_validate(&pkt, skb); 296 + nft_set_pktinfo_ipv4_validate(&pkt); 297 297 break; 298 298 case htons(ETH_P_IPV6): 299 - nft_set_pktinfo_ipv6_validate(&pkt, skb); 299 + nft_set_pktinfo_ipv6_validate(&pkt); 300 300 break; 301 301 default: 302 - nft_set_pktinfo_unspec(&pkt, skb); 302 + nft_set_pktinfo_unspec(&pkt); 303 303 break; 304 304 } 305 305
+2 -2
net/netfilter/nft_chain_nat.c
··· 17 17 switch (state->pf) { 18 18 #ifdef CONFIG_NF_TABLES_IPV4 19 19 case NFPROTO_IPV4: 20 - nft_set_pktinfo_ipv4(&pkt, skb); 20 + nft_set_pktinfo_ipv4(&pkt); 21 21 break; 22 22 #endif 23 23 #ifdef CONFIG_NF_TABLES_IPV6 24 24 case NFPROTO_IPV6: 25 - nft_set_pktinfo_ipv6(&pkt, skb); 25 + nft_set_pktinfo_ipv6(&pkt); 26 26 break; 27 27 #endif 28 28 default:
+2 -2
net/netfilter/nft_chain_route.c
··· 26 26 u8 tos; 27 27 28 28 nft_set_pktinfo(&pkt, skb, state); 29 - nft_set_pktinfo_ipv4(&pkt, skb); 29 + nft_set_pktinfo_ipv4(&pkt); 30 30 31 31 mark = skb->mark; 32 32 iph = ip_hdr(skb); ··· 74 74 int err; 75 75 76 76 nft_set_pktinfo(&pkt, skb, state); 77 - nft_set_pktinfo_ipv6(&pkt, skb); 77 + nft_set_pktinfo_ipv6(&pkt); 78 78 79 79 /* save source/dest address, mark, hoplimit, flowlabel, priority */ 80 80 memcpy(&saddr, &ipv6_hdr(skb)->saddr, sizeof(saddr));