diff mbox series

rxrpc: avoid clang -Wuninitialized warning

Message ID 20190322141848.659387-1-arnd@arndb.de
State Accepted
Commit 526949e877f44672d408bfe291e39860c13f2e24
Headers show
Series rxrpc: avoid clang -Wuninitialized warning | expand

Commit Message

Arnd Bergmann March 22, 2019, 2:18 p.m. UTC
clang produces a false-positive warning as it fails to notice
that "lost = true" implies that "ret" is initialized:

net/rxrpc/output.c:402:6: error: variable 'ret' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
        if (lost)
            ^~~~
net/rxrpc/output.c:437:6: note: uninitialized use occurs here
        if (ret >= 0) {
            ^~~
net/rxrpc/output.c:402:2: note: remove the 'if' if its condition is always false
        if (lost)
        ^~~~~~~~~
net/rxrpc/output.c:339:9: note: initialize the variable 'ret' to silence this warning
        int ret, opt;
               ^
                = 0

Rearrange the code to make that more obvious and avoid the warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 net/rxrpc/output.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

-- 
2.20.0

Comments

Nathan Chancellor March 22, 2019, 3:22 p.m. UTC | #1
On Fri, Mar 22, 2019 at 03:18:43PM +0100, Arnd Bergmann wrote:
> clang produces a false-positive warning as it fails to notice

> that "lost = true" implies that "ret" is initialized:

> 

> net/rxrpc/output.c:402:6: error: variable 'ret' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]

>         if (lost)

>             ^~~~

> net/rxrpc/output.c:437:6: note: uninitialized use occurs here

>         if (ret >= 0) {

>             ^~~

> net/rxrpc/output.c:402:2: note: remove the 'if' if its condition is always false

>         if (lost)

>         ^~~~~~~~~

> net/rxrpc/output.c:339:9: note: initialize the variable 'ret' to silence this warning

>         int ret, opt;

>                ^

>                 = 0

> 

> Rearrange the code to make that more obvious and avoid the warning.

> 

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>


Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>


> ---

>  net/rxrpc/output.c | 11 +++++------

>  1 file changed, 5 insertions(+), 6 deletions(-)

> 

> diff --git a/net/rxrpc/output.c b/net/rxrpc/output.c

> index 736aa9281100..004c762c2e8d 100644

> --- a/net/rxrpc/output.c

> +++ b/net/rxrpc/output.c

> @@ -335,7 +335,6 @@ int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,

>  	struct kvec iov[2];

>  	rxrpc_serial_t serial;

>  	size_t len;

> -	bool lost = false;

>  	int ret, opt;

>  

>  	_enter(",{%d}", skb->len);

> @@ -393,14 +392,14 @@ int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,

>  		static int lose;

>  		if ((lose++ & 7) == 7) {

>  			ret = 0;

> -			lost = true;

> +			trace_rxrpc_tx_data(call, sp->hdr.seq, serial,

> +					    whdr.flags, retrans, true);

> +			goto done;

>  		}

>  	}

>  

> -	trace_rxrpc_tx_data(call, sp->hdr.seq, serial, whdr.flags,

> -			    retrans, lost);

> -	if (lost)

> -		goto done;

> +	trace_rxrpc_tx_data(call, sp->hdr.seq, serial, whdr.flags, retrans,

> +			    false);

>  

>  	/* send the packet with the don't fragment bit set if we currently

>  	 * think it's small enough */

> -- 

> 2.20.0

>
David Miller March 24, 2019, 1:49 a.m. UTC | #2
From: Arnd Bergmann <arnd@arndb.de>

Date: Fri, 22 Mar 2019 15:18:43 +0100

> clang produces a false-positive warning as it fails to notice

> that "lost = true" implies that "ret" is initialized:

 ...
> Rearrange the code to make that more obvious and avoid the warning.

> 

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>


Applied.
diff mbox series

Patch

diff --git a/net/rxrpc/output.c b/net/rxrpc/output.c
index 736aa9281100..004c762c2e8d 100644
--- a/net/rxrpc/output.c
+++ b/net/rxrpc/output.c
@@ -335,7 +335,6 @@  int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,
 	struct kvec iov[2];
 	rxrpc_serial_t serial;
 	size_t len;
-	bool lost = false;
 	int ret, opt;
 
 	_enter(",{%d}", skb->len);
@@ -393,14 +392,14 @@  int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,
 		static int lose;
 		if ((lose++ & 7) == 7) {
 			ret = 0;
-			lost = true;
+			trace_rxrpc_tx_data(call, sp->hdr.seq, serial,
+					    whdr.flags, retrans, true);
+			goto done;
 		}
 	}
 
-	trace_rxrpc_tx_data(call, sp->hdr.seq, serial, whdr.flags,
-			    retrans, lost);
-	if (lost)
-		goto done;
+	trace_rxrpc_tx_data(call, sp->hdr.seq, serial, whdr.flags, retrans,
+			    false);
 
 	/* send the packet with the don't fragment bit set if we currently
 	 * think it's small enough */