* [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
@ 2011-10-25 7:12 Eric Dumazet
2011-10-25 23:30 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2011-10-25 7:12 UTC (permalink / raw)
To: David Miller; +Cc: netdev
Remove some ugly #ifdef, using IS_ENABLED(CONFIG_xxx) macro
IS_ENABLED(CONFIG_xxx) evaluates to 1 if CONFIG_xxx is set to 'y' or 'm'
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
net/ipv4/inet_diag.c | 65 +++++++++++++++----------------------
net/ipv4/ip_gre.c | 21 ++++-------
net/ipv4/ip_sockglue.c | 12 ++----
net/ipv4/tcp_input.c | 6 +--
net/ipv4/tcp_minisocks.c | 49 ++++++++++++++-------------
net/ipv4/tcp_timer.c | 6 +--
net/ipv4/tunnel4.c | 11 ++----
net/ipv4/xfrm4_tunnel.c | 12 +++---
8 files changed, 80 insertions(+), 102 deletions(-)
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
index f5e2bda..7f42cc3 100644
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@ -125,8 +125,8 @@ static int inet_csk_diag_fill(struct sock *sk,
r->id.idiag_src[0] = inet->inet_rcv_saddr;
r->id.idiag_dst[0] = inet->inet_daddr;
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- if (r->idiag_family == AF_INET6) {
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ r->idiag_family == AF_INET6) {
const struct ipv6_pinfo *np = inet6_sk(sk);
ipv6_addr_copy((struct in6_addr *)r->id.idiag_src,
@@ -136,7 +136,6 @@ static int inet_csk_diag_fill(struct sock *sk,
if (ext & (1 << (INET_DIAG_TOS - 1)))
RTA_PUT_U8(skb, INET_DIAG_TOS, np->tclass);
}
-#endif
#define EXPIRES_IN_MS(tmo) DIV_ROUND_UP((tmo - jiffies) * 1000, HZ)
@@ -219,8 +218,9 @@ static int inet_twsk_diag_fill(struct inet_timewait_sock *tw,
r->idiag_wqueue = 0;
r->idiag_uid = 0;
r->idiag_inode = 0;
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- if (tw->tw_family == AF_INET6) {
+
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ tw->tw_family == AF_INET6) {
const struct inet6_timewait_sock *tw6 =
inet6_twsk((struct sock *)tw);
@@ -229,7 +229,6 @@ static int inet_twsk_diag_fill(struct inet_timewait_sock *tw,
ipv6_addr_copy((struct in6_addr *)r->id.idiag_dst,
&tw6->tw_v6_daddr);
}
-#endif
nlh->nlmsg_len = skb_tail_pointer(skb) - previous_tail;
return skb->len;
nlmsg_failure:
@@ -271,18 +270,15 @@ static int inet_diag_get_exact(struct sk_buff *in_skb,
sk = inet_lookup(&init_net, hashinfo, req->id.idiag_dst[0],
req->id.idiag_dport, req->id.idiag_src[0],
req->id.idiag_sport, req->id.idiag_if);
- }
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- else if (req->idiag_family == AF_INET6) {
+ } else if (IS_ENABLED(CONFIG_IPV6) &&
+ req->idiag_family == AF_INET6) {
sk = inet6_lookup(&init_net, hashinfo,
(struct in6_addr *)req->id.idiag_dst,
req->id.idiag_dport,
(struct in6_addr *)req->id.idiag_src,
req->id.idiag_sport,
req->id.idiag_if);
- }
-#endif
- else {
+ } else {
goto unlock;
}
@@ -501,15 +497,14 @@ static int inet_csk_diag_dump(struct sock *sk,
struct inet_sock *inet = inet_sk(sk);
entry.family = sk->sk_family;
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- if (entry.family == AF_INET6) {
+
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ entry.family == AF_INET6) {
struct ipv6_pinfo *np = inet6_sk(sk);
entry.saddr = np->rcv_saddr.s6_addr32;
entry.daddr = np->daddr.s6_addr32;
- } else
-#endif
- {
+ } else {
entry.saddr = &inet->inet_rcv_saddr;
entry.daddr = &inet->inet_daddr;
}
@@ -539,15 +534,13 @@ static int inet_twsk_diag_dump(struct inet_timewait_sock *tw,
INET_DIAG_REQ_BYTECODE);
entry.family = tw->tw_family;
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- if (tw->tw_family == AF_INET6) {
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ tw->tw_family == AF_INET6) {
struct inet6_timewait_sock *tw6 =
inet6_twsk((struct sock *)tw);
entry.saddr = tw6->tw_v6_rcv_saddr.s6_addr32;
entry.daddr = tw6->tw_v6_daddr.s6_addr32;
- } else
-#endif
- {
+ } else {
entry.saddr = &tw->tw_rcv_saddr;
entry.daddr = &tw->tw_daddr;
}
@@ -601,14 +594,14 @@ static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk,
r->idiag_wqueue = 0;
r->idiag_uid = sock_i_uid(sk);
r->idiag_inode = 0;
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- if (r->idiag_family == AF_INET6) {
+
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ r->idiag_family == AF_INET6) {
ipv6_addr_copy((struct in6_addr *)r->id.idiag_src,
&inet6_rsk(req)->loc_addr);
ipv6_addr_copy((struct in6_addr *)r->id.idiag_dst,
&inet6_rsk(req)->rmt_addr);
}
-#endif
nlh->nlmsg_len = skb_tail_pointer(skb) - b;
return skb->len;
@@ -626,7 +619,7 @@ static int inet_diag_dump_reqs(struct sk_buff *skb, struct sock *sk,
struct inet_connection_sock *icsk = inet_csk(sk);
struct listen_sock *lopt;
const struct nlattr *bc = NULL;
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
int j, s_j;
int reqnum, s_reqnum;
int err = 0;
@@ -666,18 +659,14 @@ static int inet_diag_dump_reqs(struct sk_buff *skb, struct sock *sk,
continue;
if (bc) {
- entry.saddr =
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- (entry.family == AF_INET6) ?
- inet6_rsk(req)->loc_addr.s6_addr32 :
-#endif
- &ireq->loc_addr;
- entry.daddr =
-#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
- (entry.family == AF_INET6) ?
- inet6_rsk(req)->rmt_addr.s6_addr32 :
-#endif
- &ireq->rmt_addr;
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ entry.family == AF_INET6) {
+ entry.saddr = inet6_rsk(req)->loc_addr.s6_addr32;
+ entry.daddr = inet6_rsk(req)->rmt_addr.s6_addr32;
+ } else {
+ entry.saddr = &ireq->loc_addr;
+ entry.daddr = &ireq->rmt_addr;
+ }
entry.dport = ntohs(ireq->rmt_port);
if (!inet_diag_bc_run(nla_data(bc),
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index d55110e..06bf1b7 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -728,9 +728,8 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
rt = skb_rtable(skb);
if ((dst = rt->rt_gateway) == 0)
goto tx_error_icmp;
- }
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- else if (skb->protocol == htons(ETH_P_IPV6)) {
+ } else if (IS_ENABLED(CONFIG_IPV6) &&
+ skb->protocol == htons(ETH_P_IPV6)) {
struct neighbour *neigh = dst_get_neighbour(skb_dst(skb));
const struct in6_addr *addr6;
int addr_type;
@@ -750,10 +749,9 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
goto tx_error_icmp;
dst = addr6->s6_addr32[3];
- }
-#endif
- else
+ } else {
goto tx_error;
+ }
}
tos = tiph->tos;
@@ -798,9 +796,8 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
ip_rt_put(rt);
goto tx_error;
}
- }
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- else if (skb->protocol == htons(ETH_P_IPV6)) {
+ } else if (IS_ENABLED(CONFIG_IPV6) &&
+ skb->protocol == htons(ETH_P_IPV6)) {
struct rt6_info *rt6 = (struct rt6_info *)skb_dst(skb);
if (rt6 && mtu < dst_mtu(skb_dst(skb)) && mtu >= IPV6_MIN_MTU) {
@@ -818,7 +815,6 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
goto tx_error;
}
}
-#endif
if (tunnel->err_count > 0) {
if (time_before(jiffies,
@@ -873,10 +869,9 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
if ((iph->ttl = tiph->ttl) == 0) {
if (skb->protocol == htons(ETH_P_IP))
iph->ttl = old_iph->ttl;
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- else if (skb->protocol == htons(ETH_P_IPV6))
+ else if (IS_ENABLED(CONFIG_IPV6) &&
+ skb->protocol == htons(ETH_P_IPV6))
iph->ttl = ((const struct ipv6hdr *)old_iph)->hop_limit;
-#endif
else
iph->ttl = ip4_dst_hoplimit(&rt->dst);
}
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index 09ff51b..03f614e 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -515,20 +515,18 @@ static int do_ip_setsockopt(struct sock *sk, int level,
sock_owned_by_user(sk));
if (inet->is_icsk) {
struct inet_connection_sock *icsk = inet_csk(sk);
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (sk->sk_family == PF_INET ||
- (!((1 << sk->sk_state) &
+
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ (sk->sk_family == PF_INET ||
+ (!((1 << sk->sk_state) &
(TCPF_LISTEN | TCPF_CLOSE)) &&
- inet->inet_daddr != LOOPBACK4_IPV6)) {
-#endif
+ inet->inet_daddr != LOOPBACK4_IPV6))) {
if (old)
icsk->icsk_ext_hdr_len -= old->opt.optlen;
if (opt)
icsk->icsk_ext_hdr_len += opt->opt.optlen;
icsk->icsk_sync_mss(sk, icsk->icsk_pmtu_cookie);
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
}
-#endif
}
rcu_assign_pointer(inet->inet_opt, opt);
if (old)
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 52b5c2d..0635f27 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2662,9 +2662,8 @@ static void DBGUNDO(struct sock *sk, const char *msg)
tp->snd_cwnd, tcp_left_out(tp),
tp->snd_ssthresh, tp->prior_ssthresh,
tp->packets_out);
- }
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- else if (sk->sk_family == AF_INET6) {
+ } else if (IS_ENABLED(CONFIG_IPV6) &&
+ sk->sk_family == AF_INET6) {
struct ipv6_pinfo *np = inet6_sk(sk);
printk(KERN_DEBUG "Undo %s %pI6/%u c%u l%u ss%u/%u p%u\n",
msg,
@@ -2673,7 +2672,6 @@ static void DBGUNDO(struct sock *sk, const char *msg)
tp->snd_ssthresh, tp->prior_ssthresh,
tp->packets_out);
}
-#endif
}
#else
#define DBGUNDO(x...) do { } while (0)
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index 85a2fbe..ca07a0e 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -336,8 +336,8 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
tcptw->tw_ts_recent = tp->rx_opt.ts_recent;
tcptw->tw_ts_recent_stamp = tp->rx_opt.ts_recent_stamp;
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (tw->tw_family == PF_INET6) {
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ tw->tw_family == PF_INET6) {
struct ipv6_pinfo *np = inet6_sk(sk);
struct inet6_timewait_sock *tw6;
@@ -347,17 +347,16 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
ipv6_addr_copy(&tw6->tw_v6_rcv_saddr, &np->rcv_saddr);
tw->tw_ipv6only = np->ipv6only;
}
-#endif
-#ifdef CONFIG_TCP_MD5SIG
- /*
- * The timewait bucket does not have the key DB from the
- * sock structure. We just make a quick copy of the
- * md5 key being used (if indeed we are using one)
- * so the timewait ack generating code has the key.
- */
- do {
+ if (IS_ENABLED(CONFIG_TCP_MD5SIG)) {
+ /*
+ * The timewait bucket does not have the key DB from the
+ * sock structure. We just make a quick copy of the
+ * md5 key being used (if indeed we are using one)
+ * so the timewait ack generating code has the key.
+ */
struct tcp_md5sig_key *key;
+
memset(tcptw->tw_md5_key, 0, sizeof(tcptw->tw_md5_key));
tcptw->tw_md5_keylen = 0;
key = tp->af_specific->md5_lookup(sk, sk);
@@ -367,8 +366,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
if (tcp_alloc_md5sig_pool(sk) == NULL)
BUG();
}
- } while (0);
-#endif
+ }
/* Linkage updates. */
__inet_twsk_hashdance(tw, sk, &tcp_hashinfo);
@@ -402,16 +400,17 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
void tcp_twsk_destructor(struct sock *sk)
{
-#ifdef CONFIG_TCP_MD5SIG
- struct tcp_timewait_sock *twsk = tcp_twsk(sk);
- if (twsk->tw_md5_keylen)
- tcp_free_md5sig_pool();
-#endif
+ if (IS_ENABLED(CONFIG_TCP_MD5SIG)) {
+ const struct tcp_timewait_sock *twsk = tcp_twsk(sk);
+
+ if (twsk->tw_md5_keylen)
+ tcp_free_md5sig_pool();
+ }
}
EXPORT_SYMBOL_GPL(tcp_twsk_destructor);
static inline void TCP_ECN_openreq_child(struct tcp_sock *tp,
- struct request_sock *req)
+ const struct request_sock *req)
{
tp->ecn_flags = inet_rsk(req)->ecn_ok ? TCP_ECN_OK : 0;
}
@@ -541,11 +540,13 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
newtp->rx_opt.ts_recent_stamp = 0;
newtp->tcp_header_len = sizeof(struct tcphdr);
}
-#ifdef CONFIG_TCP_MD5SIG
- newtp->md5sig_info = NULL; /*XXX*/
- if (newtp->af_specific->md5_lookup(sk, newsk))
- newtp->tcp_header_len += TCPOLEN_MD5SIG_ALIGNED;
-#endif
+
+ if (IS_ENABLED(CONFIG_TCP_MD5SIG)) {
+ newtp->md5sig_info = NULL; /*XXX*/
+ if (newtp->af_specific->md5_lookup(sk, newsk))
+ newtp->tcp_header_len += TCPOLEN_MD5SIG_ALIGNED;
+ }
+
if (skb->len >= TCP_MSS_DEFAULT + newtp->tcp_header_len)
newicsk->icsk_ack.last_seg_size = skb->len - newtp->tcp_header_len;
newtp->rx_opt.mss_clamp = req->mss;
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 2e0f0af..9d8705c 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -339,15 +339,13 @@ void tcp_retransmit_timer(struct sock *sk)
LIMIT_NETDEBUG(KERN_DEBUG "TCP: Peer %pI4:%u/%u unexpectedly shrunk window %u:%u (repaired)\n",
&inet->inet_daddr, ntohs(inet->inet_dport),
inet->inet_num, tp->snd_una, tp->snd_nxt);
- }
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- else if (sk->sk_family == AF_INET6) {
+ } else if (IS_ENABLED(CONFIG_IPV6) &&
+ sk->sk_family == AF_INET6) {
struct ipv6_pinfo *np = inet6_sk(sk);
LIMIT_NETDEBUG(KERN_DEBUG "TCP: Peer %pI6:%u/%u unexpectedly shrunk window %u:%u (repaired)\n",
&np->daddr, ntohs(inet->inet_dport),
inet->inet_num, tp->snd_una, tp->snd_nxt);
}
-#endif
if (tcp_time_stamp - tp->rcv_tstamp > TCP_RTO_MAX) {
tcp_write_err(sk);
goto out;
diff --git a/net/ipv4/tunnel4.c b/net/ipv4/tunnel4.c
index ac3b3ee..e860b17 100644
--- a/net/ipv4/tunnel4.c
+++ b/net/ipv4/tunnel4.c
@@ -167,22 +167,21 @@ static int __init tunnel4_init(void)
printk(KERN_ERR "tunnel4 init: can't add protocol\n");
return -EAGAIN;
}
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (inet_add_protocol(&tunnel64_protocol, IPPROTO_IPV6)) {
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ inet_add_protocol(&tunnel64_protocol, IPPROTO_IPV6)) {
printk(KERN_ERR "tunnel64 init: can't add protocol\n");
inet_del_protocol(&tunnel4_protocol, IPPROTO_IPIP);
return -EAGAIN;
}
-#endif
return 0;
}
static void __exit tunnel4_fini(void)
{
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (inet_del_protocol(&tunnel64_protocol, IPPROTO_IPV6))
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ inet_del_protocol(&tunnel64_protocol, IPPROTO_IPV6))
printk(KERN_ERR "tunnel64 close: can't remove protocol\n");
-#endif
+
if (inet_del_protocol(&tunnel4_protocol, IPPROTO_IPIP))
printk(KERN_ERR "tunnel4 close: can't remove protocol\n");
}
diff --git a/net/ipv4/xfrm4_tunnel.c b/net/ipv4/xfrm4_tunnel.c
index 8280645..b6de688 100644
--- a/net/ipv4/xfrm4_tunnel.c
+++ b/net/ipv4/xfrm4_tunnel.c
@@ -84,25 +84,25 @@ static int __init ipip_init(void)
xfrm_unregister_type(&ipip_type, AF_INET);
return -EAGAIN;
}
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (xfrm4_tunnel_register(&xfrm64_tunnel_handler, AF_INET6)) {
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ xfrm4_tunnel_register(&xfrm64_tunnel_handler, AF_INET6)) {
printk(KERN_INFO "ipip init: can't add xfrm handler for AF_INET6\n");
xfrm4_tunnel_deregister(&xfrm_tunnel_handler, AF_INET);
xfrm_unregister_type(&ipip_type, AF_INET);
return -EAGAIN;
}
-#endif
return 0;
}
static void __exit ipip_fini(void)
{
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
- if (xfrm4_tunnel_deregister(&xfrm64_tunnel_handler, AF_INET6))
+ if (IS_ENABLED(CONFIG_IPV6) &&
+ xfrm4_tunnel_deregister(&xfrm64_tunnel_handler, AF_INET6))
printk(KERN_INFO "ipip close: can't remove xfrm handler for AF_INET6\n");
-#endif
+
if (xfrm4_tunnel_deregister(&xfrm_tunnel_handler, AF_INET))
printk(KERN_INFO "ipip close: can't remove xfrm handler for AF_INET\n");
+
if (xfrm_unregister_type(&ipip_type, AF_INET) < 0)
printk(KERN_INFO "ipip close: can't remove xfrm type\n");
}
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
2011-10-25 7:12 [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code Eric Dumazet
@ 2011-10-25 23:30 ` David Miller
2011-10-26 6:34 ` Eric Dumazet
0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2011-10-25 23:30 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 25 Oct 2011 09:12:32 +0200
> Remove some ugly #ifdef, using IS_ENABLED(CONFIG_xxx) macro
>
> IS_ENABLED(CONFIG_xxx) evaluates to 1 if CONFIG_xxx is set to 'y' or 'm'
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
I can understand the desire to do this, but it is going to run
afoul in cases where the definitions of datastructures in header
files are protected by real CPP ifdef guards rather than these
run-time variants.
So you build tested this with IPV6 disabled, right?
Didn't think so...
net/ipv4/ip_sockglue.c: In function ‘do_ip_setsockopt’:
net/ipv4/ip_sockglue.c:523:29: error: ‘LOOPBACK4_IPV6’ undeclared (first use in this function)
net/ipv4/ip_sockglue.c:523:29: note: each undeclared identifier is reported only once for each function it appears in
This fails because ip_sockglue.c guards the net/transp_v6.h header
inclusion with a real CPP guard.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
2011-10-25 23:30 ` David Miller
@ 2011-10-26 6:34 ` Eric Dumazet
2011-10-26 8:00 ` Ben Hutchings
2011-10-26 19:56 ` David Miller
0 siblings, 2 replies; 6+ messages in thread
From: Eric Dumazet @ 2011-10-26 6:34 UTC (permalink / raw)
To: David Miller; +Cc: netdev
Le mardi 25 octobre 2011 à 19:30 -0400, David Miller a écrit :
> net/ipv4/ip_sockglue.c: In function ‘do_ip_setsockopt’:
> net/ipv4/ip_sockglue.c:523:29: error: ‘LOOPBACK4_IPV6’ undeclared (first use in this function)
> net/ipv4/ip_sockglue.c:523:29: note: each undeclared identifier is reported only once for each function it appears in
>
> This fails because ip_sockglue.c guards the net/transp_v6.h header
> inclusion with a real CPP guard.
Yep, it seems compiler was not able to perform optimisation of dead
code.
if (IS_ENABLED(CONFIG_IPV6) &&
(sk->sk_family == PF_INET ||
(!((1 << sk->sk_state) &
(TCPF_LISTEN | TCPF_CLOSE)) &&
inet->inet_daddr != LOOPBACK4_IPV6))) {
Never mind, this will wait 3.3 :)
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
2011-10-26 6:34 ` Eric Dumazet
@ 2011-10-26 8:00 ` Ben Hutchings
2011-10-26 8:05 ` Eric Dumazet
2011-10-26 19:56 ` David Miller
1 sibling, 1 reply; 6+ messages in thread
From: Ben Hutchings @ 2011-10-26 8:00 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, netdev
On Wed, 2011-10-26 at 08:34 +0200, Eric Dumazet wrote:
> Le mardi 25 octobre 2011 à 19:30 -0400, David Miller a écrit :
>
> > net/ipv4/ip_sockglue.c: In function ‘do_ip_setsockopt’:
> > net/ipv4/ip_sockglue.c:523:29: error: ‘LOOPBACK4_IPV6’ undeclared (first use in this function)
> > net/ipv4/ip_sockglue.c:523:29: note: each undeclared identifier is reported only once for each function it appears in
> >
> > This fails because ip_sockglue.c guards the net/transp_v6.h header
> > inclusion with a real CPP guard.
>
> Yep, it seems compiler was not able to perform optimisation of dead
> code.
[...]
No, the compiler is just checking the code further than you wanted
before optimising it away.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
2011-10-26 8:00 ` Ben Hutchings
@ 2011-10-26 8:05 ` Eric Dumazet
0 siblings, 0 replies; 6+ messages in thread
From: Eric Dumazet @ 2011-10-26 8:05 UTC (permalink / raw)
To: Ben Hutchings; +Cc: David Miller, netdev
Le mercredi 26 octobre 2011 à 10:00 +0200, Ben Hutchings a écrit :
> On Wed, 2011-10-26 at 08:34 +0200, Eric Dumazet wrote:
> > Le mardi 25 octobre 2011 à 19:30 -0400, David Miller a écrit :
> >
> > > net/ipv4/ip_sockglue.c: In function ‘do_ip_setsockopt’:
> > > net/ipv4/ip_sockglue.c:523:29: error: ‘LOOPBACK4_IPV6’ undeclared (first use in this function)
> > > net/ipv4/ip_sockglue.c:523:29: note: each undeclared identifier is reported only once for each function it appears in
> > >
> > > This fails because ip_sockglue.c guards the net/transp_v6.h header
> > > inclusion with a real CPP guard.
> >
> > Yep, it seems compiler was not able to perform optimisation of dead
> > code.
> [...]
>
> No, the compiler is just checking the code further than you wanted
> before optimising it away.
>
Well, I was not saying compiler was guilty here.
Dead code must be parsed and compiled too.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code
2011-10-26 6:34 ` Eric Dumazet
2011-10-26 8:00 ` Ben Hutchings
@ 2011-10-26 19:56 ` David Miller
1 sibling, 0 replies; 6+ messages in thread
From: David Miller @ 2011-10-26 19:56 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 26 Oct 2011 08:34:34 +0200
> Le mardi 25 octobre 2011 à 19:30 -0400, David Miller a écrit :
>
>> net/ipv4/ip_sockglue.c: In function ‘do_ip_setsockopt’:
>> net/ipv4/ip_sockglue.c:523:29: error: ‘LOOPBACK4_IPV6’ undeclared (first use in this function)
>> net/ipv4/ip_sockglue.c:523:29: note: each undeclared identifier is reported only once for each function it appears in
>>
>> This fails because ip_sockglue.c guards the net/transp_v6.h header
>> inclusion with a real CPP guard.
>
> Yep, it seems compiler was not able to perform optimisation of dead
> code.
It's not the issue of optimizing the code out, in the end the compiler
will optimize this stuff out.
Rather, the issue is that the code seen by the compiler must be parsable.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-10-26 19:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-25 7:12 [PATCH net-next] ipv4: use IS_ENABLED() macro to cleanup code Eric Dumazet
2011-10-25 23:30 ` David Miller
2011-10-26 6:34 ` Eric Dumazet
2011-10-26 8:00 ` Ben Hutchings
2011-10-26 8:05 ` Eric Dumazet
2011-10-26 19:56 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).