netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* re: virtio_net: support device stats
@ 2024-10-14  9:39 Colin King (gmail)
  2024-10-14  9:47 ` Michael S. Tsirkin
  0 siblings, 1 reply; 5+ messages in thread
From: Colin King (gmail) @ 2024-10-14  9:39 UTC (permalink / raw)
  To: Xuan Zhuo
  Cc: Jason Wang, Paolo Abeni, Michael S. Tsirkin",
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org

Hi,

Static analysis on Linux-next has detected a potential issue with the 
following commit:

commit 941168f8b40e50518a3bc6ce770a7062a5d99230
Author: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Date:   Fri Apr 26 11:39:24 2024 +0800

     virtio_net: support device stats


The issue is in function virtnet_stats_ctx_init, in 
drivers/net/virtio_net.c as follows:

         if (vi->device_stats_cap & VIRTIO_NET_STATS_TYPE_CVQ) {
                 queue_type = VIRTNET_Q_TYPE_CQ;

                 ctx->bitmap[queue_type]   |= VIRTIO_NET_STATS_TYPE_CVQ;
                 ctx->desc_num[queue_type] += 
ARRAY_SIZE(virtnet_stats_cvq_desc);
                 ctx->size[queue_type]     += sizeof(struct 
virtio_net_stats_cvq);
         }


ctx->bitmap is declared as a u32 however it is being bit-wise or'd with 
VIRTIO_NET_STATS_TYPE_CVQ and this is defined as 1 << 32:

include/uapi/linux/virtio_net.h:#define VIRTIO_NET_STATS_TYPE_CVQ 
(1ULL << 32)

..and hence the bit-wise or operation won't set any bits in ctx->bitmap 
because 1ULL < 32 is too wide for a u32. I suspect ctx->bitmap should be 
declared as u64.

Colin





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-10-18  7:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-14  9:39 virtio_net: support device stats Colin King (gmail)
2024-10-14  9:47 ` Michael S. Tsirkin
2024-10-14 10:14   ` Colin King (gmail)
2024-10-18  7:25     ` Jason Wang
2024-10-15  9:55   ` Xuan Zhuo

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).