Messages in this thread | | | Date | Fri, 22 Mar 2019 09:12:44 -0700 | From | Nathan Chancellor <> | Subject | Re: [PATCH] tipc: avoid a clang -Wuninitialized warning |
| |
On Fri, Mar 22, 2019 at 03:18:13PM +0100, Arnd Bergmann wrote: > clang notices that we pass 'maddr' into the tipc_bearer_xmit() function > without having initialized it first: > > net/tipc/node.c:831:6: error: variable 'maddr' is used uninitialized whenever 'if' condition is false > [-Werror,-Wsometimes-uninitialized] > if (!tipc_link_is_establishing(l)) { > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > net/tipc/node.c:847:46: note: uninitialized use occurs here > tipc_bearer_xmit(n->net, bearer_id, &xmitq, maddr); > ^~~~~ > net/tipc/node.c:831:2: note: remove the 'if' if its condition is always true > if (!tipc_link_is_establishing(l)) { > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > net/tipc/node.c:821:31: note: initialize the variable 'maddr' to silence this warning > struct tipc_media_addr *maddr; > ^ > = NULL > > This is harmless because it won't use 'maddr' if the > queue is empty, but it's better to make that explicit > and not even call the function in that case. > > As clang is able to inline the check, it then notices that > the code is safe. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Thanks for looking into this and fixing it!
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> --- > net/tipc/node.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/net/tipc/node.c b/net/tipc/node.c > index 2dc4919ab23c..ca4cafd00a38 100644 > --- a/net/tipc/node.c > +++ b/net/tipc/node.c > @@ -844,7 +844,8 @@ static void tipc_node_link_down(struct tipc_node *n, int bearer_id, bool delete) > tipc_node_write_unlock(n); > if (delete) > tipc_mon_remove_peer(n->net, n->addr, old_bearer_id); > - tipc_bearer_xmit(n->net, bearer_id, &xmitq, maddr); > + if (!skb_queue_empty(&xmitq)) > + tipc_bearer_xmit(n->net, bearer_id, &xmitq, maddr); > tipc_sk_rcv(n->net, &le->inputq); > } > > -- > 2.20.0 >
| |