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-...@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-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202312230739.g0tfssdt-...@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

Reply via email to