All of lore.kernel.org
 help / color / mirror / Atom feed
* [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
@ 2023-03-06  9:55 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2023-03-06  9:55 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
@ 2023-03-06 10:01 Dan Carpenter
  2023-03-06 15:11 ` Chuck Lever III
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2023-03-06 10:01 UTC (permalink / raw)
  To: oe-kbuild, Chuck Lever; +Cc: lkp, oe-kbuild-all

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
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  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);
                                                                                  ^^^
Uninitialized.

d166e9ec5e3800 Chuck Lever 2023-02-19  241  	return 0;
d166e9ec5e3800 Chuck Lever 2023-02-19  242  }

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
  2023-03-06 10:01 Dan Carpenter
@ 2023-03-06 15:11 ` Chuck Lever III
  2023-03-06 15:17   ` Dan Carpenter
  0 siblings, 1 reply; 6+ messages in thread
From: Chuck Lever III @ 2023-03-06 15:11 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: oe-kbuild@lists.linux.dev, kernel test robot,
	oe-kbuild-all@lists.linux.dev



> On Mar 6, 2023, at 5:01 AM, Dan Carpenter <error27@gmail.com> wrote:
> 
> 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
> 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  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;

Moving this line earlier in the function should address this
warning.

Note that the tracepoint does not dereference @req, so there
shouldn't be a crash.

Thanks, Dan.


> 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);
>                                                                                  ^^^
> Uninitialized.
> 
> d166e9ec5e3800 Chuck Lever 2023-02-19  241  	return 0;
> d166e9ec5e3800 Chuck Lever 2023-02-19  242  }
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests
> 

--
Chuck Lever



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
  2023-03-06 15:11 ` Chuck Lever III
@ 2023-03-06 15:17   ` Dan Carpenter
  2023-03-06 15:19     ` Chuck Lever III
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2023-03-06 15:17 UTC (permalink / raw)
  To: Chuck Lever III
  Cc: oe-kbuild@lists.linux.dev, kernel test robot,
	oe-kbuild-all@lists.linux.dev

On Mon, Mar 06, 2023 at 03:11:23PM +0000, Chuck Lever III wrote:
> 
> 
> > On Mar 6, 2023, at 5:01 AM, Dan Carpenter <error27@gmail.com> wrote:
> > 
> > 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
> > 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

Thanks Chuck, but don't forget about these as well.  I haven't looked
at the code but I suspect that it's passing BIT(x) to test_bit() instead
of just passing x.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
  2023-03-06 15:17   ` Dan Carpenter
@ 2023-03-06 15:19     ` Chuck Lever III
  2023-03-06 15:20       ` Dan Carpenter
  0 siblings, 1 reply; 6+ messages in thread
From: Chuck Lever III @ 2023-03-06 15:19 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: oe-kbuild@lists.linux.dev, kernel test robot,
	oe-kbuild-all@lists.linux.dev



> On Mar 6, 2023, at 10:17 AM, Dan Carpenter <error27@gmail.com> wrote:
> 
> On Mon, Mar 06, 2023 at 03:11:23PM +0000, Chuck Lever III wrote:
>> 
>> 
>>> On Mar 6, 2023, at 5:01 AM, Dan Carpenter <error27@gmail.com> wrote:
>>> 
>>> 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
>>> 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
> 
> Thanks Chuck, but don't forget about these as well.  I haven't looked
> at the code but I suspect that it's passing BIT(x) to test_bit() instead
> of just passing x.

Yep, fixed those up too.


--
Chuck Lever



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req'.
  2023-03-06 15:19     ` Chuck Lever III
@ 2023-03-06 15:20       ` Dan Carpenter
  0 siblings, 0 replies; 6+ messages in thread
From: Dan Carpenter @ 2023-03-06 15:20 UTC (permalink / raw)
  To: Chuck Lever III
  Cc: oe-kbuild@lists.linux.dev, kernel test robot,
	oe-kbuild-all@lists.linux.dev

On Mon, Mar 06, 2023 at 03:19:38PM +0000, Chuck Lever III wrote:
> 
> 
> > On Mar 6, 2023, at 10:17 AM, Dan Carpenter <error27@gmail.com> wrote:
> > 
> > On Mon, Mar 06, 2023 at 03:11:23PM +0000, Chuck Lever III wrote:
> >> 
> >> 
> >>> On Mar 6, 2023, at 5:01 AM, Dan Carpenter <error27@gmail.com> wrote:
> >>> 
> >>> 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
> >>> 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
> > 
> > Thanks Chuck, but don't forget about these as well.  I haven't looked
> > at the code but I suspect that it's passing BIT(x) to test_bit() instead
> > of just passing x.
> 
> Yep, fixed those up too.

Awesome.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-06 15:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-06  9:55 [cel:topic-rpc-with-tls-upcall 1/18] net/handshake/netlink.c:187 handshake_nl_accept_doit() error: uninitialized symbol 'req' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2023-03-06 10:01 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

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.