* [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.