From: kernel test robot <lkp@intel.com>
To: Cong Wang <cong.wang@bytedance.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-kernel@vger.kernel.org
Subject: [congwang:sk_data_ready 7/9] drivers/nvme/target/tcp.c:1421:26: error: incompatible function pointer types assigning to 'int (*)(struct sock *)' from 'void (*)(struct sock *)'
Date: Sat, 4 Jun 2022 09:19:19 +0800 [thread overview]
Message-ID: <202206040948.2LLrE18o-lkp@intel.com> (raw)
tree: https://github.com/congwang/linux.git sk_data_ready
head: 9b75246962a59dce4d00a19ebb8be0cc7ca8f65c
commit: 70afff6045de95e79e5879150a5b54799d5cfede [7/9] net: make ->sk_data_ready() return int
config: arm-randconfig-c002-20220603 (https://download.01.org/0day-ci/archive/20220604/202206040948.2LLrE18o-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project b364c76683f8ef241025a9556300778c07b590c2)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/congwang/linux/commit/70afff6045de95e79e5879150a5b54799d5cfede
git remote add congwang https://github.com/congwang/linux.git
git fetch --no-tags congwang sk_data_ready
git checkout 70afff6045de95e79e5879150a5b54799d5cfede
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/nvme/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/nvme/target/tcp.c:1421:26: error: incompatible function pointer types assigning to 'int (*)(struct sock *)' from 'void (*)(struct sock *)' [-Werror,-Wincompatible-function-pointer-types]
sock->sk->sk_data_ready = queue->data_ready;
^ ~~~~~~~~~~~~~~~~~
>> drivers/nvme/target/tcp.c:1581:21: error: incompatible function pointer types assigning to 'void (*)(struct sock *)' from 'int (*)(struct sock *)' [-Werror,-Wincompatible-function-pointer-types]
queue->data_ready = sock->sk->sk_data_ready;
^ ~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvme/target/tcp.c:1739:19: error: incompatible function pointer types assigning to 'void (*)(struct sock *)' from 'int (*)(struct sock *)' [-Werror,-Wincompatible-function-pointer-types]
port->data_ready = port->sock->sk->sk_data_ready;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvme/target/tcp.c:1788:32: error: incompatible function pointer types assigning to 'int (*)(struct sock *)' from 'void (*)(struct sock *)' [-Werror,-Wincompatible-function-pointer-types]
port->sock->sk->sk_data_ready = port->data_ready;
^ ~~~~~~~~~~~~~~~~
4 errors generated.
vim +1421 drivers/nvme/target/tcp.c
872d26a391da92 Sagi Grimberg 2018-12-03 1415
872d26a391da92 Sagi Grimberg 2018-12-03 1416 static void nvmet_tcp_restore_socket_callbacks(struct nvmet_tcp_queue *queue)
872d26a391da92 Sagi Grimberg 2018-12-03 1417 {
872d26a391da92 Sagi Grimberg 2018-12-03 1418 struct socket *sock = queue->sock;
872d26a391da92 Sagi Grimberg 2018-12-03 1419
872d26a391da92 Sagi Grimberg 2018-12-03 1420 write_lock_bh(&sock->sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 @1421 sock->sk->sk_data_ready = queue->data_ready;
872d26a391da92 Sagi Grimberg 2018-12-03 1422 sock->sk->sk_state_change = queue->state_change;
872d26a391da92 Sagi Grimberg 2018-12-03 1423 sock->sk->sk_write_space = queue->write_space;
872d26a391da92 Sagi Grimberg 2018-12-03 1424 sock->sk->sk_user_data = NULL;
872d26a391da92 Sagi Grimberg 2018-12-03 1425 write_unlock_bh(&sock->sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1426 }
872d26a391da92 Sagi Grimberg 2018-12-03 1427
872d26a391da92 Sagi Grimberg 2018-12-03 1428 static void nvmet_tcp_finish_cmd(struct nvmet_tcp_cmd *cmd)
872d26a391da92 Sagi Grimberg 2018-12-03 1429 {
872d26a391da92 Sagi Grimberg 2018-12-03 1430 nvmet_req_uninit(&cmd->req);
872d26a391da92 Sagi Grimberg 2018-12-03 1431 nvmet_tcp_unmap_pdu_iovec(cmd);
69b85e1f1d1d1e Maurizio Lombardi 2021-11-16 1432 nvmet_tcp_free_cmd_buffers(cmd);
872d26a391da92 Sagi Grimberg 2018-12-03 1433 }
872d26a391da92 Sagi Grimberg 2018-12-03 1434
872d26a391da92 Sagi Grimberg 2018-12-03 1435 static void nvmet_tcp_uninit_data_in_cmds(struct nvmet_tcp_queue *queue)
872d26a391da92 Sagi Grimberg 2018-12-03 1436 {
872d26a391da92 Sagi Grimberg 2018-12-03 1437 struct nvmet_tcp_cmd *cmd = queue->cmds;
872d26a391da92 Sagi Grimberg 2018-12-03 1438 int i;
872d26a391da92 Sagi Grimberg 2018-12-03 1439
872d26a391da92 Sagi Grimberg 2018-12-03 1440 for (i = 0; i < queue->nr_cmds; i++, cmd++) {
872d26a391da92 Sagi Grimberg 2018-12-03 1441 if (nvmet_tcp_need_data_in(cmd))
af21250bb503a0 Maurizio Lombardi 2021-11-16 1442 nvmet_req_uninit(&cmd->req);
af21250bb503a0 Maurizio Lombardi 2021-11-16 1443
af21250bb503a0 Maurizio Lombardi 2021-11-16 1444 nvmet_tcp_unmap_pdu_iovec(cmd);
af21250bb503a0 Maurizio Lombardi 2021-11-16 1445 nvmet_tcp_free_cmd_buffers(cmd);
872d26a391da92 Sagi Grimberg 2018-12-03 1446 }
872d26a391da92 Sagi Grimberg 2018-12-03 1447
872d26a391da92 Sagi Grimberg 2018-12-03 1448 if (!queue->nr_cmds && nvmet_tcp_need_data_in(&queue->connect)) {
872d26a391da92 Sagi Grimberg 2018-12-03 1449 /* failed in connect */
872d26a391da92 Sagi Grimberg 2018-12-03 1450 nvmet_tcp_finish_cmd(&queue->connect);
872d26a391da92 Sagi Grimberg 2018-12-03 1451 }
872d26a391da92 Sagi Grimberg 2018-12-03 1452 }
872d26a391da92 Sagi Grimberg 2018-12-03 1453
872d26a391da92 Sagi Grimberg 2018-12-03 1454 static void nvmet_tcp_release_queue_work(struct work_struct *w)
872d26a391da92 Sagi Grimberg 2018-12-03 1455 {
926245c7d22271 Maurizio Lombardi 2021-10-15 1456 struct page *page;
872d26a391da92 Sagi Grimberg 2018-12-03 1457 struct nvmet_tcp_queue *queue =
872d26a391da92 Sagi Grimberg 2018-12-03 1458 container_of(w, struct nvmet_tcp_queue, release_work);
872d26a391da92 Sagi Grimberg 2018-12-03 1459
872d26a391da92 Sagi Grimberg 2018-12-03 1460 mutex_lock(&nvmet_tcp_queue_mutex);
872d26a391da92 Sagi Grimberg 2018-12-03 1461 list_del_init(&queue->queue_list);
872d26a391da92 Sagi Grimberg 2018-12-03 1462 mutex_unlock(&nvmet_tcp_queue_mutex);
872d26a391da92 Sagi Grimberg 2018-12-03 1463
872d26a391da92 Sagi Grimberg 2018-12-03 1464 nvmet_tcp_restore_socket_callbacks(queue);
a208fc56721775 Maurizio Lombardi 2021-11-16 1465 cancel_work_sync(&queue->io_work);
a208fc56721775 Maurizio Lombardi 2021-11-16 1466 /* stop accepting incoming data */
a208fc56721775 Maurizio Lombardi 2021-11-16 1467 queue->rcv_state = NVMET_TCP_RECV_ERR;
872d26a391da92 Sagi Grimberg 2018-12-03 1468
872d26a391da92 Sagi Grimberg 2018-12-03 1469 nvmet_tcp_uninit_data_in_cmds(queue);
872d26a391da92 Sagi Grimberg 2018-12-03 1470 nvmet_sq_destroy(&queue->nvme_sq);
872d26a391da92 Sagi Grimberg 2018-12-03 1471 cancel_work_sync(&queue->io_work);
872d26a391da92 Sagi Grimberg 2018-12-03 1472 sock_release(queue->sock);
872d26a391da92 Sagi Grimberg 2018-12-03 1473 nvmet_tcp_free_cmds(queue);
872d26a391da92 Sagi Grimberg 2018-12-03 1474 if (queue->hdr_digest || queue->data_digest)
872d26a391da92 Sagi Grimberg 2018-12-03 1475 nvmet_tcp_free_crypto(queue);
44f331a630bdc7 Sagi Grimberg 2022-02-14 1476 ida_free(&nvmet_tcp_queue_ida, queue->idx);
872d26a391da92 Sagi Grimberg 2018-12-03 1477
926245c7d22271 Maurizio Lombardi 2021-10-15 1478 page = virt_to_head_page(queue->pf_cache.va);
926245c7d22271 Maurizio Lombardi 2021-10-15 1479 __page_frag_cache_drain(page, queue->pf_cache.pagecnt_bias);
872d26a391da92 Sagi Grimberg 2018-12-03 1480 kfree(queue);
872d26a391da92 Sagi Grimberg 2018-12-03 1481 }
872d26a391da92 Sagi Grimberg 2018-12-03 1482
70afff6045de95 Cong Wang 2022-05-02 1483 static int nvmet_tcp_data_ready(struct sock *sk)
872d26a391da92 Sagi Grimberg 2018-12-03 1484 {
872d26a391da92 Sagi Grimberg 2018-12-03 1485 struct nvmet_tcp_queue *queue;
872d26a391da92 Sagi Grimberg 2018-12-03 1486
872d26a391da92 Sagi Grimberg 2018-12-03 1487 read_lock_bh(&sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1488 queue = sk->sk_user_data;
872d26a391da92 Sagi Grimberg 2018-12-03 1489 if (likely(queue))
f7790e5de92a3b Mark Wunderlich 2020-08-28 1490 queue_work_on(queue_cpu(queue), nvmet_tcp_wq, &queue->io_work);
872d26a391da92 Sagi Grimberg 2018-12-03 1491 read_unlock_bh(&sk->sk_callback_lock);
70afff6045de95 Cong Wang 2022-05-02 1492 return 0;
872d26a391da92 Sagi Grimberg 2018-12-03 1493 }
872d26a391da92 Sagi Grimberg 2018-12-03 1494
872d26a391da92 Sagi Grimberg 2018-12-03 1495 static void nvmet_tcp_write_space(struct sock *sk)
872d26a391da92 Sagi Grimberg 2018-12-03 1496 {
872d26a391da92 Sagi Grimberg 2018-12-03 1497 struct nvmet_tcp_queue *queue;
872d26a391da92 Sagi Grimberg 2018-12-03 1498
872d26a391da92 Sagi Grimberg 2018-12-03 1499 read_lock_bh(&sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1500 queue = sk->sk_user_data;
872d26a391da92 Sagi Grimberg 2018-12-03 1501 if (unlikely(!queue))
872d26a391da92 Sagi Grimberg 2018-12-03 1502 goto out;
872d26a391da92 Sagi Grimberg 2018-12-03 1503
872d26a391da92 Sagi Grimberg 2018-12-03 1504 if (unlikely(queue->state == NVMET_TCP_Q_CONNECTING)) {
872d26a391da92 Sagi Grimberg 2018-12-03 1505 queue->write_space(sk);
872d26a391da92 Sagi Grimberg 2018-12-03 1506 goto out;
872d26a391da92 Sagi Grimberg 2018-12-03 1507 }
872d26a391da92 Sagi Grimberg 2018-12-03 1508
872d26a391da92 Sagi Grimberg 2018-12-03 1509 if (sk_stream_is_writeable(sk)) {
872d26a391da92 Sagi Grimberg 2018-12-03 1510 clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
f7790e5de92a3b Mark Wunderlich 2020-08-28 1511 queue_work_on(queue_cpu(queue), nvmet_tcp_wq, &queue->io_work);
872d26a391da92 Sagi Grimberg 2018-12-03 1512 }
872d26a391da92 Sagi Grimberg 2018-12-03 1513 out:
872d26a391da92 Sagi Grimberg 2018-12-03 1514 read_unlock_bh(&sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1515 }
872d26a391da92 Sagi Grimberg 2018-12-03 1516
872d26a391da92 Sagi Grimberg 2018-12-03 1517 static void nvmet_tcp_state_change(struct sock *sk)
872d26a391da92 Sagi Grimberg 2018-12-03 1518 {
872d26a391da92 Sagi Grimberg 2018-12-03 1519 struct nvmet_tcp_queue *queue;
872d26a391da92 Sagi Grimberg 2018-12-03 1520
b5332a9f3f3d88 Sagi Grimberg 2021-03-21 1521 read_lock_bh(&sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1522 queue = sk->sk_user_data;
872d26a391da92 Sagi Grimberg 2018-12-03 1523 if (!queue)
872d26a391da92 Sagi Grimberg 2018-12-03 1524 goto done;
872d26a391da92 Sagi Grimberg 2018-12-03 1525
872d26a391da92 Sagi Grimberg 2018-12-03 1526 switch (sk->sk_state) {
872d26a391da92 Sagi Grimberg 2018-12-03 1527 case TCP_FIN_WAIT1:
872d26a391da92 Sagi Grimberg 2018-12-03 1528 case TCP_CLOSE_WAIT:
872d26a391da92 Sagi Grimberg 2018-12-03 1529 case TCP_CLOSE:
872d26a391da92 Sagi Grimberg 2018-12-03 1530 /* FALLTHRU */
872d26a391da92 Sagi Grimberg 2018-12-03 1531 nvmet_tcp_schedule_release_queue(queue);
872d26a391da92 Sagi Grimberg 2018-12-03 1532 break;
872d26a391da92 Sagi Grimberg 2018-12-03 1533 default:
872d26a391da92 Sagi Grimberg 2018-12-03 1534 pr_warn("queue %d unhandled state %d\n",
872d26a391da92 Sagi Grimberg 2018-12-03 1535 queue->idx, sk->sk_state);
872d26a391da92 Sagi Grimberg 2018-12-03 1536 }
872d26a391da92 Sagi Grimberg 2018-12-03 1537 done:
b5332a9f3f3d88 Sagi Grimberg 2021-03-21 1538 read_unlock_bh(&sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1539 }
872d26a391da92 Sagi Grimberg 2018-12-03 1540
872d26a391da92 Sagi Grimberg 2018-12-03 1541 static int nvmet_tcp_set_queue_sock(struct nvmet_tcp_queue *queue)
872d26a391da92 Sagi Grimberg 2018-12-03 1542 {
872d26a391da92 Sagi Grimberg 2018-12-03 1543 struct socket *sock = queue->sock;
89275a9659fe57 Israel Rukshin 2019-08-18 1544 struct inet_sock *inet = inet_sk(sock->sk);
872d26a391da92 Sagi Grimberg 2018-12-03 1545 int ret;
872d26a391da92 Sagi Grimberg 2018-12-03 1546
872d26a391da92 Sagi Grimberg 2018-12-03 1547 ret = kernel_getsockname(sock,
872d26a391da92 Sagi Grimberg 2018-12-03 1548 (struct sockaddr *)&queue->sockaddr);
872d26a391da92 Sagi Grimberg 2018-12-03 1549 if (ret < 0)
872d26a391da92 Sagi Grimberg 2018-12-03 1550 return ret;
872d26a391da92 Sagi Grimberg 2018-12-03 1551
872d26a391da92 Sagi Grimberg 2018-12-03 1552 ret = kernel_getpeername(sock,
872d26a391da92 Sagi Grimberg 2018-12-03 1553 (struct sockaddr *)&queue->sockaddr_peer);
872d26a391da92 Sagi Grimberg 2018-12-03 1554 if (ret < 0)
872d26a391da92 Sagi Grimberg 2018-12-03 1555 return ret;
872d26a391da92 Sagi Grimberg 2018-12-03 1556
872d26a391da92 Sagi Grimberg 2018-12-03 1557 /*
872d26a391da92 Sagi Grimberg 2018-12-03 1558 * Cleanup whatever is sitting in the TCP transmit queue on socket
872d26a391da92 Sagi Grimberg 2018-12-03 1559 * close. This is done to prevent stale data from being sent should
872d26a391da92 Sagi Grimberg 2018-12-03 1560 * the network connection be restored before TCP times out.
872d26a391da92 Sagi Grimberg 2018-12-03 1561 */
c433594c07457d Christoph Hellwig 2020-05-28 1562 sock_no_linger(sock->sk);
872d26a391da92 Sagi Grimberg 2018-12-03 1563
6e43496745e75a Christoph Hellwig 2020-05-28 1564 if (so_priority > 0)
6e43496745e75a Christoph Hellwig 2020-05-28 1565 sock_set_priority(sock->sk, so_priority);
43cc66892e81bb Wunderlich, Mark 2020-01-16 1566
89275a9659fe57 Israel Rukshin 2019-08-18 1567 /* Set socket type of service */
6ebf71bab9fb47 Christoph Hellwig 2020-05-28 1568 if (inet->rcv_tos > 0)
6ebf71bab9fb47 Christoph Hellwig 2020-05-28 1569 ip_sock_set_tos(sock->sk, inet->rcv_tos);
89275a9659fe57 Israel Rukshin 2019-08-18 1570
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1571 ret = 0;
872d26a391da92 Sagi Grimberg 2018-12-03 1572 write_lock_bh(&sock->sk->sk_callback_lock);
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1573 if (sock->sk->sk_state != TCP_ESTABLISHED) {
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1574 /*
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1575 * If the socket is already closing, don't even start
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1576 * consuming it
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1577 */
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1578 ret = -ENOTCONN;
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1579 } else {
872d26a391da92 Sagi Grimberg 2018-12-03 1580 sock->sk->sk_user_data = queue;
872d26a391da92 Sagi Grimberg 2018-12-03 @1581 queue->data_ready = sock->sk->sk_data_ready;
872d26a391da92 Sagi Grimberg 2018-12-03 1582 sock->sk->sk_data_ready = nvmet_tcp_data_ready;
872d26a391da92 Sagi Grimberg 2018-12-03 1583 queue->state_change = sock->sk->sk_state_change;
872d26a391da92 Sagi Grimberg 2018-12-03 1584 sock->sk->sk_state_change = nvmet_tcp_state_change;
872d26a391da92 Sagi Grimberg 2018-12-03 1585 queue->write_space = sock->sk->sk_write_space;
872d26a391da92 Sagi Grimberg 2018-12-03 1586 sock->sk->sk_write_space = nvmet_tcp_write_space;
d8e7b462f5b8b9 Wunderlich, Mark 2021-03-31 1587 if (idle_poll_period_usecs)
d8e7b462f5b8b9 Wunderlich, Mark 2021-03-31 1588 nvmet_tcp_arm_queue_deadline(queue);
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1589 queue_work_on(queue_cpu(queue), nvmet_tcp_wq, &queue->io_work);
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1590 }
872d26a391da92 Sagi Grimberg 2018-12-03 1591 write_unlock_bh(&sock->sk->sk_callback_lock);
872d26a391da92 Sagi Grimberg 2018-12-03 1592
0fbcfb089a3f2f Sagi Grimberg 2021-02-05 1593 return ret;
872d26a391da92 Sagi Grimberg 2018-12-03 1594 }
872d26a391da92 Sagi Grimberg 2018-12-03 1595
:::::: The code at line 1421 was first introduced by commit
:::::: 872d26a391da92ed8f0c0f5cb5fef428067b7f30 nvmet-tcp: add NVMe over TCP target driver
:::::: TO: Sagi Grimberg <sagi@lightbitslabs.com>
:::::: CC: Christoph Hellwig <hch@lst.de>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
reply other threads:[~2022-06-04 1:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202206040948.2LLrE18o-lkp@intel.com \
--to=lkp@intel.com \
--cc=cong.wang@bytedance.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@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.