Skip to contentSkip to conversation

net: fix returning void-valued expression warnings

PATCH Applied Harvey Harrison 4 participants 6 messages Apr 30, 2008 – May 1, 2008

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 7/10 net: fix returning void-valued expression warnings

drivers/net/8390.c:37:2: warning: returning void-valued expression drivers/net/bnx2.c:1635:3: warning: returning void-valued expression drivers/net/xen-netfront.c:1806:2: warning: returning void-valued expression net/ipv4/tcp_hybla.c:105:3: warning: returning void-valued expression net/ipv4/tcp_vegas.c:171:3: warning: returning void-valued expression net/ipv4/tcp_veno.c:123:3: warning: returning void-valued expression net/sysctl_net.c:85:2: warning: returning void-valued expression

---
 drivers/net/8390.c         |    2 +-
 drivers/net/bnx2.c         |    6 ++++--
 drivers/net/xen-netfront.c |    2 +-
 net/ipv4/tcp_hybla.c       |    6 ++++--
 net/ipv4/tcp_vegas.c       |    6 ++++--
 net/ipv4/tcp_veno.c        |    6 ++++--
 net/sysctl_net.c           |    2 +-
 7 files changed, 19 insertions(+), 11 deletions(-)
drivers/net/8390.c +1 -1
index a499e86..dc5d258 100644
@@ -34,7 +34,7 @@ struct net_device *__alloc_ei_netdev(int size)
 
 void NS8390_init(struct net_device *dev, int startp)
 {
-	return __NS8390_init(dev, startp);
+	__NS8390_init(dev, startp);
 }
 
 EXPORT_SYMBOL(ei_open);
drivers/net/bnx2.c +4 -2
index 15853be..8613879 100644
@@ -1631,8 +1631,10 @@ bnx2_set_default_remote_link(struct bnx2 *bp)
 static void
 bnx2_set_default_link(struct bnx2 *bp)
 {
-	if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP)
-		return bnx2_set_default_remote_link(bp);
+	if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP) {
+		bnx2_set_default_remote_link(bp);
+		return;
+	}
 
 	bp->autoneg = AUTONEG_SPEED | AUTONEG_FLOW_CTRL;
 	bp->req_line_speed = 0;
drivers/net/xen-netfront.c +1 -1
index e62018a..8bddff1 100644
@@ -1803,7 +1803,7 @@ static void __exit netif_exit(void)
 	if (is_initial_xendomain())
 		return;
 
-	return xenbus_unregister_driver(&netfront);
+	xenbus_unregister_driver(&netfront);
 }
 module_exit(netif_exit);
 
net/ipv4/tcp_hybla.c +4 -2
index 44618b6..bfcbd14 100644
@@ -101,8 +101,10 @@ static void hybla_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
 	if (!tcp_is_cwnd_limited(sk, in_flight))
 		return;
 
-	if (!ca->hybla_en)
-		return tcp_reno_cong_avoid(sk, ack, in_flight);
+	if (!ca->hybla_en) {
+		tcp_reno_cong_avoid(sk, ack, in_flight);
+		return;
+	}
 
 	if (ca->rho == 0)
 		hybla_recalc_param(sk);
net/ipv4/tcp_vegas.c +4 -2
index 0e1a8c9..14504da 100644
@@ -167,8 +167,10 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct vegas *vegas = inet_csk_ca(sk);
 
-	if (!vegas->doing_vegas_now)
-		return tcp_reno_cong_avoid(sk, ack, in_flight);
+	if (!vegas->doing_vegas_now) {
+		tcp_reno_cong_avoid(sk, ack, in_flight);
+		return;
+	}
 
 	/* The key players are v_beg_snd_una and v_beg_snd_nxt.
 	 *
net/ipv4/tcp_veno.c +4 -2
index 2bf618a..d08b2e8 100644
@@ -119,8 +119,10 @@ static void tcp_veno_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct veno *veno = inet_csk_ca(sk);
 
-	if (!veno->doing_veno_now)
-		return tcp_reno_cong_avoid(sk, ack, in_flight);
+	if (!veno->doing_veno_now) {
+		tcp_reno_cong_avoid(sk, ack, in_flight);
+		return;
+	}
 
 	/* limited by applications */
 	if (!tcp_is_cwnd_limited(sk, in_flight))
net/sysctl_net.c +1 -1
index 665e856..b4f0525 100644
@@ -82,6 +82,6 @@ EXPORT_SYMBOL_GPL(register_net_sysctl_table);
 
 void unregister_net_sysctl_table(struct ctl_table_header *header)
 {
-	return unregister_sysctl_table(header);
+	unregister_sysctl_table(header);
 }
 EXPORT_SYMBOL_GPL(unregister_net_sysctl_table);
