ipv6: mark expected switch fall-throughs
Subsystems (6)
PATCH 1/1 ipv6: mark expected switch fall-throughs
In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.
Notice that in some cases I placed the "fall through" comment on its own line, which is what GCC is expecting to find.
Signed-off-by Gustavo A. R. Silva <[email protected]>
---
This code was tested by compilation only (GCC 7.2.0 was used). Please, verify if the actual intention of the code is to fall through.
net/ipv6/ah6.c | 1 + net/ipv6/exthdrs.c | 1 + net/ipv6/icmp.c | 6 ++---- net/ipv6/ip6_fib.c | 4 ++++ net/ipv6/ip6_tunnel.c | 1 + net/ipv6/ip6mr.c | 1 + net/ipv6/netfilter/nf_nat_l3proto_ipv6.c | 3 ++- net/ipv6/raw.c | 4 ++++ net/ipv6/tcp_ipv6.c | 3 ++- net/ipv6/xfrm6_policy.c | 1 + 10 files changed, 19 insertions(+), 6 deletions(-)
net/ipv6/ah6.c +1 -0
@@ -271,6 +271,7 @@ static int ipv6_clear_mutable_options(struct ipv6hdr *iph, int len, int dir)case NEXTHDR_DEST :if (dir ==XFRM_POLICY_OUT )ipv6_rearrange_destopt (iph, exthdr.opth); +/* fall through */ case NEXTHDR_HOP :if (!zero_out_mutable_opts (exthdr.opth)) { net_dbg_ratelimited("overrun %sopts\n",
net/ipv6/exthdrs.c +1 -0
@@ -89,6 +89,7 @@ static bool ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)*/ if (ipv6_addr_is_multicast (&ipv6_hdr (skb)->daddr))break ; +/* fall through */ case 2 :/* send ICMP PARM PROB regardless and drop packet */ icmpv6_param_prob (skb,ICMPV6_UNK_OPTION , optoff);return false;
net/ipv6/icmp.c +2 -4
@@ -864,10 +864,8 @@ static int icmpv6_rcv(struct sk_buff *skb) goto discard_it; hdr =icmp6_hdr (skb); -/* -* Drop through to notify -*/ - +/* to notify */ +/* fall through */ case ICMPV6_DEST_UNREACH :case ICMPV6_TIME_EXCEED :case ICMPV6_PARAMPROB :
net/ipv6/ip6_fib.c +4 -0
@@ -1777,6 +1777,7 @@ static int fib6_walk_continue(struct fib6_walker *w) } w->state =FWS_L ;#endif +/* fall through */ case FWS_L : left =rcu_dereference_protected (fn->left,1 );if (left) {
@@ -1785,6 +1786,7 @@ static int fib6_walk_continue(struct fib6_walker *w)continue ; } w->state =FWS_R ; +/* fall through */ case FWS_R : right =rcu_dereference_protected (fn->right,1 );if (right) {
@@ -1794,6 +1796,7 @@ static int fib6_walk_continue(struct fib6_walker *w) } w->state =FWS_C ; w->leaf =rcu_dereference_protected (fn->leaf,1 ); +/* fall through */ case FWS_C :if (w->leaf && fn->fn_flags &RTN_RTINFO ) {int err;
@@ -1812,6 +1815,7 @@ static int fib6_walk_continue(struct fib6_walker *w) } skip: w->state =FWS_U ; +/* fall through */ case FWS_U :if (fn == w->root)return 0 ;
net/ipv6/ip6_tunnel.c +1 -0
@@ -593,6 +593,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,case NDISC_REDIRECT : rel_type =ICMP_REDIRECT ; rel_code =ICMP_REDIR_HOST ; +/* fall through */ default :return 0 ; }
net/ipv6/ip6mr.c +1 -0
@@ -1722,6 +1722,7 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unscase MRT6_ADD_MFC :case MRT6_DEL_MFC : parent =-1 ; +/* fall through */ case MRT6_ADD_MFC_PROXY :case MRT6_DEL_MFC_PROXY :if (optlen <sizeof (mfc))
net/ipv6/netfilter/nf_nat_l3proto_ipv6.c +2 -1
@@ -290,7 +290,8 @@ nf_nat_ipv6_fn(void *priv, struct sk_buff *skb,else return NF_ACCEPT ; } -/* Fall thru... (Only ICMPs can be IP_CT_IS_REPLY) */ +/* Only ICMPs can be IP_CT_IS_REPLY: */ +/* fall through */ case IP_CT_NEW :/* Seen it before? This can happen for loopback, retrans, * or local packets.
net/ipv6/raw.c +4 -0
@@ -1055,6 +1055,7 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname,if (optname ==IPV6_CHECKSUM || optname ==IPV6_HDRINCL )break ; +/* fall through */ default :return ipv6_setsockopt (sk, level, optname, optval, optlen); }
@@ -1077,6 +1078,7 @@ static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,if (optname ==IPV6_CHECKSUM || optname ==IPV6_HDRINCL )break ; +/* fall through */ default :return compat_ipv6_setsockopt (sk, level, optname, optval, optlen);
@@ -1138,6 +1140,7 @@ static int rawv6_getsockopt(struct sock *sk, int level, int optname,if (optname ==IPV6_CHECKSUM || optname ==IPV6_HDRINCL )break ; +/* fall through */ default :return ipv6_getsockopt (sk, level, optname, optval, optlen); }
@@ -1160,6 +1163,7 @@ static int compat_rawv6_getsockopt(struct sock *sk, int level, int optname,if (optname ==IPV6_CHECKSUM || optname ==IPV6_HDRINCL )break ; +/* fall through */ default :return compat_ipv6_getsockopt (sk, level, optname, optval, optlen);
net/ipv6/tcp_ipv6.c +2 -1
@@ -1577,8 +1577,9 @@ static int tcp_v6_rcv(struct sk_buff *skb) refcounted = false; goto process; } -/* Fall through to ACK */ } +/* to ACK */ +/* fall through */ case TCP_TW_ACK :tcp_v6_timewait_ack (sk, skb);break ;
net/ipv6/xfrm6_policy.c +1 -0
@@ -152,6 +152,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)switch (nexthdr) {case NEXTHDR_FRAGMENT : onlyproto =1 ; +/* fall through */ case NEXTHDR_ROUTING :case NEXTHDR_HOP :case NEXTHDR_DEST :
Signature · 1 line
2.7.4
From: "Gustavo A. R. Silva" <[email protected]>
Date: Mon, 16 Oct 2017 16:36:52 -0500
Quoted 7 lines
In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.
Notice that in some cases I placed the "fall through" comment on its own line, which is what GCC is expecting to find.
Signed-off-by Gustavo A. R. Silva <[email protected]>
Applied.