Hi Willem,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on ipvs/master]
[also build test WARNING on linus/master v5.11-rc6 next-20210125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Willem-de-Bruijn/virtio-net-add-tx-hash-rx-tstamp-and-tx-tstamp/20201229-002604
base:   https://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git master
config: x86_64-randconfig-s021-20201228 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-215-g0fb77bb6-dirty
        # 
https://github.com/0day-ci/linux/commit/be9cab7692382c7886333b498d1d8adbba1881f7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Willem-de-Bruijn/virtio-net-add-tx-hash-rx-tstamp-and-tx-tstamp/20201229-002604
        git checkout be9cab7692382c7886333b498d1d8adbba1881f7
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>


"sparse warnings: (new ones prefixed by >>)"
   drivers/net/virtio_net.c:1099:80: sparse: sparse: incorrect type in argument 
1 (different base types) @@     expected unsigned long long [usertype] ns @@    
 got restricted __virtio64 [usertype] tstamp @@
   drivers/net/virtio_net.c:1099:80: sparse:     expected unsigned long long 
[usertype] ns
   drivers/net/virtio_net.c:1099:80: sparse:     got restricted __virtio64 
[usertype] tstamp
>> drivers/net/virtio_net.c:1583:33: sparse: sparse: incorrect type in 
>> assignment (different base types) @@     expected restricted __le32 
>> [usertype] value @@     got restricted __virtio32 @@
   drivers/net/virtio_net.c:1583:33: sparse:     expected restricted __le32 
[usertype] value
   drivers/net/virtio_net.c:1583:33: sparse:     got restricted __virtio32
>> drivers/net/virtio_net.c:1584:34: sparse: sparse: incorrect type in 
>> assignment (different base types) @@     expected restricted __le16 
>> [usertype] report @@     got int @@
   drivers/net/virtio_net.c:1584:34: sparse:     expected restricted __le16 
[usertype] report
   drivers/net/virtio_net.c:1584:34: sparse:     got int

vim +1583 drivers/net/virtio_net.c

  1550  
  1551  static int xmit_skb(struct send_queue *sq, struct sk_buff *skb)
  1552  {
  1553          struct virtio_net_hdr_mrg_rxbuf *hdr;
  1554          const unsigned char *dest = ((struct ethhdr 
*)skb->data)->h_dest;
  1555          struct virtnet_info *vi = sq->vq->vdev->priv;
  1556          struct virtio_net_hdr_v12 *h12;
  1557          int num_sg;
  1558          unsigned hdr_len = vi->hdr_len;
  1559          bool can_push;
  1560  
  1561          pr_debug("%s: xmit %p %pM\n", vi->dev->name, skb, dest);
  1562  
  1563          can_push = vi->any_header_sg &&
  1564                  !((unsigned long)skb->data & (__alignof__(*hdr) - 1)) &&
  1565                  !skb_header_cloned(skb) && skb_headroom(skb) >= hdr_len;
  1566          /* Even if we can, don't push here yet as this would skew
  1567           * csum_start offset below. */
  1568          if (can_push)
  1569                  hdr = (struct virtio_net_hdr_mrg_rxbuf *)(skb->data - 
hdr_len);
  1570          else
  1571                  hdr = skb_vnet_hdr(skb);
  1572  
  1573          if (virtio_net_hdr_from_skb(skb, &hdr->hdr,
  1574                                      virtio_is_little_endian(vi->vdev), 
false,
  1575                                      0))
  1576                  BUG();
  1577  
  1578          if (vi->mergeable_rx_bufs)
  1579                  hdr->num_buffers = 0;
  1580  
  1581          h12 = (void *)hdr;
  1582          if (vi->has_tx_hash) {
> 1583                  h12->hash.value = cpu_to_virtio32(vi->vdev, skb->hash);
> 1584                  h12->hash.report = skb->l4_hash ? 
> VIRTIO_NET_HASH_REPORT_L4 :
  1585                                                    
VIRTIO_NET_HASH_REPORT_OTHER;
  1586                  h12->hash.flow_state = VIRTIO_NET_HASH_STATE_DEFAULT;
  1587          }
  1588          if (vi->has_tx_tstamp)
  1589                  h12->tstamp = cpu_to_virtio64(vi->vdev, skb->tstamp);
  1590  
  1591          sg_init_table(sq->sg, skb_shinfo(skb)->nr_frags + (can_push ? 1 
: 2));
  1592          if (can_push) {
  1593                  __skb_push(skb, hdr_len);
  1594                  num_sg = skb_to_sgvec(skb, sq->sg, 0, skb->len);
  1595                  if (unlikely(num_sg < 0))
  1596                          return num_sg;
  1597                  /* Pull header back to avoid skew in tx bytes 
calculations. */
  1598                  __skb_pull(skb, hdr_len);
  1599          } else {
  1600                  sg_set_buf(sq->sg, hdr, hdr_len);
  1601                  num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len);
  1602                  if (unlikely(num_sg < 0))
  1603                          return num_sg;
  1604                  num_sg++;
  1605          }
  1606          return virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, skb, 
GFP_ATOMIC);
  1607  }
  1608  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to