Re: [PATCH net-next 05/11] virtio_net: Create a FF group for ethtool steering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


(追記) (追記ここまで)



Hi Daniel,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Daniel-Jurgens/virtio-pci-Expose-generic-device-capability-operations/20250828-024128
base: net-next/main
patch link: https://lore.kernel.org/r/20250827183852.2471-6-danielj%40nvidia.com
patch subject: [PATCH net-next 05/11] virtio_net: Create a FF group for ethtool steering
config: x86_64-randconfig-121-20250828 (https://download.01.org/0day-ci/archive/20250829/202508290458.9QTyiC0K-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250829/202508290458.9QTyiC0K-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508290458.9QTyiC0K-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
 drivers/net/virtio_net/virtio_net_ff.c: note: in included file (through include/linux/virtio_admin.h):
 include/uapi/linux/virtio_net_ff.h:45:48: sparse: sparse: array of flexible structures
>> drivers/net/virtio_net/virtio_net_ff.c:99:13: sparse: sparse: restricted __le32 degrades to integer
>> drivers/net/virtio_net/virtio_net_ff.c:99:13: sparse: sparse: cast to restricted __le32
>> drivers/net/virtio_net/virtio_net_ff.c:103:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] groups_limit @@ got int @@
 drivers/net/virtio_net/virtio_net_ff.c:103:35: sparse: expected restricted __le32 [usertype] groups_limit
 drivers/net/virtio_net/virtio_net_ff.c:103:35: sparse: got int
