netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Mina Almasry <almasrymina@google.com>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	kvm@vger.kernel.org, virtualization@lists.linux.dev
Cc: oe-kbuild-all@lists.linux.dev,
	"Mina Almasry" <almasrymina@google.com>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Stefano Garzarella" <sgarzare@redhat.com>,
	"David Howells" <dhowells@redhat.com>,
	"Jason Gunthorpe" <jgg@nvidia.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Shakeel Butt" <shakeelb@google.com>,
	"Yunsheng Lin" <linyunsheng@huawei.com>,
	"Willem de Bruijn" <willemdebruijn.kernel@gmail.com>
Subject: Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
Date: Sat, 23 Dec 2023 07:39:30 +0800	[thread overview]
Message-ID: <202312230739.g0Tfssdt-lkp@intel.com> (raw)
In-Reply-To: <20231220214505.2303297-4-almasrymina@google.com>

Hi Mina,

kernel test robot noticed the following build errors:

[auto build test ERROR on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Mina-Almasry/vsock-virtio-use-skb_frag_-helpers/20231222-164637
base:   net-next/main
patch link:    https://lore.kernel.org/r/20231220214505.2303297-4-almasrymina%40google.com
patch subject: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
config: i386-randconfig-141-20231222 (https://download.01.org/0day-ci/archive/20231223/202312230739.g0Tfssdt-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230739.g0Tfssdt-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312230739.g0Tfssdt-lkp@intel.com/

All errors (new ones prefixed by >>):

   net/kcm/kcmsock.c: In function 'kcm_write_msgs':
>> net/kcm/kcmsock.c:637:59: error: 'skb_frag_t' {aka 'struct skb_frag'} has no member named 'bv_len'
     637 |                         msize += skb_shinfo(skb)->frags[i].bv_len;
         |                                                           ^


vim +637 net/kcm/kcmsock.c

cd6e111bf5be5c Tom Herbert       2016-03-07  578  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  579  /* Write any messages ready on the kcm socket.  Called with kcm sock lock
ab7ac4eb9832e3 Tom Herbert       2016-03-07  580   * held.  Return bytes actually sent or error.
ab7ac4eb9832e3 Tom Herbert       2016-03-07  581   */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  582  static int kcm_write_msgs(struct kcm_sock *kcm)
ab7ac4eb9832e3 Tom Herbert       2016-03-07  583  {
c31a25e1db486f David Howells     2023-06-09  584  	unsigned int total_sent = 0;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  585  	struct sock *sk = &kcm->sk;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  586  	struct kcm_psock *psock;
c31a25e1db486f David Howells     2023-06-09  587  	struct sk_buff *head;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  588  	int ret = 0;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  589  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  590  	kcm->tx_wait_more = false;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  591  	psock = kcm->tx_psock;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  592  	if (unlikely(psock && psock->tx_stopped)) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  593  		/* A reserved psock was aborted asynchronously. Unreserve
ab7ac4eb9832e3 Tom Herbert       2016-03-07  594  		 * it and we'll retry the message.
ab7ac4eb9832e3 Tom Herbert       2016-03-07  595  		 */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  596  		unreserve_psock(kcm);
cd6e111bf5be5c Tom Herbert       2016-03-07  597  		kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  598  		if (skb_queue_empty(&sk->sk_write_queue))
ab7ac4eb9832e3 Tom Herbert       2016-03-07  599  			return 0;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  600  
c31a25e1db486f David Howells     2023-06-09  601  		kcm_tx_msg(skb_peek(&sk->sk_write_queue))->started_tx = false;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  602  	}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  603  
c31a25e1db486f David Howells     2023-06-09  604  retry:
c31a25e1db486f David Howells     2023-06-09  605  	while ((head = skb_peek(&sk->sk_write_queue))) {
c31a25e1db486f David Howells     2023-06-09  606  		struct msghdr msg = {
c31a25e1db486f David Howells     2023-06-09  607  			.msg_flags = MSG_DONTWAIT | MSG_SPLICE_PAGES,
c31a25e1db486f David Howells     2023-06-09  608  		};
c31a25e1db486f David Howells     2023-06-09  609  		struct kcm_tx_msg *txm = kcm_tx_msg(head);
c31a25e1db486f David Howells     2023-06-09  610  		struct sk_buff *skb;
c31a25e1db486f David Howells     2023-06-09  611  		unsigned int msize;
c31a25e1db486f David Howells     2023-06-09  612  		int i;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  613  
c31a25e1db486f David Howells     2023-06-09  614  		if (!txm->started_tx) {
c31a25e1db486f David Howells     2023-06-09  615  			psock = reserve_psock(kcm);
c31a25e1db486f David Howells     2023-06-09  616  			if (!psock)
c31a25e1db486f David Howells     2023-06-09  617  				goto out;
c31a25e1db486f David Howells     2023-06-09  618  			skb = head;
c31a25e1db486f David Howells     2023-06-09  619  			txm->frag_offset = 0;
c31a25e1db486f David Howells     2023-06-09  620  			txm->sent = 0;
c31a25e1db486f David Howells     2023-06-09  621  			txm->started_tx = true;
c31a25e1db486f David Howells     2023-06-09  622  		} else {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  623  			if (WARN_ON(!psock)) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  624  				ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  625  				goto out;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  626  			}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  627  			skb = txm->frag_skb;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  628  		}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  629  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  630  		if (WARN_ON(!skb_shinfo(skb)->nr_frags)) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  631  			ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  632  			goto out;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  633  		}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  634  
c31a25e1db486f David Howells     2023-06-09  635  		msize = 0;
c31a25e1db486f David Howells     2023-06-09  636  		for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
c31a25e1db486f David Howells     2023-06-09 @637  			msize += skb_shinfo(skb)->frags[i].bv_len;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  638  
b2e5852793b6eb Mina Almasry      2023-12-20  639  		/* The cast to struct bio_vec* here assumes the frags are
b2e5852793b6eb Mina Almasry      2023-12-20  640  		 * struct page based. WARN if there is no page in this skb.
b2e5852793b6eb Mina Almasry      2023-12-20  641  		 */
b2e5852793b6eb Mina Almasry      2023-12-20  642  		DEBUG_NET_WARN_ON_ONCE(
b2e5852793b6eb Mina Almasry      2023-12-20  643  			!skb_frag_page(&skb_shinfo(skb)->frags[0]));
b2e5852793b6eb Mina Almasry      2023-12-20  644  
c31a25e1db486f David Howells     2023-06-09  645  		iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
b2e5852793b6eb Mina Almasry      2023-12-20  646  			      (const struct bio_vec *)skb_shinfo(skb)->frags,
b2e5852793b6eb Mina Almasry      2023-12-20  647  			      skb_shinfo(skb)->nr_frags, msize);
c31a25e1db486f David Howells     2023-06-09  648  		iov_iter_advance(&msg.msg_iter, txm->frag_offset);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  649  
c31a25e1db486f David Howells     2023-06-09  650  		do {
264ba53fac79b0 David Howells     2023-06-09  651  			ret = sock_sendmsg(psock->sk->sk_socket, &msg);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  652  			if (ret <= 0) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  653  				if (ret == -EAGAIN) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  654  					/* Save state to try again when there's
ab7ac4eb9832e3 Tom Herbert       2016-03-07  655  					 * write space on the socket
ab7ac4eb9832e3 Tom Herbert       2016-03-07  656  					 */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  657  					txm->frag_skb = skb;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  658  					ret = 0;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  659  					goto out;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  660  				}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  661  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  662  				/* Hard failure in sending message, abort this
ab7ac4eb9832e3 Tom Herbert       2016-03-07  663  				 * psock since it has lost framing
71a2fae50895b3 Bhaskar Chowdhury 2021-03-27  664  				 * synchronization and retry sending the
ab7ac4eb9832e3 Tom Herbert       2016-03-07  665  				 * message from the beginning.
ab7ac4eb9832e3 Tom Herbert       2016-03-07  666  				 */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  667  				kcm_abort_tx_psock(psock, ret ? -ret : EPIPE,
ab7ac4eb9832e3 Tom Herbert       2016-03-07  668  						   true);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  669  				unreserve_psock(kcm);
9f8d0dc0ec4a4b David Howells     2023-06-15  670  				psock = NULL;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  671  
c31a25e1db486f David Howells     2023-06-09  672  				txm->started_tx = false;
cd6e111bf5be5c Tom Herbert       2016-03-07  673  				kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  674  				ret = 0;
c31a25e1db486f David Howells     2023-06-09  675  				goto retry;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  676  			}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  677  
c31a25e1db486f David Howells     2023-06-09  678  			txm->sent += ret;
c31a25e1db486f David Howells     2023-06-09  679  			txm->frag_offset += ret;
cd6e111bf5be5c Tom Herbert       2016-03-07  680  			KCM_STATS_ADD(psock->stats.tx_bytes, ret);
c31a25e1db486f David Howells     2023-06-09  681  		} while (msg.msg_iter.count > 0);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  682  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  683  		if (skb == head) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  684  			if (skb_has_frag_list(skb)) {
c31a25e1db486f David Howells     2023-06-09  685  				txm->frag_skb = skb_shinfo(skb)->frag_list;
c31a25e1db486f David Howells     2023-06-09  686  				txm->frag_offset = 0;
c31a25e1db486f David Howells     2023-06-09  687  				continue;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  688  			}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  689  		} else if (skb->next) {
c31a25e1db486f David Howells     2023-06-09  690  			txm->frag_skb = skb->next;
c31a25e1db486f David Howells     2023-06-09  691  			txm->frag_offset = 0;
c31a25e1db486f David Howells     2023-06-09  692  			continue;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  693  		}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  694  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  695  		/* Successfully sent the whole packet, account for it. */
c31a25e1db486f David Howells     2023-06-09  696  		sk->sk_wmem_queued -= txm->sent;
c31a25e1db486f David Howells     2023-06-09  697  		total_sent += txm->sent;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  698  		skb_dequeue(&sk->sk_write_queue);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  699  		kfree_skb(head);
cd6e111bf5be5c Tom Herbert       2016-03-07  700  		KCM_STATS_INCR(psock->stats.tx_msgs);
c31a25e1db486f David Howells     2023-06-09  701  	}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  702  out:
ab7ac4eb9832e3 Tom Herbert       2016-03-07  703  	if (!head) {
ab7ac4eb9832e3 Tom Herbert       2016-03-07  704  		/* Done with all queued messages. */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  705  		WARN_ON(!skb_queue_empty(&sk->sk_write_queue));
9f8d0dc0ec4a4b David Howells     2023-06-15  706  		if (psock)
ab7ac4eb9832e3 Tom Herbert       2016-03-07  707  			unreserve_psock(kcm);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  708  	}
ab7ac4eb9832e3 Tom Herbert       2016-03-07  709  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  710  	/* Check if write space is available */
ab7ac4eb9832e3 Tom Herbert       2016-03-07  711  	sk->sk_write_space(sk);
ab7ac4eb9832e3 Tom Herbert       2016-03-07  712  
ab7ac4eb9832e3 Tom Herbert       2016-03-07  713  	return total_sent ? : ret;
ab7ac4eb9832e3 Tom Herbert       2016-03-07  714  }
ab7ac4eb9832e3 Tom Herbert       2016-03-07  715  

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

  parent reply	other threads:[~2023-12-22 23:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-20 21:44 [PATCH net-next v3 0/3] Abstract page from net stack Mina Almasry
2023-12-20 21:45 ` [PATCH net-next v3 1/3] vsock/virtio: use skb_frag_*() helpers Mina Almasry
2023-12-21 17:17   ` Willem de Bruijn
2023-12-21 21:39   ` Shakeel Butt
2024-01-02 10:00   ` Stefano Garzarella
2023-12-20 21:45 ` [PATCH net-next v3 2/3] net: introduce abstraction for network memory Mina Almasry
2023-12-21 23:23   ` Shakeel Butt
2023-12-21 23:44     ` Mina Almasry
2024-01-04 21:44       ` Jakub Kicinski
2024-01-04 22:15         ` Mina Almasry
2024-01-10 17:50         ` Shakeel Butt
2024-01-11  1:35           ` Jakub Kicinski
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
2023-12-21 17:16   ` Simon Horman
2023-12-21 17:18   ` Willem de Bruijn
2023-12-21 23:27   ` Shakeel Butt
2023-12-22 20:10   ` kernel test robot
2023-12-22 23:39   ` kernel test robot [this message]
2023-12-23 11:16   ` kernel test robot

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=202312230739.g0Tfssdt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=almasrymina@google.com \
    --cc=christian.koenig@amd.com \
    --cc=dhowells@redhat.com \
    --cc=edumazet@google.com \
    --cc=jgg@nvidia.com \
    --cc=kuba@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linyunsheng@huawei.com \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pabeni@redhat.com \
    --cc=sgarzare@redhat.com \
    --cc=shakeelb@google.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux.dev \
    --cc=willemdebruijn.kernel@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).