drivers/net/dsa/mxl862xx/mxl862xx.c:942 mxl862xx_vf_del_vid() warn: iterator used outside loop: 'last_ve'
kernel test robot <[email protected]> Sat, 25 Jul 2026 23:36:40 +0800
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <[email protected]> |
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Daniel Golle <[email protected]> CC: Jakub Kicinski <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 48a5a7ab8d6ab7090564339e039c421f315de912 commit: d587f9b6dcc98c1e8aeb5c189a7bfac60d6d29ac net: dsa: mxl862xx: implement VLAN functionality date: 4 months ago :::::: branch date: 2 days ago :::::: commit date: 4 months ago config: sparc-randconfig-r073-20260725 (https://download.01.org/0day-ci/archive/20260725/[email protected]/config) compiler: sparc64-linux-gcc (GCC) 13.4.0 smatch: v0.5.0-9187-g5189e3fb 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 | Fixes: d587f9b6dcc9 ("net: dsa: mxl862xx: implement VLAN functionality") | Reported-by: kernel test robot <[email protected]> | Reported-by: Dan Carpenter <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ smatch warnings: drivers/net/dsa/mxl862xx/mxl862xx.c:942 mxl862xx_vf_del_vid() warn: iterator used outside loop: 'last_ve' vim +/last_ve +942 drivers/net/dsa/mxl862xx/mxl862xx.c d587f9b6dcc98c1 Daniel Golle 2026-04-07 904 d587f9b6dcc98c1 Daniel Golle 2026-04-07 905 static int mxl862xx_vf_del_vid(struct mxl862xx_priv *priv, d587f9b6dcc98c1 Daniel Golle 2026-04-07 906 struct mxl862xx_vf_block *vf, u16 vid) d587f9b6dcc98c1 Daniel Golle 2026-04-07 907 { d587f9b6dcc98c1 Daniel Golle 2026-04-07 908 struct mxl862xx_vf_vid *ve, *last_ve; d587f9b6dcc98c1 Daniel Golle 2026-04-07 909 u16 gap, last; d587f9b6dcc98c1 Daniel Golle 2026-04-07 910 int ret; d587f9b6dcc98c1 Daniel Golle 2026-04-07 911 d587f9b6dcc98c1 Daniel Golle 2026-04-07 912 ve = mxl862xx_vf_find_vid(vf, vid); d587f9b6dcc98c1 Daniel Golle 2026-04-07 913 if (!ve) d587f9b6dcc98c1 Daniel Golle 2026-04-07 914 return 0; d587f9b6dcc98c1 Daniel Golle 2026-04-07 915 d587f9b6dcc98c1 Daniel Golle 2026-04-07 916 if (!vf->allocated) { d587f9b6dcc98c1 Daniel Golle 2026-04-07 917 /* Software-only state -- just remove the tracking entry */ d587f9b6dcc98c1 Daniel Golle 2026-04-07 918 list_del(&ve->list); d587f9b6dcc98c1 Daniel Golle 2026-04-07 919 kfree(ve); d587f9b6dcc98c1 Daniel Golle 2026-04-07 920 vf->active_count--; d587f9b6dcc98c1 Daniel Golle 2026-04-07 921 return 0; d587f9b6dcc98c1 Daniel Golle 2026-04-07 922 } d587f9b6dcc98c1 Daniel Golle 2026-04-07 923 d587f9b6dcc98c1 Daniel Golle 2026-04-07 924 gap = ve->index; d587f9b6dcc98c1 Daniel Golle 2026-04-07 925 last = vf->active_count - 1; d587f9b6dcc98c1 Daniel Golle 2026-04-07 926 d587f9b6dcc98c1 Daniel Golle 2026-04-07 927 if (vf->active_count == 1) { d587f9b6dcc98c1 Daniel Golle 2026-04-07 928 /* Last VID -- restore DISCARD sentinel at index 0 */ d587f9b6dcc98c1 Daniel Golle 2026-04-07 929 ret = mxl862xx_vf_entry_discard(priv, vf->block_id, 0); d587f9b6dcc98c1 Daniel Golle 2026-04-07 930 if (ret) d587f9b6dcc98c1 Daniel Golle 2026-04-07 931 return ret; d587f9b6dcc98c1 Daniel Golle 2026-04-07 932 } else if (gap < last) { d587f9b6dcc98c1 Daniel Golle 2026-04-07 933 /* Swap: move the last ALLOW entry into the gap */ d587f9b6dcc98c1 Daniel Golle 2026-04-07 934 list_for_each_entry(last_ve, &vf->vids, list) d587f9b6dcc98c1 Daniel Golle 2026-04-07 935 if (last_ve->index == last) d587f9b6dcc98c1 Daniel Golle 2026-04-07 936 break; d587f9b6dcc98c1 Daniel Golle 2026-04-07 937 d587f9b6dcc98c1 Daniel Golle 2026-04-07 938 if (WARN_ON(list_entry_is_head(last_ve, &vf->vids, list))) d587f9b6dcc98c1 Daniel Golle 2026-04-07 939 return -EINVAL; d587f9b6dcc98c1 Daniel Golle 2026-04-07 940 d587f9b6dcc98c1 Daniel Golle 2026-04-07 941 ret = mxl862xx_vf_entry_set(priv, vf->block_id, d587f9b6dcc98c1 Daniel Golle 2026-04-07 @942 gap, last_ve->vid); d587f9b6dcc98c1 Daniel Golle 2026-04-07 943 if (ret) d587f9b6dcc98c1 Daniel Golle 2026-04-07 944 return ret; d587f9b6dcc98c1 Daniel Golle 2026-04-07 945 d587f9b6dcc98c1 Daniel Golle 2026-04-07 946 last_ve->index = gap; d587f9b6dcc98c1 Daniel Golle 2026-04-07 947 } d587f9b6dcc98c1 Daniel Golle 2026-04-07 948 d587f9b6dcc98c1 Daniel Golle 2026-04-07 949 list_del(&ve->list); d587f9b6dcc98c1 Daniel Golle 2026-04-07 950 kfree(ve); d587f9b6dcc98c1 Daniel Golle 2026-04-07 951 vf->active_count--; d587f9b6dcc98c1 Daniel Golle 2026-04-07 952 d587f9b6dcc98c1 Daniel Golle 2026-04-07 953 return 0; d587f9b6dcc98c1 Daniel Golle 2026-04-07 954 } d587f9b6dcc98c1 Daniel Golle 2026-04-07 955 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki