lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202508021646.pWqgToeU-lkp@intel.com>
Date: Sat, 2 Aug 2025 16:35:21 +0800
From: kernel test robot <lkp@...el.com>
To: David Hill <dhill@...hat.com>, netdev@...r.kernel.org
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
	anthony.l.nguyen@...el.com, przemyslaw.kitszel@...el.com,
	andrew+netdev@...n.ch, davem@...emloft.net, edumazet@...gle.com,
	kuba@...nel.org, pabeni@...hat.com, David Hill <dhill@...hat.com>
Subject: Re: [PATCH] PATCH: i40e Improve trusted VF MAC addresses logging
 when limit is reached

Hi David,

kernel test robot noticed the following build errors:

[auto build test ERROR on tnguy-next-queue/dev-queue]
[also build test ERROR on tnguy-net-queue/dev-queue horms-ipvs/master linus/master v6.16 next-20250801]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/David-Hill/PATCH-i40e-Improve-trusted-VF-MAC-addresses-logging-when-limit-is-reached/20250801-213326
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git dev-queue
patch link:    https://lore.kernel.org/r/20250801133017.2107083-1-dhill%40redhat.com
patch subject: [PATCH] PATCH: i40e Improve trusted VF MAC addresses logging when limit is reached
config: x86_64-buildonly-randconfig-003-20250802 (https://download.01.org/0day-ci/archive/20250802/202508021646.pWqgToeU-lkp@intel.com/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/20250802/202508021646.pWqgToeU-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508021646.pWqgToeU-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c:2957:77: error: use of undeclared identifier 'num_ports'
    2957 |           mac2add_cnt, I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs,num_ports)));
         |                                                                             ^
>> drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c:2957:77: error: use of undeclared identifier 'num_ports'
>> drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c:2957:88: error: extraneous ')' before ';'
    2957 |           mac2add_cnt, I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs,num_ports)));
         |                                                                                        ^
   3 errors generated.


vim +/num_ports +2957 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

  2870	
  2871	#define I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(vf_num, num_ports)		\
  2872	({	typeof(vf_num) vf_num_ = (vf_num);				\
  2873		typeof(num_ports) num_ports_ = (num_ports);			\
  2874		((I40E_MAX_MACVLAN_PER_PF(num_ports_) - vf_num_ *		\
  2875		I40E_VC_MAX_MAC_ADDR_PER_VF) / vf_num_) +			\
  2876		I40E_VC_MAX_MAC_ADDR_PER_VF; })
  2877	/**
  2878	 * i40e_check_vf_permission
  2879	 * @vf: pointer to the VF info
  2880	 * @al: MAC address list from virtchnl
  2881	 *
  2882	 * Check that the given list of MAC addresses is allowed. Will return -EPERM
  2883	 * if any address in the list is not valid. Checks the following conditions:
  2884	 *
  2885	 * 1) broadcast and zero addresses are never valid
  2886	 * 2) unicast addresses are not allowed if the VMM has administratively set
  2887	 *    the VF MAC address, unless the VF is marked as privileged.
  2888	 * 3) There is enough space to add all the addresses.
  2889	 *
  2890	 * Note that to guarantee consistency, it is expected this function be called
  2891	 * while holding the mac_filter_hash_lock, as otherwise the current number of
  2892	 * addresses might not be accurate.
  2893	 **/
  2894	static inline int i40e_check_vf_permission(struct i40e_vf *vf,
  2895						   struct virtchnl_ether_addr_list *al)
  2896	{
  2897		struct i40e_pf *pf = vf->pf;
  2898		struct i40e_vsi *vsi = pf->vsi[vf->lan_vsi_idx];
  2899		struct i40e_hw *hw = &pf->hw;
  2900		int mac2add_cnt = 0;
  2901		int i;
  2902	
  2903		for (i = 0; i < al->num_elements; i++) {
  2904			struct i40e_mac_filter *f;
  2905			u8 *addr = al->list[i].addr;
  2906	
  2907			if (is_broadcast_ether_addr(addr) ||
  2908			    is_zero_ether_addr(addr)) {
  2909				dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n",
  2910					addr);
  2911				return -EINVAL;
  2912			}
  2913	
  2914			/* If the host VMM administrator has set the VF MAC address
  2915			 * administratively via the ndo_set_vf_mac command then deny
  2916			 * permission to the VF to add or delete unicast MAC addresses.
  2917			 * Unless the VF is privileged and then it can do whatever.
  2918			 * The VF may request to set the MAC address filter already
  2919			 * assigned to it so do not return an error in that case.
  2920			 */
  2921			if (!i40e_can_vf_change_mac(vf) &&
  2922			    !is_multicast_ether_addr(addr) &&
  2923			    !ether_addr_equal(addr, vf->default_lan_addr.addr)) {
  2924				dev_err(&pf->pdev->dev,
  2925					"VF attempting to override administratively set MAC address, bring down and up the VF interface to resume normal operation\n");
  2926				return -EPERM;
  2927			}
  2928	
  2929			/*count filters that really will be added*/
  2930			f = i40e_find_mac(vsi, addr);
  2931			if (!f)
  2932				++mac2add_cnt;
  2933		}
  2934	
  2935		/* If this VF is not privileged, then we can't add more than a limited
  2936		 * number of addresses. Check to make sure that the additions do not
  2937		 * push us over the limit.
  2938		 */
  2939		if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) {
  2940			if ((i40e_count_filters(vsi) + mac2add_cnt) >
  2941			    I40E_VC_MAX_MAC_ADDR_PER_VF) {
  2942				dev_err(&pf->pdev->dev,
  2943					"Cannot add more MAC addresses, VF is not trusted, switch the VF to trusted to add more functionality\n");
  2944				return -EPERM;
  2945			}
  2946		/* If this VF is trusted, it can use more resources than untrusted.
  2947		 * However to ensure that every trusted VF has appropriate number of
  2948		 * resources, divide whole pool of resources per port and then across
  2949		 * all VFs.
  2950		 */
  2951		} else {
  2952			if ((i40e_count_filters(vsi) + mac2add_cnt) >
  2953			    I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs,
  2954							       hw->num_ports)) {
  2955				dev_err(&pf->pdev->dev,
  2956					"Cannot add more MAC addresses, trusted VF %d uses %d out of %d MAC addresses\n", vf->vf_id, i40e_count_filters(vsi) +
> 2957	          mac2add_cnt, I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs,num_ports)));
  2958				return -EPERM;
  2959			}
  2960		}
  2961		return 0;
  2962	}
  2963	

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