Signature · 1 line
1.5.5.1.305.g7c84
maintainer
#1 lore raw

From: Harvey Harrison <[email protected]>
Date: Wed, 30 Apr 2008 15:03:43 -0700

Quoted 9 lines

drivers/net/8390.c:37:2: warning: returning void-valued expression drivers/net/bnx2.c:1635:3: warning: returning void-valued expression drivers/net/xen-netfront.c:1806:2: warning: returning void-valued expression net/ipv4/tcp_hybla.c:105:3: warning: returning void-valued expression net/ipv4/tcp_vegas.c:171:3: warning: returning void-valued expression net/ipv4/tcp_veno.c:123:3: warning: returning void-valued expression net/sysctl_net.c:85:2: warning: returning void-valued expression

I wish this weren't marked with a warning, what spits this out, sparse?

I know the kernel is written in C and not C++, but even Stroustrup mentions this case explicitly in his book:

A void function cannot return a value. However, a call of a void function doesn't yield a value, so a void function can use a call of a void function as the expression in a return statement.

And I see no reason why there's anything wrong with this construct.

#2 lore raw
Quoted 11 lines · David Miller

From: Harvey Harrison <[email protected]>
Date: Wed, 30 Apr 2008 15:03:43 -0700

Quoted 8 lines

drivers/net/8390.c:37:2: warning: returning void-valued expression drivers/net/bnx2.c:1635:3: warning: returning void-valued expression drivers/net/xen-netfront.c:1806:2: warning: returning void-valued expression net/ipv4/tcp_hybla.c:105:3: warning: returning void-valued expression net/ipv4/tcp_vegas.c:171:3: warning: returning void-valued expression net/ipv4/tcp_veno.c:123:3: warning: returning void-valued expression net/sysctl_net.c:85:2: warning: returning void-valued expression

Quoted 4 lines
Quoted 1 line

I wish this weren't marked with a warning, what spits this out, sparse?

Yes, sparse warning.

Quoted 10 lines

I know the kernel is written in C and not C++, but even Stroustrup mentions this case explicitly in his book:

A void function cannot return a value. However, a call of a void function doesn't yield a value, so a void function can use a call of a void function as the expression in a return statement.

And I see no reason why there's anything wrong with this construct.

Well, in an X86_32 allyesconfig, this only trips 32 times...so it's not exactly common. I agree that there is nothing _wrong_ with this, I'll just add Linus and see if we can just call it codingstyle ;)

This is just a _trivial_ way to make the sparse output easier for people to use day-to-day for the kernel. There's lots more to do, but this set removes all remaining integer as NUll/ returning void-value/ single bit signed bitfield warnings.

Cheers,

Harvey

maintainer
#3 lore raw

From: Harvey Harrison <[email protected]>
Date: Wed, 30 Apr 2008 15:20:05 -0700

Quoted 4 lines

This is just a _trivial_ way to make the sparse output easier for people to use day-to-day for the kernel. There's lots more to do, but this set removes all remaining integer as NUll/ returning void-value/ single bit signed bitfield warnings.

Absolutely, I have no problem with that.

So I'll likely apply your patch, thanks.

#4 lore raw
In reply to Harvey Harrison
Quoted 4 lines · Harvey Harrison

Well, in an X86_32 allyesconfig, this only trips 32 times...so it's not exactly common. I agree that there is nothing _wrong_ with this, I'll just add Linus and see if we can just call it codingstyle ;)

I actually had a patch to sparse to _not_ complain about it, because I think it's one of the sane C++ extensions. I must have lost the patch and not sent it upstream.

So in general, I don't mind the "return void_function()" in a void function, I think it makes sense from a type standpoint, and sometimes results in cleaner code. That said, I'm also not sure it's worth breaking the C standard over, so I don't really mind it being fixed in the kernel either (but would certainly also not complain if sparse were to be changed to not complain)

Linus

Acked-by on v1 7/10
#5 lore raw
In reply to Harvey Harrison

drivers/net/8390.c struct net_device *__alloc_ei_netdev(int size) · line 40

Quoted 11 lines
drivers/net/8390.c +1 -1
@@ -34,7 +34,7 @@ struct net_device *__alloc_ei_netdev(int size)
 
 void NS8390_init(struct net_device *dev, int startp)
 {
-	return __NS8390_init(dev, startp);
+	__NS8390_init(dev, startp);
 }
 
 EXPORT_SYMBOL(ei_open);

A