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: <202511192205.7ZRQgwZI-lkp@intel.com>
Date: Wed, 19 Nov 2025 22:49:58 +0800
From: kernel test robot <lkp@...el.com>
To: Ranganath V N <vnranganath.20@...il.com>, johannes@...solutions.net,
	dave.taht@...ferbloat.net, linville@...driver.com
Cc: oe-kbuild-all@...ts.linux.dev, linux-wireless@...r.kernel.org,
	linux-kernel@...r.kernel.org, skhan@...uxfoundation.org,
	david.hunter.linux@...il.com, khalid@...nel.org,
	Ranganath V N <vnranganath.20@...il.com>,
	syzbot+878ddc3962f792e9af59@...kaller.appspotmail.com
Subject: Re: [PATCH v3] wifi: cfg80211: Fix uninitialized header access in
 cfg80211_classify8021d

Hi Ranganath,

kernel test robot noticed the following build errors:

[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.18-rc6 next-20251119]
[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/Ranganath-V-N/wifi-cfg80211-Fix-uninitialized-header-access-in-cfg80211_classify8021d/20251118-231316
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link:    https://lore.kernel.org/r/20251118150524.7973-1-vnranganath.20%40gmail.com
patch subject: [PATCH v3] wifi: cfg80211: Fix uninitialized header access in cfg80211_classify8021d
config: arm64-randconfig-r132-20251119 (https://download.01.org/0day-ci/archive/20251119/202511192205.7ZRQgwZI-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251119/202511192205.7ZRQgwZI-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/202511192205.7ZRQgwZI-lkp@intel.com/

All errors (new ones prefixed by >>):

   net/wireless/util.c: In function 'cfg80211_classify8021d':
>> net/wireless/util.c:966:3: error: a label can only be part of a statement and a declaration is not a statement
      struct iphdr iph, *ip;
      ^~~~~~
   net/wireless/util.c:976:3: error: a label can only be part of a statement and a declaration is not a statement
      struct ipv6hdr ip6h, *ip6;
      ^~~~~~


vim +966 net/wireless/util.c

   936	
   937	/* Given a data frame determine the 802.1p/1d tag to use. */
   938	unsigned int cfg80211_classify8021d(struct sk_buff *skb,
   939					    struct cfg80211_qos_map *qos_map)
   940	{
   941		unsigned int dscp;
   942		unsigned char vlan_priority;
   943		unsigned int ret;
   944	
   945		/* skb->priority values from 256->263 are magic values to
   946		 * directly indicate a specific 802.1d priority.  This is used
   947		 * to allow 802.1d priority to be passed directly in from VLAN
   948		 * tags, etc.
   949		 */
   950		if (skb->priority >= 256 && skb->priority <= 263) {
   951			ret = skb->priority - 256;
   952			goto out;
   953		}
   954	
   955		if (skb_vlan_tag_present(skb)) {
   956			vlan_priority = (skb_vlan_tag_get(skb) & VLAN_PRIO_MASK)
   957				>> VLAN_PRIO_SHIFT;
   958			if (vlan_priority > 0) {
   959				ret = vlan_priority;
   960				goto out;
   961			}
   962		}
   963	
   964		switch (skb->protocol) {
   965		case htons(ETH_P_IP):
 > 966			struct iphdr iph, *ip;
   967	
   968			ip = skb_header_pointer(skb, sizeof(struct ethhdr),
   969						sizeof(*ip), &iph);
   970			if (!ip)
   971				return 0;
   972	
   973			dscp = ipv4_get_dsfield(ip_hdr(skb)) & 0xfc;
   974			break;
   975		case htons(ETH_P_IPV6):
   976			struct ipv6hdr ip6h, *ip6;
   977	
   978			ip6 = skb_header_pointer(skb, sizeof(struct ethhdr),
   979						 sizeof(*ip6), &ip6h);
   980			if (!ip6)
   981				return 0;
   982	
   983			dscp = ipv6_get_dsfield(ipv6_hdr(skb)) & 0xfc;
   984			break;
   985		case htons(ETH_P_MPLS_UC):
   986		case htons(ETH_P_MPLS_MC): {
   987			struct mpls_label mpls_tmp, *mpls;
   988	
   989			mpls = skb_header_pointer(skb, sizeof(struct ethhdr),
   990						  sizeof(*mpls), &mpls_tmp);
   991			if (!mpls)
   992				return 0;
   993	
   994			ret = (ntohl(mpls->entry) & MPLS_LS_TC_MASK)
   995				>> MPLS_LS_TC_SHIFT;
   996			goto out;
   997		}
   998		case htons(ETH_P_80221):
   999			/* 802.21 is always network control traffic */
  1000			return 7;
  1001		default:
  1002			return 0;
  1003		}
  1004	
  1005		if (qos_map) {
  1006			unsigned int i, tmp_dscp = dscp >> 2;
  1007	
  1008			for (i = 0; i < qos_map->num_des; i++) {
  1009				if (tmp_dscp == qos_map->dscp_exception[i].dscp) {
  1010					ret = qos_map->dscp_exception[i].up;
  1011					goto out;
  1012				}
  1013			}
  1014	
  1015			for (i = 0; i < 8; i++) {
  1016				if (tmp_dscp >= qos_map->up[i].low &&
  1017				    tmp_dscp <= qos_map->up[i].high) {
  1018					ret = i;
  1019					goto out;
  1020				}
  1021			}
  1022		}
  1023	
  1024		/* The default mapping as defined Section 2.3 in RFC8325: The three
  1025		 * Most Significant Bits (MSBs) of the DSCP are used as the
  1026		 * corresponding L2 markings.
  1027		 */
  1028		ret = dscp >> 5;
  1029	
  1030		/* Handle specific DSCP values for which the default mapping (as
  1031		 * described above) doesn't adhere to the intended usage of the DSCP
  1032		 * value. See section 4 in RFC8325. Specifically, for the following
  1033		 * Diffserv Service Classes no update is needed:
  1034		 * - Standard: DF
  1035		 * - Low Priority Data: CS1
  1036		 * - Multimedia Conferencing: AF41, AF42, AF43
  1037		 * - Network Control Traffic: CS7
  1038		 * - Real-Time Interactive: CS4
  1039		 * - Signaling: CS5
  1040		 */
  1041		switch (dscp >> 2) {
  1042		case 10:
  1043		case 12:
  1044		case 14:
  1045			/* High throughput data: AF11, AF12, AF13 */
  1046			ret = 0;
  1047			break;
  1048		case 16:
  1049			/* Operations, Administration, and Maintenance and Provisioning:
  1050			 * CS2
  1051			 */
  1052			ret = 0;
  1053			break;
  1054		case 18:
  1055		case 20:
  1056		case 22:
  1057			/* Low latency data: AF21, AF22, AF23 */
  1058			ret = 3;
  1059			break;
  1060		case 24:
  1061			/* Broadcasting video: CS3 */
  1062			ret = 4;
  1063			break;
  1064		case 26:
  1065		case 28:
  1066		case 30:
  1067			/* Multimedia Streaming: AF31, AF32, AF33 */
  1068			ret = 4;
  1069			break;
  1070		case 44:
  1071			/* Voice Admit: VA */
  1072			ret = 6;
  1073			break;
  1074		case 46:
  1075			/* Telephony traffic: EF */
  1076			ret = 6;
  1077			break;
  1078		case 48:
  1079			/* Network Control Traffic: CS6 */
  1080			ret = 7;
  1081			break;
  1082		}
  1083	out:
  1084		return array_index_nospec(ret, IEEE80211_NUM_TIDS);
  1085	}
  1086	EXPORT_SYMBOL(cfg80211_classify8021d);
  1087	

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