Hi Jianbo,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    
https://github.com/0day-ci/linux/commits/Jianbo-Liu/net-flow_dissector-Save-vlan-ethertype-from-headers/20180630-180158
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:544:15: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   net/sched/cls_flower.c:545:16: sparse: cast to restricted __be32
   include/linux/slab.h:631:13: sparse: undefined identifier 
'__builtin_mul_overflow'
   include/linux/slab.h:631:13: sparse: not a function <noident>
>> net/sched/cls_flower.c:1317:70: sparse: incorrect type in argument 3 
>> (different base types) @@    expected unsigned short [unsigned] [usertype] 
>> value @@    got  short [unsigned] [usertype] value @@
   net/sched/cls_flower.c:1317:70:    expected unsigned short [unsigned] 
[usertype] value
   net/sched/cls_flower.c:1317:70:    got restricted __be16 [usertype] n_proto
   include/linux/slab.h:631:13: sparse: call with no type!

vim +1317 net/sched/cls_flower.c

  1264  
  1265  static int fl_dump(struct net *net, struct tcf_proto *tp, void *fh,
  1266                     struct sk_buff *skb, struct tcmsg *t)
  1267  {
  1268          struct cls_fl_filter *f = fh;
  1269          struct nlattr *nest;
  1270          struct fl_flow_key *key, *mask;
  1271  
  1272          if (!f)
  1273                  return skb->len;
  1274  
  1275          t->tcm_handle = f->handle;
  1276  
  1277          nest = nla_nest_start(skb, TCA_OPTIONS);
  1278          if (!nest)
  1279                  goto nla_put_failure;
  1280  
  1281          if (f->res.classid &&
  1282              nla_put_u32(skb, TCA_FLOWER_CLASSID, f->res.classid))
  1283                  goto nla_put_failure;
  1284  
  1285          key = &f->key;
  1286          mask = &f->mask->key;
  1287  
  1288          if (mask->indev_ifindex) {
  1289                  struct net_device *dev;
  1290  
  1291                  dev = __dev_get_by_index(net, key->indev_ifindex);
  1292                  if (dev && nla_put_string(skb, TCA_FLOWER_INDEV, 
dev->name))
  1293                          goto nla_put_failure;
  1294          }
  1295  
  1296          if (!tc_skip_hw(f->flags))
  1297                  fl_hw_update_stats(tp, f);
  1298  
  1299          if (fl_dump_key_val(skb, key->eth.dst, TCA_FLOWER_KEY_ETH_DST,
  1300                              mask->eth.dst, TCA_FLOWER_KEY_ETH_DST_MASK,
  1301                              sizeof(key->eth.dst)) ||
  1302              fl_dump_key_val(skb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC,
  1303                              mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK,
  1304                              sizeof(key->eth.src)) ||
  1305              fl_dump_key_val(skb, &key->basic.n_proto, 
TCA_FLOWER_KEY_ETH_TYPE,
  1306                              &mask->basic.n_proto, TCA_FLOWER_UNSPEC,
  1307                              sizeof(key->basic.n_proto)))
  1308                  goto nla_put_failure;
  1309  
  1310          if (fl_dump_key_mpls(skb, &key->mpls, &mask->mpls))
  1311                  goto nla_put_failure;
  1312  
  1313          if (fl_dump_key_vlan(skb, &key->vlan, &mask->vlan))
  1314                  goto nla_put_failure;
  1315  
  1316          if (mask->vlan.vlan_tpid &&
> 1317              nla_put_u16(skb, TCA_FLOWER_KEY_VLAN_ETH_TYPE, 
> key->basic.n_proto))
  1318                  goto nla_put_failure;
  1319  
  1320          if ((key->basic.n_proto == htons(ETH_P_IP) ||
  1321               key->basic.n_proto == htons(ETH_P_IPV6)) &&
  1322              (fl_dump_key_val(skb, &key->basic.ip_proto, 
TCA_FLOWER_KEY_IP_PROTO,
  1323                              &mask->basic.ip_proto, TCA_FLOWER_UNSPEC,
  1324                              sizeof(key->basic.ip_proto)) ||
  1325              fl_dump_key_ip(skb, &key->ip, &mask->ip)))
  1326                  goto nla_put_failure;
  1327  
  1328          if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS &&
  1329              (fl_dump_key_val(skb, &key->ipv4.src, 
TCA_FLOWER_KEY_IPV4_SRC,
  1330                               &mask->ipv4.src, 
TCA_FLOWER_KEY_IPV4_SRC_MASK,
  1331                               sizeof(key->ipv4.src)) ||
  1332               fl_dump_key_val(skb, &key->ipv4.dst, 
TCA_FLOWER_KEY_IPV4_DST,
  1333                               &mask->ipv4.dst, 
TCA_FLOWER_KEY_IPV4_DST_MASK,
  1334                               sizeof(key->ipv4.dst))))
  1335                  goto nla_put_failure;
  1336          else if (key->control.addr_type == 
FLOW_DISSECTOR_KEY_IPV6_ADDRS &&
  1337                   (fl_dump_key_val(skb, &key->ipv6.src, 
TCA_FLOWER_KEY_IPV6_SRC,
  1338                                    &mask->ipv6.src, 
TCA_FLOWER_KEY_IPV6_SRC_MASK,
  1339                                    sizeof(key->ipv6.src)) ||
  1340                    fl_dump_key_val(skb, &key->ipv6.dst, 
TCA_FLOWER_KEY_IPV6_DST,
  1341                                    &mask->ipv6.dst, 
TCA_FLOWER_KEY_IPV6_DST_MASK,
  1342                                    sizeof(key->ipv6.dst))))
  1343                  goto nla_put_failure;
  1344  
  1345          if (key->basic.ip_proto == IPPROTO_TCP &&
  1346              (fl_dump_key_val(skb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC,
  1347                               &mask->tp.src, TCA_FLOWER_KEY_TCP_SRC_MASK,
  1348                               sizeof(key->tp.src)) ||
  1349               fl_dump_key_val(skb, &key->tp.dst, TCA_FLOWER_KEY_TCP_DST,
  1350                               &mask->tp.dst, TCA_FLOWER_KEY_TCP_DST_MASK,
  1351                               sizeof(key->tp.dst)) ||
  1352               fl_dump_key_val(skb, &key->tcp.flags, 
TCA_FLOWER_KEY_TCP_FLAGS,
  1353                               &mask->tcp.flags, 
TCA_FLOWER_KEY_TCP_FLAGS_MASK,
  1354                               sizeof(key->tcp.flags))))
  1355                  goto nla_put_failure;
  1356          else if (key->basic.ip_proto == IPPROTO_UDP &&
  1357                   (fl_dump_key_val(skb, &key->tp.src, 
TCA_FLOWER_KEY_UDP_SRC,
  1358                                    &mask->tp.src, 
TCA_FLOWER_KEY_UDP_SRC_MASK,
  1359                                    sizeof(key->tp.src)) ||
  1360                    fl_dump_key_val(skb, &key->tp.dst, 
TCA_FLOWER_KEY_UDP_DST,
  1361                                    &mask->tp.dst, 
TCA_FLOWER_KEY_UDP_DST_MASK,
  1362                                    sizeof(key->tp.dst))))
  1363                  goto nla_put_failure;
  1364          else if (key->basic.ip_proto == IPPROTO_SCTP &&
  1365                   (fl_dump_key_val(skb, &key->tp.src, 
TCA_FLOWER_KEY_SCTP_SRC,
  1366                                    &mask->tp.src, 
TCA_FLOWER_KEY_SCTP_SRC_MASK,
  1367                                    sizeof(key->tp.src)) ||
  1368                    fl_dump_key_val(skb, &key->tp.dst, 
TCA_FLOWER_KEY_SCTP_DST,
  1369                                    &mask->tp.dst, 
TCA_FLOWER_KEY_SCTP_DST_MASK,
  1370                                    sizeof(key->tp.dst))))
  1371                  goto nla_put_failure;
  1372          else if (key->basic.n_proto == htons(ETH_P_IP) &&
  1373                   key->basic.ip_proto == IPPROTO_ICMP &&
  1374                   (fl_dump_key_val(skb, &key->icmp.type,
  1375                                    TCA_FLOWER_KEY_ICMPV4_TYPE, 
&mask->icmp.type,
  1376                                    TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,
  1377                                    sizeof(key->icmp.type)) ||
  1378                    fl_dump_key_val(skb, &key->icmp.code,
  1379                                    TCA_FLOWER_KEY_ICMPV4_CODE, 
&mask->icmp.code,
  1380                                    TCA_FLOWER_KEY_ICMPV4_CODE_MASK,
  1381                                    sizeof(key->icmp.code))))
  1382                  goto nla_put_failure;
  1383          else if (key->basic.n_proto == htons(ETH_P_IPV6) &&
  1384                   key->basic.ip_proto == IPPROTO_ICMPV6 &&
  1385                   (fl_dump_key_val(skb, &key->icmp.type,
  1386                                    TCA_FLOWER_KEY_ICMPV6_TYPE, 
&mask->icmp.type,
  1387                                    TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,
  1388                                    sizeof(key->icmp.type)) ||
  1389                    fl_dump_key_val(skb, &key->icmp.code,
  1390                                    TCA_FLOWER_KEY_ICMPV6_CODE, 
&mask->icmp.code,
  1391                                    TCA_FLOWER_KEY_ICMPV6_CODE_MASK,
  1392                                    sizeof(key->icmp.code))))
  1393                  goto nla_put_failure;
  1394          else if ((key->basic.n_proto == htons(ETH_P_ARP) ||
  1395                    key->basic.n_proto == htons(ETH_P_RARP)) &&
  1396                   (fl_dump_key_val(skb, &key->arp.sip,
  1397                                    TCA_FLOWER_KEY_ARP_SIP, 
&mask->arp.sip,
  1398                                    TCA_FLOWER_KEY_ARP_SIP_MASK,
  1399                                    sizeof(key->arp.sip)) ||
  1400                    fl_dump_key_val(skb, &key->arp.tip,
  1401                                    TCA_FLOWER_KEY_ARP_TIP, 
&mask->arp.tip,
  1402                                    TCA_FLOWER_KEY_ARP_TIP_MASK,
  1403                                    sizeof(key->arp.tip)) ||
  1404                    fl_dump_key_val(skb, &key->arp.op,
  1405                                    TCA_FLOWER_KEY_ARP_OP, &mask->arp.op,
  1406                                    TCA_FLOWER_KEY_ARP_OP_MASK,
  1407                                    sizeof(key->arp.op)) ||
  1408                    fl_dump_key_val(skb, key->arp.sha, 
TCA_FLOWER_KEY_ARP_SHA,
  1409                                    mask->arp.sha, 
TCA_FLOWER_KEY_ARP_SHA_MASK,
  1410                                    sizeof(key->arp.sha)) ||
  1411                    fl_dump_key_val(skb, key->arp.tha, 
TCA_FLOWER_KEY_ARP_THA,
  1412                                    mask->arp.tha, 
TCA_FLOWER_KEY_ARP_THA_MASK,
  1413                                    sizeof(key->arp.tha))))
  1414                  goto nla_put_failure;
  1415  
  1416          if (key->enc_control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS 
&&
  1417              (fl_dump_key_val(skb, &key->enc_ipv4.src,
  1418                              TCA_FLOWER_KEY_ENC_IPV4_SRC, 
&mask->enc_ipv4.src,
  1419                              TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,
  1420                              sizeof(key->enc_ipv4.src)) ||
  1421               fl_dump_key_val(skb, &key->enc_ipv4.dst,
  1422                               TCA_FLOWER_KEY_ENC_IPV4_DST, 
&mask->enc_ipv4.dst,
  1423                               TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,
  1424                               sizeof(key->enc_ipv4.dst))))
  1425                  goto nla_put_failure;
  1426          else if (key->enc_control.addr_type == 
FLOW_DISSECTOR_KEY_IPV6_ADDRS &&
  1427                   (fl_dump_key_val(skb, &key->enc_ipv6.src,
  1428                              TCA_FLOWER_KEY_ENC_IPV6_SRC, 
&mask->enc_ipv6.src,
  1429                              TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,
  1430                              sizeof(key->enc_ipv6.src)) ||
  1431                   fl_dump_key_val(skb, &key->enc_ipv6.dst,
  1432                                   TCA_FLOWER_KEY_ENC_IPV6_DST,
  1433                                   &mask->enc_ipv6.dst,
  1434                                   TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,
  1435                              sizeof(key->enc_ipv6.dst))))
  1436                  goto nla_put_failure;
  1437  
  1438          if (fl_dump_key_val(skb, &key->enc_key_id, 
TCA_FLOWER_KEY_ENC_KEY_ID,
  1439                              &mask->enc_key_id, TCA_FLOWER_UNSPEC,
  1440                              sizeof(key->enc_key_id)) ||
  1441              fl_dump_key_val(skb, &key->enc_tp.src,
  1442                              TCA_FLOWER_KEY_ENC_UDP_SRC_PORT,
  1443                              &mask->enc_tp.src,
  1444                              TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK,
  1445                              sizeof(key->enc_tp.src)) ||
  1446              fl_dump_key_val(skb, &key->enc_tp.dst,
  1447                              TCA_FLOWER_KEY_ENC_UDP_DST_PORT,
  1448                              &mask->enc_tp.dst,
  1449                              TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK,
  1450                              sizeof(key->enc_tp.dst)))
  1451                  goto nla_put_failure;
  1452  
  1453          if (fl_dump_key_flags(skb, key->control.flags, 
mask->control.flags))
  1454                  goto nla_put_failure;
  1455  
  1456          if (f->flags && nla_put_u32(skb, TCA_FLOWER_FLAGS, f->flags))
  1457                  goto nla_put_failure;
  1458  
  1459          if (tcf_exts_dump(skb, &f->exts))
  1460                  goto nla_put_failure;
  1461  
  1462          nla_nest_end(skb, nest);
  1463  
  1464          if (tcf_exts_dump_stats(skb, &f->exts) < 0)
  1465                  goto nla_put_failure;
  1466  
  1467          return skb->len;
  1468  
  1469  nla_put_failure:
  1470          nla_nest_cancel(skb, nest);
  1471          return -1;
  1472  }
  1473  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to