:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check first_new_problem: net/bridge/br_netlink.c:99:13: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]" ::::::
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Alexander Lobakin <[email protected]> CC: Yury Norov <[email protected]> CC: Marco Elver <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 568035b01cfb107af8d2e4bd2fb9aea22cf5b868 commit: b03fc1173c0c2bb8fad61902a862985cecdc4b1b bitops: let optimize out non-atomic bitops on compile-time constants date: 7 weeks ago :::::: branch date: 2 days ago :::::: commit date: 7 weeks ago config: arm-randconfig-c002-20220722 (https://download.01.org/0day-ci/archive/20220816/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b03fc1173c0c2bb8fad61902a862985cecdc4b1b git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout b03fc1173c0c2bb8fad61902a862985cecdc4b1b # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> gcc-analyzer warnings: (new ones prefixed by >>) | 91 | #define NL_SET_ERR_MSG(extack, msg) do { \ | | ^ | | | | | (57) ...to here include/linux/netlink.h:102:9: note: in expansion of macro 'NL_SET_ERR_MSG' | 102 | NL_SET_ERR_MSG((extack), KBUILD_MODNAME ": " msg) | | ^~~~~~~~~~~~~~ net/bridge/br_private.h:662:17: note: in expansion of macro 'NL_SET_ERR_MSG_MOD' | 662 | NL_SET_ERR_MSG_MOD(extack, "Pvid isn't allowed in a range"); | | ^~~~~~~~~~~~~~~~~~ | <------+ | 'br_process_vlan_info': events 58-62 | |net/bridge/br_netlink.c:738:22: | 738 | if (!br_vlan_valid_range(vinfo_curr, *vinfo_last, extack)) | | ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (58) returning to 'br_process_vlan_info' from 'br_vlan_valid_range' | | (59) following 'true' branch... |...... | 741 | memcpy(&tmp_vinfo, *vinfo_last, | | ~~~~~~ | | | | | (60) ...to here | 742 | sizeof(struct bridge_vlan_info)); | 743 | for (v = (*vinfo_last)->vid; v <= vinfo_curr->vid; v++) { | | ~~~~~~~~~~~~~~~~~~~~ | | | | | (61) following 'false' branch... |...... | 766 | if (v_change_start) | | ~~ | | | | | (62) ...to here | 'br_process_vlan_info': event 63 | |cc1: | (63): use of uninitialized value '[01m[K<unknown>[m[K' here | In file included from include/net/rtnetlink.h:6, from net/bridge/br_netlink.c:12: include/net/netlink.h: In function 'nla_get_u64': include/net/netlink.h:1617:13: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 1617 | u64 tmp; | ^~~ 'br_changelink': events 1-8 | |net/bridge/br_netlink.c:1212:12: | 1212 | static int br_changelink(struct net_device *brdev, struct nlattr *tb[], | | ^~~~~~~~~~~~~ | | | | | (1) entry to 'br_changelink' |...... | 1219 | if (!data) | | ~ | | | | | (2) following 'false' branch (when 'data' is non-NULL)... |...... | 1222 | if (data[IFLA_BR_FORWARD_DELAY]) { | | ~~ | | | | | (3) ...to here |...... | 1260 | if (data[IFLA_BR_VLAN_FILTERING]) { | | ~ | | | | | (4) following 'false' branch... |...... | 1302 | if (data[IFLA_BR_GROUP_FWD_MASK]) { | | ~~ | | | | | (5) ...to here |...... | 1390 | if (data[IFLA_BR_MCAST_LAST_MEMBER_INTVL]) { | | ~ | | | | | (6) following 'true' branch... | 1391 | u64 val = nla_get_u64(data[IFLA_BR_MCAST_LAST_MEMBER_INTVL]); | | ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (8) calling 'nla_get_u64' from 'br_changelink' | | (7) ...to here | +--> 'nla_get_u64': events 9-10 | |include/net/netlink.h:1615:19: | 1615 | static inline u64 nla_get_u64(const struct nlattr *nla) | | ^~~~~~~~~~~ | | | | | (9) entry to 'nla_get_u64' | 1616 | { | 1617 | u64 tmp; | | ~~~ | | | | | (10) use of uninitialized value '<unknown>' here | net/bridge/br_netlink.c: In function 'br_get_link_af_size_filtered': >> net/bridge/br_netlink.c:99:13: warning: use of uninitialized value >> '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 99 | u32 num_cfm_peer_mep_infos; | ^~~~~~~~~~~~~~~~~~~~~~ 'br_setlink': event 1 | | 1026 | int br_setlink(struct net_device *dev, struct nlmsghdr *nlh, u16 flags, | | ^~~~~~~~~~ | | | | | (1) entry to 'br_setlink' | 'br_setlink': event 2 | |net/bridge/br_private.h:432:56: | 432 | rtnl_dereference(dev->rx_handler_data) : NULL; | 'br_setlink': event 3 | |include/linux/rcupdate.h:348:32: | 348 | #define RCU_LOCKDEP_WARN(c, s) do { } while (0 && (c)) | | ^~ | | | | | (3) ...to here include/linux/rcupdate.h:399:9: note: in expansion of macro 'RCU_LOCKDEP_WARN' | 399 | RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \ | | ^~~~~~~~~~~~~~~~ include/linux/rcupdate.h:595:9: note: in expansion of macro '__rcu_dereference_protected' | 595 | __rcu_dereference_protected((p), __UNIQUE_ID(rcu), (c), __rcu) | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rtnetlink.h:81:9: note: in expansion of macro 'rcu_dereference_protected' | 81 | rcu_dereference_protected(p, lockdep_rtnl_is_held()) | | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/bridge/br_private.h:432:17: note: in expansion of macro 'rtnl_dereference' | 432 | rtnl_dereference(dev->rx_handler_data) : NULL; | | ^~~~~~~~~~~~~~~~ | 'br_setlink': events 4-6 | |net/bridge/br_netlink.c:1046:12: | 1046 | if (!p && !afspec) | | ^ | | | | | (4) following 'false' branch... |...... | 1049 | if (p && protinfo) { | | ~~~~~~~~~~~~~ | | | | | (5) ...to here |...... | 1063 | if (nla_len(protinfo) < sizeof(u8)) | | ~ | | | | | (6) following 'false' branch... | 'br_setlink': event 7 | |include/linux/instruction_pointer.h:6:41: | 6 | #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; }) | | ^~~~~~ | | | | | (7) ...to here include/linux/spinlock_api_up.h:34:30: note: in expansion of macro '_THIS_IP_' | 34 | do { __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_LOCK_OFFSET); ___LOCK(lock); } while (0) | | ^~~~~~~~~ include/linux/spinlock_api_up.h:63:49: note: in expansion of macro '__LOCK_BH' | 63 | #define _raw_spin_lock_bh(lock) __LOCK_BH(lock) | | ^~~~~~~~~ include/linux/spinlock.h:273:41: note: in expansion of macro '_raw_spin_lock_bh' | 273 | #define raw_spin_lock_bh(lock) _raw_spin_lock_bh(lock) | | ^~~~~~~~~~~~~~~~~ include/linux/spinlock.h:354:9: note: in expansion of macro 'raw_spin_lock_bh' | 354 | raw_spin_lock_bh(&lock->rlock); | | ^~~~~~~~~~~~~~~~ | 'br_setlink': events 8-14 | |net/bridge/br_netlink.c:1070:20: | 649 | return br_info_notify(event, br, port, filter); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'br_info_notify' from 'br_setlink' |...... | 1070 | if (err) | | ^ | | | | | (8) following 'false' branch (when 'err == 0')... | 1071 | goto out; | 1072 | changed = true; | | ~~~~~~~ | | | | | (9) ...to here |...... | 1075 | if (afspec) | | ~ | | | | | (10) following 'false' branch (when 'afspec' is NULL)... |...... | 1078 | if (changed) | | ~~ ~ | | | | | | | (12) following 'true' branch... | | (11) ...to here vim +99 net/bridge/br_netlink.c 2594e9064a5763 Nikolay Aleksandrov 2015-09-25 92 fed0a159c8c5e4 Roopa Prabhu 2015-02-25 93 static size_t br_get_link_af_size_filtered(const struct net_device *dev, fed0a159c8c5e4 Roopa Prabhu 2015-02-25 94 u32 filter_mask) b7853d73e39b09 Roopa Prabhu 2015-02-21 95 { 2594e9064a5763 Nikolay Aleksandrov 2015-09-25 96 struct net_bridge_vlan_group *vg = NULL; efa5356b0d9753 Roopa Prabhu 2017-01-31 97 struct net_bridge_port *p = NULL; b6d0425b816eed Henrik Bjoernlund 2020-10-27 98 struct net_bridge *br = NULL; b6d0425b816eed Henrik Bjoernlund 2020-10-27 @99 u32 num_cfm_peer_mep_infos; b6d0425b816eed Henrik Bjoernlund 2020-10-27 100 u32 num_cfm_mep_infos; efa5356b0d9753 Roopa Prabhu 2017-01-31 101 size_t vinfo_sz = 0; b6d0425b816eed Henrik Bjoernlund 2020-10-27 102 int num_vlan_infos; b7853d73e39b09 Roopa Prabhu 2015-02-21 103 2f56f6be47dbc6 Johannes Berg 2015-03-03 104 rcu_read_lock(); 35f861e3c58e12 Julian Wiedmann 2019-03-29 105 if (netif_is_bridge_port(dev)) { 59259ff7a81b9e Zhang Zhengming 2021-04-28 106 p = br_port_get_check_rcu(dev); 59259ff7a81b9e Zhang Zhengming 2021-04-28 107 if (p) 907b1e6e83ed25 Nikolay Aleksandrov 2015-10-12 108 vg = nbp_vlan_group_rcu(p); 254ec036db1123 Kyungrok Chung 2021-10-16 109 } else if (netif_is_bridge_master(dev)) { 2594e9064a5763 Nikolay Aleksandrov 2015-09-25 110 br = netdev_priv(dev); 907b1e6e83ed25 Nikolay Aleksandrov 2015-10-12 111 vg = br_vlan_group_rcu(br); 2594e9064a5763 Nikolay Aleksandrov 2015-09-25 112 } 77751ee8aec3e1 Nikolay Aleksandrov 2015-09-30 113 num_vlan_infos = br_get_num_vlan_infos(vg, filter_mask); 2f56f6be47dbc6 Johannes Berg 2015-03-03 114 rcu_read_unlock(); 2f56f6be47dbc6 Johannes Berg 2015-03-03 115 efa5356b0d9753 Roopa Prabhu 2017-01-31 116 if (p && (p->flags & BR_VLAN_TUNNEL)) efa5356b0d9753 Roopa Prabhu 2017-01-31 117 vinfo_sz += br_get_vlan_tunnel_info_size(vg); efa5356b0d9753 Roopa Prabhu 2017-01-31 118 b7853d73e39b09 Roopa Prabhu 2015-02-21 119 /* Each VLAN is returned in bridge_vlan_info along with flags */ efa5356b0d9753 Roopa Prabhu 2017-01-31 120 vinfo_sz += num_vlan_infos * nla_total_size(sizeof(struct bridge_vlan_info)); efa5356b0d9753 Roopa Prabhu 2017-01-31 121 a911ad18a56aee Tobias Waldekranz 2022-03-22 122 if (p && vg && (filter_mask & RTEXT_FILTER_MST)) 122c29486e1ff7 Tobias Waldekranz 2022-03-16 123 vinfo_sz += br_mst_info_size(vg); 122c29486e1ff7 Tobias Waldekranz 2022-03-16 124 b6d0425b816eed Henrik Bjoernlund 2020-10-27 125 if (!(filter_mask & RTEXT_FILTER_CFM_STATUS)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 126 return vinfo_sz; b6d0425b816eed Henrik Bjoernlund 2020-10-27 127 b6d0425b816eed Henrik Bjoernlund 2020-10-27 128 if (!br) b6d0425b816eed Henrik Bjoernlund 2020-10-27 129 return vinfo_sz; b6d0425b816eed Henrik Bjoernlund 2020-10-27 130 b6d0425b816eed Henrik Bjoernlund 2020-10-27 131 /* CFM status info must be added */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 132 br_cfm_mep_count(br, &num_cfm_mep_infos); b6d0425b816eed Henrik Bjoernlund 2020-10-27 133 br_cfm_peer_mep_count(br, &num_cfm_peer_mep_infos); b6d0425b816eed Henrik Bjoernlund 2020-10-27 134 b6d0425b816eed Henrik Bjoernlund 2020-10-27 135 vinfo_sz += nla_total_size(0); /* IFLA_BRIDGE_CFM */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 136 /* For each status struct the MEP instance (u32) is added */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 137 /* MEP instance (u32) + br_cfm_mep_status */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 138 vinfo_sz += num_cfm_mep_infos * b6d0425b816eed Henrik Bjoernlund 2020-10-27 139 /*IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 140 (nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 141 /* IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 142 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 143 /* IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 144 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 145 /* IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 146 + nla_total_size(sizeof(u32))); b6d0425b816eed Henrik Bjoernlund 2020-10-27 147 /* MEP instance (u32) + br_cfm_cc_peer_status */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 148 vinfo_sz += num_cfm_peer_mep_infos * b6d0425b816eed Henrik Bjoernlund 2020-10-27 149 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 150 (nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 151 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 152 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 153 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 154 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 155 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 156 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 157 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 158 + nla_total_size(sizeof(u8)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 159 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 160 + nla_total_size(sizeof(u8)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 161 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 162 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 163 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 164 + nla_total_size(sizeof(u32)) b6d0425b816eed Henrik Bjoernlund 2020-10-27 165 /* IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN */ b6d0425b816eed Henrik Bjoernlund 2020-10-27 166 + nla_total_size(sizeof(u32))); b6d0425b816eed Henrik Bjoernlund 2020-10-27 167 efa5356b0d9753 Roopa Prabhu 2017-01-31 168 return vinfo_sz; b7853d73e39b09 Roopa Prabhu 2015-02-21 169 } b7853d73e39b09 Roopa Prabhu 2015-02-21 170 :::::: The code at line 99 was first introduced by commit :::::: b6d0425b816eed4dbd6fc590b27dbc7a113c0248 bridge: cfm: Netlink Notifications. :::::: TO: Henrik Bjoernlund <[email protected]> :::::: CC: Jakub Kicinski <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
