net: fix returning void-valued expression warnings
Subsystems (4)
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
David Miller
maintainerFrom: 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 expressiondrivers/net/bnx2.c:1635:3: warning: returning void-valued expressiondrivers/net/xen-netfront.c:1806:2: warning: returning void-valued expressionnet/ipv4/tcp_hybla.c:105:3: warning: returning void-valued expressionnet/ipv4/tcp_vegas.c:171:3: warning: returning void-valued expressionnet/ipv4/tcp_veno.c:123:3: warning: returning void-valued expressionnet/sysctl_net.c:85:2: warning: returning void-valued expressionSigned-off-by Harvey Harrison <[email protected]>
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.
Quoted 11 lines · David Miller
From: Harvey Harrison <[email protected]>
Date: Wed, 30 Apr 2008 15:03:43 -0700Quoted 8 lines
drivers/net/8390.c:37:2: warning: returning void-valued expressiondrivers/net/bnx2.c:1635:3: warning: returning void-valued expressiondrivers/net/xen-netfront.c:1806:2: warning: returning void-valued expressionnet/ipv4/tcp_hybla.c:105:3: warning: returning void-valued expressionnet/ipv4/tcp_vegas.c:171:3: warning: returning void-valued expressionnet/ipv4/tcp_veno.c:123:3: warning: returning void-valued expressionnet/sysctl_net.c:85:2: warning: returning void-valued expression
Quoted 4 lines
Quoted 1 line
Signed-off-by Harvey Harrison <[email protected]>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
David Miller
maintainerFrom: 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.
Quoted 4 lines · Harvey Harrison
Well, in an
X86_32allyesconfig, 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
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