tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 88fac11862d38306dd0d2398015744877140390d commit: ff9b7521468bc2909293c1cda66a245a49688f6f [7561/10638] net/mlx5: Bridge, support LAG config: x86_64-randconfig-a005-20210827 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 1076082a0d97bd5c16a25ee7cf3dbb6ee4b5a9fe) 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/next/linux-next.git/commit/?id=ff9b7521468bc2909293c1cda66a245a49688f6f git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout ff9b7521468bc2909293c1cda66a245a49688f6f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:157:11: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] else if (mlx5_esw_bridge_dev_same_hw(rep, esw)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:164:9: note: uninitialized use occurs here return err; ^~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:157:7: note: remove the 'if' if its condition is always true else if (mlx5_esw_bridge_dev_same_hw(rep, esw)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:140:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 >> drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:262:7: warning: variable 'err' is used uninitialized whenever switch case is taken [-Wsometimes-uninitialized] case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:276:9: note: uninitialized use occurs here return err; ^~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:257:7: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (attr->u.brport_flags.mask & ~(BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:276:9: note: uninitialized use occurs here return err; ^~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:257:3: note: remove the 'if' if its condition is always true if (attr->u.brport_flags.mask & ~(BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:247:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 3 warnings generated. vim +157 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c 127 128 static int mlx5_esw_bridge_port_changeupper(struct notifier_block *nb, void *ptr) 129 { 130 struct mlx5_esw_bridge_offloads *br_offloads = container_of(nb, 131 struct mlx5_esw_bridge_offloads, 132 netdev_nb); 133 struct net_device *dev = netdev_notifier_info_to_dev(ptr); 134 struct netdev_notifier_changeupper_info *info = ptr; 135 struct net_device *upper = info->upper_dev, *rep; 136 struct mlx5_eswitch *esw = br_offloads->esw; 137 u16 vport_num, esw_owner_vhca_id; 138 struct netlink_ext_ack *extack; 139 int ifindex = upper->ifindex; 140 int err; 141 142 if (!netif_is_bridge_master(upper)) 143 return 0; 144 145 rep = mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, esw, &vport_num, &esw_owner_vhca_id); 146 if (!rep) 147 return 0; 148 149 extack = netdev_notifier_info_to_extack(&info->info); 150 151 if (mlx5_esw_bridge_is_local(dev, rep, esw)) 152 err = info->linking ? 153 mlx5_esw_bridge_vport_link(ifindex, vport_num, esw_owner_vhca_id, 154 br_offloads, extack) : 155 mlx5_esw_bridge_vport_unlink(ifindex, vport_num, esw_owner_vhca_id, 156 br_offloads, extack); > 157 else if (mlx5_esw_bridge_dev_same_hw(rep, esw)) 158 err = info->linking ? 159 mlx5_esw_bridge_vport_peer_link(ifindex, vport_num, esw_owner_vhca_id, 160 br_offloads, extack) : 161 mlx5_esw_bridge_vport_peer_unlink(ifindex, vport_num, esw_owner_vhca_id, 162 br_offloads, extack); 163 164 return err; 165 } 166 167 static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, 168 unsigned long event, void *ptr) 169 { 170 int err = 0; 171 172 switch (event) { 173 case NETDEV_PRECHANGEUPPER: 174 break; 175 176 case NETDEV_CHANGEUPPER: 177 err = mlx5_esw_bridge_port_changeupper(nb, ptr); 178 break; 179 } 180 181 return notifier_from_errno(err); 182 } 183 184 static int 185 mlx5_esw_bridge_port_obj_add(struct net_device *dev, 186 struct switchdev_notifier_port_obj_info *port_obj_info, 187 struct mlx5_esw_bridge_offloads *br_offloads) 188 { 189 struct netlink_ext_ack *extack = switchdev_notifier_info_to_extack(&port_obj_info->info); 190 const struct switchdev_obj *obj = port_obj_info->obj; 191 const struct switchdev_obj_port_vlan *vlan; 192 u16 vport_num, esw_owner_vhca_id; 193 int err; 194 195 if (!mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num, 196 &esw_owner_vhca_id)) 197 return 0; 198 199 port_obj_info->handled = true; 200 201 switch (obj->id) { 202 case SWITCHDEV_OBJ_ID_PORT_VLAN: 203 vlan = SWITCHDEV_OBJ_PORT_VLAN(obj); 204 err = mlx5_esw_bridge_port_vlan_add(vport_num, esw_owner_vhca_id, vlan->vid, 205 vlan->flags, br_offloads, extack); 206 break; 207 default: 208 return -EOPNOTSUPP; 209 } 210 return err; 211 } 212 213 static int 214 mlx5_esw_bridge_port_obj_del(struct net_device *dev, 215 struct switchdev_notifier_port_obj_info *port_obj_info, 216 struct mlx5_esw_bridge_offloads *br_offloads) 217 { 218 const struct switchdev_obj *obj = port_obj_info->obj; 219 const struct switchdev_obj_port_vlan *vlan; 220 u16 vport_num, esw_owner_vhca_id; 221 222 if (!mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num, 223 &esw_owner_vhca_id)) 224 return 0; 225 226 port_obj_info->handled = true; 227 228 switch (obj->id) { 229 case SWITCHDEV_OBJ_ID_PORT_VLAN: 230 vlan = SWITCHDEV_OBJ_PORT_VLAN(obj); 231 mlx5_esw_bridge_port_vlan_del(vport_num, esw_owner_vhca_id, vlan->vid, br_offloads); 232 break; 233 default: 234 return -EOPNOTSUPP; 235 } 236 return 0; 237 } 238 239 static int 240 mlx5_esw_bridge_port_obj_attr_set(struct net_device *dev, 241 struct switchdev_notifier_port_attr_info *port_attr_info, 242 struct mlx5_esw_bridge_offloads *br_offloads) 243 { 244 struct netlink_ext_ack *extack = switchdev_notifier_info_to_extack(&port_attr_info->info); 245 const struct switchdev_attr *attr = port_attr_info->attr; 246 u16 vport_num, esw_owner_vhca_id; 247 int err; 248 249 if (!mlx5_esw_bridge_lower_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num, 250 &esw_owner_vhca_id)) 251 return 0; 252 253 port_attr_info->handled = true; 254 255 switch (attr->id) { 256 case SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS: 257 if (attr->u.brport_flags.mask & ~(BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD)) { 258 NL_SET_ERR_MSG_MOD(extack, "Flag is not supported"); 259 err = -EINVAL; 260 } 261 break; > 262 case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS: 263 break; 264 case SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME: 265 err = mlx5_esw_bridge_ageing_time_set(vport_num, esw_owner_vhca_id, 266 attr->u.ageing_time, br_offloads); 267 break; 268 case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: 269 err = mlx5_esw_bridge_vlan_filtering_set(vport_num, esw_owner_vhca_id, 270 attr->u.vlan_filtering, br_offloads); 271 break; 272 default: 273 err = -EOPNOTSUPP; 274 } 275 276 return err; 277 } 278 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip