Message ID | 20190322141848.659387-1-arnd@arndb.de |
---|---|
State | Accepted |
Commit | 526949e877f44672d408bfe291e39860c13f2e24 |
Headers | show |
Series | rxrpc: avoid clang -Wuninitialized warning | expand |
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 >
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 --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 */
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