All of lore.kernel.org
 help / color / mirror / Atom feed
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.