Re: net/sunrpc/svcsock.c:527:32: warning: Variable 'uninitialized_var' is assigned a value that is never used. [unreadVariable]

From: Chuck Lever
Date: Wed Apr 08 2020 - 17:36:05 EST




> On Apr 8, 2020, at 5:32 PM, kbuild test robot <lkp@xxxxxxxxx> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: f5e94d10e4c468357019e5c28d48499f677b284f
> commit: da1661b93bf489cdbc8bcea919b165d31b4810bf SUNRPC: Teach server to use xprt_sock_sendmsg for socket sends
> date: 3 weeks ago
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
>
>
> cppcheck warnings: (new ones prefixed by >>)
>
> net/sunrpc/svcsock.c:405:9: warning: union member 'Anonymous0::all' is never used. [unusedStructMember]
> long all[SVC_PKTINFO_SPACE / sizeof(long)];
> ^
> net/sunrpc/svcsock.c:518:9: warning: union member 'Anonymous1::all' is never used. [unusedStructMember]
> long all[SVC_PKTINFO_SPACE / sizeof(long)];
> ^
>>> net/sunrpc/svcsock.c:527:32: warning: Variable 'uninitialized_var' is assigned a value that is never used. [unreadVariable]
> unsigned int uninitialized_var(sent);
> ^
>
> vim +/uninitialized_var +527 net/sunrpc/svcsock.c
>
> 504
> 505 /**
> 506 * svc_udp_sendto - Send out a reply on a UDP socket
> 507 * @rqstp: completed svc_rqst
> 508 *
> 509 * Returns the number of bytes sent, or a negative errno.
> 510 */
> 511 static int svc_udp_sendto(struct svc_rqst *rqstp)
> 512 {
> 513 struct svc_xprt *xprt = rqstp->rq_xprt;
> 514 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
> 515 struct xdr_buf *xdr = &rqstp->rq_res;
> 516 union {
> 517 struct cmsghdr hdr;
> 518 long all[SVC_PKTINFO_SPACE / sizeof(long)];
> 519 } buffer;
> 520 struct cmsghdr *cmh = &buffer.hdr;
> 521 struct msghdr msg = {
> 522 .msg_name = &rqstp->rq_addr,
> 523 .msg_namelen = rqstp->rq_addrlen,
> 524 .msg_control = cmh,
> 525 .msg_controllen = sizeof(buffer),
> 526 };
>> 527 unsigned int uninitialized_var(sent);
> 528 int err;
> 529
> 530 svc_set_cmsg_data(rqstp, cmh);
> 531
> 532 err = xprt_sock_sendmsg(svsk->sk_sock, &msg, xdr, 0, 0, &sent);
> 533 xdr_free_bvec(xdr);
> 534 if (err == -ECONNREFUSED) {
> 535 /* ICMP error on earlier request. */
> 536 err = xprt_sock_sendmsg(svsk->sk_sock, &msg, xdr, 0, 0, &sent);
> 537 xdr_free_bvec(xdr);
> 538 }
> 539 if (err < 0)
> 540 return err;
> 541 return sent;

Wha? "sent" is used right here. Can someone explain this warning?


> 542 }
> 543
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

--
Chuck Lever