All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
Date: Mon, 6 Mar 2023 17:55:33 +0800	[thread overview]
Message-ID: <202303061707.ICwrtQsr-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Chuck Lever <chuck.lever@oracle.com>

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux topic-rpc-with-tls-upcall
head:   88897fb973ffb2448e3452ca4e9283908bd257f6
commit: d166e9ec5e3800de085444eca5883ce1738f6cb3 [1/18] net/handshake: Create a NETLINK service for handling handshake requests
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230306/202303061707.ICwrtQsr-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202303061707.ICwrtQsr-lkp@intel.com/

smatch warnings:
net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
net/handshake/netlink.c:240 handshake_nl_done_doit() error: uninitialized symbol 'req'.
net/handshake/request.c:193 handshake_complete() warn: test_and_set_bit() takes a bit number
net/handshake/request.c:236 handshake_req_cancel() warn: test_and_set_bit() takes a bit number

vim +/req +187 net/handshake/netlink.c

d166e9ec5e3800 Chuck Lever 2023-02-19  141  
d166e9ec5e3800 Chuck Lever 2023-02-19  142  static int handshake_nl_accept_doit(struct sk_buff *skb, struct genl_info *gi)
d166e9ec5e3800 Chuck Lever 2023-02-19  143  {
d166e9ec5e3800 Chuck Lever 2023-02-19  144  	struct nlattr *tb[HANDSHAKE_A_ACCEPT_MAX + 1];
d166e9ec5e3800 Chuck Lever 2023-02-19  145  	struct net *net = sock_net(skb->sk);
d166e9ec5e3800 Chuck Lever 2023-02-19  146  	struct handshake_req *pos, *req;
d166e9ec5e3800 Chuck Lever 2023-02-19  147  	int fd, err;
d166e9ec5e3800 Chuck Lever 2023-02-19  148  
d166e9ec5e3800 Chuck Lever 2023-02-19  149  	err = -EINVAL;
d166e9ec5e3800 Chuck Lever 2023-02-19  150  	if (genlmsg_parse(nlmsg_hdr(skb), &handshake_genl_family, tb,
d166e9ec5e3800 Chuck Lever 2023-02-19  151  			  HANDSHAKE_A_ACCEPT_HANDLER_CLASS,
d166e9ec5e3800 Chuck Lever 2023-02-19  152  			  handshake_accept_nl_policy, NULL))
d166e9ec5e3800 Chuck Lever 2023-02-19  153  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  154  	if (!tb[HANDSHAKE_A_ACCEPT_HANDLER_CLASS])
d166e9ec5e3800 Chuck Lever 2023-02-19  155  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  156  
d166e9ec5e3800 Chuck Lever 2023-02-19  157  	req = NULL;
d166e9ec5e3800 Chuck Lever 2023-02-19  158  	spin_lock(&net->hs_lock);
d166e9ec5e3800 Chuck Lever 2023-02-19  159  	list_for_each_entry(pos, &net->hs_requests, hr_list) {
d166e9ec5e3800 Chuck Lever 2023-02-19  160  		if (pos->hr_proto->hp_handler_class !=
d166e9ec5e3800 Chuck Lever 2023-02-19  161  		    nla_get_u32(tb[HANDSHAKE_A_ACCEPT_HANDLER_CLASS]))
d166e9ec5e3800 Chuck Lever 2023-02-19  162  			continue;
d166e9ec5e3800 Chuck Lever 2023-02-19  163  		__remove_pending_locked(net, pos);
d166e9ec5e3800 Chuck Lever 2023-02-19  164  		req = pos;
d166e9ec5e3800 Chuck Lever 2023-02-19  165  		break;
d166e9ec5e3800 Chuck Lever 2023-02-19  166  	}
d166e9ec5e3800 Chuck Lever 2023-02-19  167  	spin_unlock(&net->hs_lock);
d166e9ec5e3800 Chuck Lever 2023-02-19  168  	if (!req)
d166e9ec5e3800 Chuck Lever 2023-02-19  169  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  170  
d166e9ec5e3800 Chuck Lever 2023-02-19  171  	fd = handshake_dup(req->hr_sock);
d166e9ec5e3800 Chuck Lever 2023-02-19  172  	if (fd < 0) {
d166e9ec5e3800 Chuck Lever 2023-02-19  173  		err = fd;
d166e9ec5e3800 Chuck Lever 2023-02-19  174  		goto out_complete;
d166e9ec5e3800 Chuck Lever 2023-02-19  175  	}
d166e9ec5e3800 Chuck Lever 2023-02-19  176  	err = req->hr_proto->hp_accept(req, gi, fd);
d166e9ec5e3800 Chuck Lever 2023-02-19  177  	if (err)
d166e9ec5e3800 Chuck Lever 2023-02-19  178  		goto out_complete;
d166e9ec5e3800 Chuck Lever 2023-02-19  179  
d166e9ec5e3800 Chuck Lever 2023-02-19  180  	trace_handshake_cmd_accept(net, req, req->hr_sock, fd);
d166e9ec5e3800 Chuck Lever 2023-02-19  181  	return 0;
d166e9ec5e3800 Chuck Lever 2023-02-19  182  
d166e9ec5e3800 Chuck Lever 2023-02-19  183  out_complete:
d166e9ec5e3800 Chuck Lever 2023-02-19  184  	handshake_complete(req, -EIO, NULL);
d166e9ec5e3800 Chuck Lever 2023-02-19  185  	fput(req->hr_sock->file);
d166e9ec5e3800 Chuck Lever 2023-02-19  186  out_status:
d166e9ec5e3800 Chuck Lever 2023-02-19 @187  	trace_handshake_cmd_accept_err(net, req, NULL, err);
d166e9ec5e3800 Chuck Lever 2023-02-19  188  	return handshake_status_reply(skb, gi, err);
d166e9ec5e3800 Chuck Lever 2023-02-19  189  }
d166e9ec5e3800 Chuck Lever 2023-02-19  190  
d166e9ec5e3800 Chuck Lever 2023-02-19  191  static const struct nla_policy
d166e9ec5e3800 Chuck Lever 2023-02-19  192  handshake_done_nl_policy[HANDSHAKE_A_DONE_MAX + 1] = {
d166e9ec5e3800 Chuck Lever 2023-02-19  193  	[HANDSHAKE_A_DONE_SOCKFD] = { .type = NLA_U32, },
d166e9ec5e3800 Chuck Lever 2023-02-19  194  	[HANDSHAKE_A_DONE_STATUS] = { .type = NLA_U32, },
d166e9ec5e3800 Chuck Lever 2023-02-19  195  	[HANDSHAKE_A_DONE_REMOTE_AUTH] = { .type = NLA_U32, },
d166e9ec5e3800 Chuck Lever 2023-02-19  196  };
d166e9ec5e3800 Chuck Lever 2023-02-19  197  
d166e9ec5e3800 Chuck Lever 2023-02-19  198  static int handshake_nl_done_doit(struct sk_buff *skb, struct genl_info *gi)
d166e9ec5e3800 Chuck Lever 2023-02-19  199  {
d166e9ec5e3800 Chuck Lever 2023-02-19  200  	struct nlattr *tb[HANDSHAKE_A_DONE_MAX + 1];
d166e9ec5e3800 Chuck Lever 2023-02-19  201  	struct net *net = sock_net(skb->sk);
d166e9ec5e3800 Chuck Lever 2023-02-19  202  	struct socket *sock = NULL;
d166e9ec5e3800 Chuck Lever 2023-02-19  203  	struct handshake_req *req;
d166e9ec5e3800 Chuck Lever 2023-02-19  204  	int fd, status, err;
d166e9ec5e3800 Chuck Lever 2023-02-19  205  
d166e9ec5e3800 Chuck Lever 2023-02-19  206  	err = genlmsg_parse(nlmsg_hdr(skb), &handshake_genl_family, tb,
d166e9ec5e3800 Chuck Lever 2023-02-19  207  			    HANDSHAKE_A_DONE_MAX, handshake_done_nl_policy,
d166e9ec5e3800 Chuck Lever 2023-02-19  208  			    NULL);
d166e9ec5e3800 Chuck Lever 2023-02-19  209  	if (err || !tb[HANDSHAKE_A_DONE_SOCKFD]) {
d166e9ec5e3800 Chuck Lever 2023-02-19  210  		err = -EINVAL;
d166e9ec5e3800 Chuck Lever 2023-02-19  211  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  212  	}
d166e9ec5e3800 Chuck Lever 2023-02-19  213  
d166e9ec5e3800 Chuck Lever 2023-02-19  214  	fd = nla_get_u32(tb[HANDSHAKE_A_DONE_SOCKFD]);
d166e9ec5e3800 Chuck Lever 2023-02-19  215  
d166e9ec5e3800 Chuck Lever 2023-02-19  216  	err = 0;
d166e9ec5e3800 Chuck Lever 2023-02-19  217  	sock = sockfd_lookup(fd, &err);
d166e9ec5e3800 Chuck Lever 2023-02-19  218  	if (err) {
d166e9ec5e3800 Chuck Lever 2023-02-19  219  		err = -EBADF;
d166e9ec5e3800 Chuck Lever 2023-02-19  220  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  221  	}
d166e9ec5e3800 Chuck Lever 2023-02-19  222  
d166e9ec5e3800 Chuck Lever 2023-02-19  223  	req = sock->sk->sk_handshake_req;
d166e9ec5e3800 Chuck Lever 2023-02-19  224  	if (!req) {
d166e9ec5e3800 Chuck Lever 2023-02-19  225  		err = -EBUSY;
d166e9ec5e3800 Chuck Lever 2023-02-19  226  		goto out_status;
d166e9ec5e3800 Chuck Lever 2023-02-19  227  	}
d166e9ec5e3800 Chuck Lever 2023-02-19  228  
d166e9ec5e3800 Chuck Lever 2023-02-19  229  	trace_handshake_cmd_done(net, req, sock, fd);
d166e9ec5e3800 Chuck Lever 2023-02-19  230  
d166e9ec5e3800 Chuck Lever 2023-02-19  231  	status = -EIO;
d166e9ec5e3800 Chuck Lever 2023-02-19  232  	if (tb[HANDSHAKE_A_DONE_STATUS])
d166e9ec5e3800 Chuck Lever 2023-02-19  233  		status = nla_get_u32(tb[HANDSHAKE_A_DONE_STATUS]);
d166e9ec5e3800 Chuck Lever 2023-02-19  234  
d166e9ec5e3800 Chuck Lever 2023-02-19  235  	handshake_complete(req, status, tb);
d166e9ec5e3800 Chuck Lever 2023-02-19  236  	fput(sock->file);
d166e9ec5e3800 Chuck Lever 2023-02-19  237  	return 0;
d166e9ec5e3800 Chuck Lever 2023-02-19  238  
d166e9ec5e3800 Chuck Lever 2023-02-19  239  out_status:
d166e9ec5e3800 Chuck Lever 2023-02-19 @240  	trace_handshake_cmd_done_err(net, req, sock, err);
d166e9ec5e3800 Chuck Lever 2023-02-19  241  	return 0;
d166e9ec5e3800 Chuck Lever 2023-02-19  242  }
d166e9ec5e3800 Chuck Lever 2023-02-19  243  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

             reply	other threads:[~2023-03-06  9:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-06  9:55 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-03-06 10:01 [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req' Dan Carpenter
2023-03-06 15:11 ` Chuck Lever III
2023-03-06 15:17   ` Dan Carpenter
2023-03-06 15:19     ` Chuck Lever III
2023-03-06 15:20       ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202303061707.ICwrtQsr-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.