vim +99 drivers/net/virtio_net/virtio_net_ff.c
 29	
 30	void virtnet_ff_init(struct virtnet_ff *ff, struct virtio_device *vdev)
 31	{
 32		struct virtio_admin_cmd_query_cap_id_result *cap_id_list __free(kfree) = NULL;
 33		size_t ff_mask_size = sizeof(struct virtio_net_ff_cap_mask_data) +
 34				 sizeof(struct virtio_net_ff_selector) *
 35				 VIRTIO_NET_FF_MASK_TYPE_MAX;
 36		struct virtio_net_resource_obj_ff_group ethtool_group = {};
 37		struct virtio_net_ff_selector *sel;
 38		int err;
 39		int i;
 40	
 41		cap_id_list = kzalloc(sizeof(*cap_id_list), GFP_KERNEL);
 42		if (!cap_id_list)
 43			return;
 44	
 45		err = virtio_device_cap_id_list_query(vdev, cap_id_list);
 46		if (err)
 47			return;
 48	
 49		if (!(VIRTIO_CAP_IN_LIST(cap_id_list,
 50					 VIRTIO_NET_FF_RESOURCE_CAP) &&
 51		 VIRTIO_CAP_IN_LIST(cap_id_list,
 52					 VIRTIO_NET_FF_SELECTOR_CAP) &&
 53		 VIRTIO_CAP_IN_LIST(cap_id_list,
 54					 VIRTIO_NET_FF_ACTION_CAP)))
 55			return;
 56	
 57		ff->ff_caps = kzalloc(sizeof(*ff->ff_caps), GFP_KERNEL);
 58		if (!ff->ff_caps)
 59			return;
 60	
 61		err = virtio_device_cap_get(vdev,
 62					 VIRTIO_NET_FF_RESOURCE_CAP,
 63					 ff->ff_caps,
 64					 sizeof(*ff->ff_caps));
 65	
 66		if (err)
 67			goto err_ff;
 68	
 69		/* VIRTIO_NET_FF_MASK_TYPE start at 1 */
 70		for (i = 1; i <= VIRTIO_NET_FF_MASK_TYPE_MAX; i++)
 71			ff_mask_size += get_mask_size(i);
 72	
 73		ff->ff_mask = kzalloc(ff_mask_size, GFP_KERNEL);
 74		if (!ff->ff_mask)
 75			goto err_ff;
 76	
 77		err = virtio_device_cap_get(vdev,
 78					 VIRTIO_NET_FF_SELECTOR_CAP,
 79					 ff->ff_mask,
 80					 ff_mask_size);
 81	
 82		if (err)
 83			goto err_ff_mask;
 84	
 85		ff->ff_actions = kzalloc(sizeof(*ff->ff_actions) +
 86						VIRTIO_NET_FF_ACTION_MAX,
 87						GFP_KERNEL);
 88		if (!ff->ff_actions)
 89			goto err_ff_mask;
 90	
 91		err = virtio_device_cap_get(vdev,
 92					 VIRTIO_NET_FF_ACTION_CAP,
 93					 ff->ff_actions,
 94					 sizeof(*ff->ff_actions) + VIRTIO_NET_FF_ACTION_MAX);
 95	
 96		if (err)
 97			goto err_ff_action;
 98	
 > 99		if (le32_to_cpu(ff->ff_caps->groups_limit < VIRTNET_FF_MAX_GROUPS)) {
 100			err = -ENOSPC;
 101			goto err_ff_action;
 102		}
 > 103		ff->ff_caps->groups_limit = VIRTNET_FF_MAX_GROUPS;
 104	
 105		err = virtio_device_cap_set(vdev,
 106					 VIRTIO_NET_FF_RESOURCE_CAP,
 107					 ff->ff_caps,
 108					 sizeof(*ff->ff_caps));
 109		if (err)
 110			goto err_ff_action;
 111	
 112		ff_mask_size = sizeof(struct virtio_net_ff_cap_mask_data);
 113		sel = &ff->ff_mask->selectors[0];
 114	
 115		for (int i = 0; i < ff->ff_mask->count; i++) {
 116			ff_mask_size += sizeof(struct virtio_net_ff_selector) + sel->length;
 117			sel = (struct virtio_net_ff_selector *)((u8 *)sel + sizeof(*sel) + sel->length);
 118		}
 119	
 120		err = virtio_device_cap_set(vdev,
 121					 VIRTIO_NET_FF_SELECTOR_CAP,
 122					 ff->ff_mask,
 123					 ff_mask_size);
 124		if (err)
 125			goto err_ff_action;
 126	
 127		err = virtio_device_cap_set(vdev,
 128					 VIRTIO_NET_FF_ACTION_CAP,
 129					 ff->ff_actions,
 130					 sizeof(*ff->ff_actions) + VIRTIO_NET_FF_ACTION_MAX);
 131		if (err)
 132			goto err_ff_action;
 133	
 134		ethtool_group.group_priority = cpu_to_le16(VIRTNET_FF_ETHTOOL_GROUP_PRIORITY);
 135	
 136		/* Use priority for the object ID. */
 137		err = virtio_device_object_create(vdev,
 138						 VIRTIO_NET_RESOURCE_OBJ_FF_GROUP,
 139						 VIRTNET_FF_ETHTOOL_GROUP_PRIORITY,
 140						 &ethtool_group,
 141						 sizeof(ethtool_group));
 142		if (err)
 143			goto err_ff_action;
 144	
 145		ff->vdev = vdev;
 146		ff->ff_supported = true;
 147	
 148		return;
 149	
 150	err_ff_action:
 151		kfree(ff->ff_actions);
 152	err_ff_mask:
 153		kfree(ff->ff_mask);
 154	err_ff:
 155		kfree(ff->ff_caps);
 156	}
 157	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

[Index of Archives] [KVM Development] [Libvirt Development] [Libvirt Users] [CentOS Virtualization] [Netdev] [Ethernet Bridging] [Linux Wireless] [Kernel Newbies] [Security] [Linux for Hams] [Netfilter] [Bugtraq] [Yosemite Forum] [MIPS Linux] [ARM Linux] [Linux RAID] [Linux Admin] [Samba]

(追記) (追記ここまで)
Powered by Linux

AltStyle によって変換されたページ (->オリジナル) /