Hi Eric, kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Eric-Garver/net-openvswitch-add-drop-reasons/20230630-043307 base: net-next/main patch link: https://lore.kernel.org/r/20230629203005.2137107-3-eric%40garver.life patch subject: [PATCH net-next 2/2] net: openvswitch: add drop action config: hexagon-randconfig-r045-20230629 (https://download.01.org/0day-ci/archive/20230630/202306300609.tdrdzscy-...@intel.com/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a) reproduce: (https://download.01.org/0day-ci/archive/20230630/202306300609.tdrdzscy-...@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 <l...@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202306300609.tdrdzscy-...@intel.com/ All errors (new ones prefixed by >>): In file included from net/openvswitch/actions.c:8: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:334: include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 547 | val = __raw_readb(PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 560 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) | ^ In file included from net/openvswitch/actions.c:8: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:334: include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 573 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu' 35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) | ^ In file included from net/openvswitch/actions.c:8: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/hexagon/include/asm/io.h:334: include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 584 | __raw_writeb(value, PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 594 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 604 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ >> net/openvswitch/actions.c:1483:4: error: expected expression 1483 | u32 reason = nla_get_u32(a); | ^ >> net/openvswitch/actions.c:1485:4: error: use of undeclared identifier >> 'reason' 1485 | reason |= SKB_DROP_REASON_SUBSYS_OPENVSWITCH << | ^ net/openvswitch/actions.c:1488:8: error: use of undeclared identifier 'reason' 1488 | if (reason == OVS_XLATE_OK) | ^ net/openvswitch/actions.c:1488:8: error: use of undeclared identifier 'reason' net/openvswitch/actions.c:1488:8: error: use of undeclared identifier 'reason' net/openvswitch/actions.c:1491:26: error: use of undeclared identifier 'reason' 1491 | kfree_skb_reason(skb, reason); | ^ 6 warnings and 6 errors generated. vim +1483 net/openvswitch/actions.c 1285 1286 /* Execute a list of actions against 'skb'. */ 1287 static int do_execute_actions(struct datapath *dp, struct sk_buff *skb, 1288 struct sw_flow_key *key, 1289 const struct nlattr *attr, int len) 1290 { 1291 const struct nlattr *a; 1292 int rem; 1293 1294 for (a = attr, rem = len; rem > 0; 1295 a = nla_next(a, &rem)) { 1296 int err = 0; 1297 1298 if (trace_ovs_do_execute_action_enabled()) 1299 trace_ovs_do_execute_action(dp, skb, key, a, rem); 1300 1301 switch (nla_type(a)) { 1302 case OVS_ACTION_ATTR_OUTPUT: { 1303 int port = nla_get_u32(a); 1304 struct sk_buff *clone; 1305 1306 /* Every output action needs a separate clone 1307 * of 'skb', In case the output action is the 1308 * last action, cloning can be avoided. 1309 */ 1310 if (nla_is_last(a, rem)) { 1311 do_output(dp, skb, port, key); 1312 /* 'skb' has been used for output. 1313 */ 1314 return 0; 1315 } 1316 1317 clone = skb_clone(skb, GFP_ATOMIC); 1318 if (clone) 1319 do_output(dp, clone, port, key); 1320 OVS_CB(skb)->cutlen = 0; 1321 break; 1322 } 1323 1324 case OVS_ACTION_ATTR_TRUNC: { 1325 struct ovs_action_trunc *trunc = nla_data(a); 1326 1327 if (skb->len > trunc->max_len) 1328 OVS_CB(skb)->cutlen = skb->len - trunc->max_len; 1329 break; 1330 } 1331 1332 case OVS_ACTION_ATTR_USERSPACE: 1333 output_userspace(dp, skb, key, a, attr, 1334 len, OVS_CB(skb)->cutlen); 1335 OVS_CB(skb)->cutlen = 0; 1336 break; 1337 1338 case OVS_ACTION_ATTR_HASH: 1339 execute_hash(skb, key, a); 1340 break; 1341 1342 case OVS_ACTION_ATTR_PUSH_MPLS: { 1343 struct ovs_action_push_mpls *mpls = nla_data(a); 1344 1345 err = push_mpls(skb, key, mpls->mpls_lse, 1346 mpls->mpls_ethertype, skb->mac_len); 1347 break; 1348 } 1349 case OVS_ACTION_ATTR_ADD_MPLS: { 1350 struct ovs_action_add_mpls *mpls = nla_data(a); 1351 __u16 mac_len = 0; 1352 1353 if (mpls->tun_flags & OVS_MPLS_L3_TUNNEL_FLAG_MASK) 1354 mac_len = skb->mac_len; 1355 1356 err = push_mpls(skb, key, mpls->mpls_lse, 1357 mpls->mpls_ethertype, mac_len); 1358 break; 1359 } 1360 case OVS_ACTION_ATTR_POP_MPLS: 1361 err = pop_mpls(skb, key, nla_get_be16(a)); 1362 break; 1363 1364 case OVS_ACTION_ATTR_PUSH_VLAN: 1365 err = push_vlan(skb, key, nla_data(a)); 1366 break; 1367 1368 case OVS_ACTION_ATTR_POP_VLAN: 1369 err = pop_vlan(skb, key); 1370 break; 1371 1372 case OVS_ACTION_ATTR_RECIRC: { 1373 bool last = nla_is_last(a, rem); 1374 1375 err = execute_recirc(dp, skb, key, a, last); 1376 if (last) { 1377 /* If this is the last action, the skb has 1378 * been consumed or freed. 1379 * Return immediately. 1380 */ 1381 return err; 1382 } 1383 break; 1384 } 1385 1386 case OVS_ACTION_ATTR_SET: 1387 err = execute_set_action(skb, key, nla_data(a)); 1388 break; 1389 1390 case OVS_ACTION_ATTR_SET_MASKED: 1391 case OVS_ACTION_ATTR_SET_TO_MASKED: 1392 err = execute_masked_set_action(skb, key, nla_data(a)); 1393 break; 1394 1395 case OVS_ACTION_ATTR_SAMPLE: { 1396 bool last = nla_is_last(a, rem); 1397 1398 err = sample(dp, skb, key, a, last); 1399 if (last) 1400 return err; 1401 1402 break; 1403 } 1404 1405 case OVS_ACTION_ATTR_CT: 1406 if (!is_flow_key_valid(key)) { 1407 err = ovs_flow_key_update(skb, key); 1408 if (err) 1409 return err; 1410 } 1411 1412 err = ovs_ct_execute(ovs_dp_get_net(dp), skb, key, 1413 nla_data(a)); 1414 1415 /* Hide stolen IP fragments from user space. */ 1416 if (err) 1417 return err == -EINPROGRESS ? 0 : err; 1418 break; 1419 1420 case OVS_ACTION_ATTR_CT_CLEAR: 1421 err = ovs_ct_clear(skb, key); 1422 break; 1423 1424 case OVS_ACTION_ATTR_PUSH_ETH: 1425 err = push_eth(skb, key, nla_data(a)); 1426 break; 1427 1428 case OVS_ACTION_ATTR_POP_ETH: 1429 err = pop_eth(skb, key); 1430 break; 1431 1432 case OVS_ACTION_ATTR_PUSH_NSH: { 1433 u8 buffer[NSH_HDR_MAX_LEN]; 1434 struct nshhdr *nh = (struct nshhdr *)buffer; 1435 1436 err = nsh_hdr_from_nlattr(nla_data(a), nh, 1437 NSH_HDR_MAX_LEN); 1438 if (unlikely(err)) 1439 break; 1440 err = push_nsh(skb, key, nh); 1441 break; 1442 } 1443 1444 case OVS_ACTION_ATTR_POP_NSH: 1445 err = pop_nsh(skb, key); 1446 break; 1447 1448 case OVS_ACTION_ATTR_METER: 1449 if (ovs_meter_execute(dp, skb, key, nla_get_u32(a))) { 1450 consume_skb(skb); 1451 return 0; 1452 } 1453 break; 1454 1455 case OVS_ACTION_ATTR_CLONE: { 1456 bool last = nla_is_last(a, rem); 1457 1458 err = clone(dp, skb, key, a, last); 1459 if (last) 1460 return err; 1461 1462 break; 1463 } 1464 1465 case OVS_ACTION_ATTR_CHECK_PKT_LEN: { 1466 bool last = nla_is_last(a, rem); 1467 1468 err = execute_check_pkt_len(dp, skb, key, a, last); 1469 if (last) 1470 return err; 1471 1472 break; 1473 } 1474 1475 case OVS_ACTION_ATTR_DEC_TTL: 1476 err = execute_dec_ttl(skb, key); 1477 if (err == -EHOSTUNREACH) 1478 return dec_ttl_exception_handler(dp, skb, 1479 key, a); 1480 break; 1481 1482 case OVS_ACTION_ATTR_DROP: > 1483 u32 reason = nla_get_u32(a); 1484 > 1485 reason |= SKB_DROP_REASON_SUBSYS_OPENVSWITCH << 1486 SKB_DROP_REASON_SUBSYS_SHIFT; 1487 1488 if (reason == OVS_XLATE_OK) 1489 break; 1490 1491 kfree_skb_reason(skb, reason); 1492 return 0; 1493 } 1494 1495 if (unlikely(err)) { 1496 kfree_skb(skb); 1497 return err; 1498 } 1499 } 1500 1501 consume_skb(skb); 1502 return 0; 1503 } 1504 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev