From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use.
Date: Wed, 23 Feb 2022 02:55:04 +0800 [thread overview]
Message-ID: <202202230223.ZeDCP365-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 17130 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Qi Zhang <qi.z.zhang@intel.com>
CC: Tony Nguyen <anthony.l.nguyen@intel.com>
CC: Dan Nowlin <dan.nowlin@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 038101e6b2cd5c55f888f85db42ea2ad3aecb4b6
commit: b199dddbd399536d5470e10e6bfd7d0e1b5fb71a ice: Support non word aligned input set field
date: 11 months ago
:::::: branch date: 26 hours ago
:::::: commit date: 11 months ago
config: ia64-randconfig-m031-20220220 (https://download.01.org/0day-ci/archive/20220223/202202230223.ZeDCP365-lkp(a)intel.com/config)
compiler: ia64-linux-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use.
Old smatch warnings:
drivers/net/ethernet/intel/ice/ice_flow.c:1698 ice_add_rss_cfg_sync() error: we previously assumed 'prof' could be null (see line 1680)
vim +/sib +663 drivers/net/ethernet/intel/ice/ice_flow.c
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 511
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 512 /**
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 513 * ice_flow_xtract_fld - Create an extraction sequence entry for the given field
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 514 * @hw: pointer to the HW struct
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 515 * @params: information about the flow to be processed
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 516 * @seg: packet segment index of the field to be extracted
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 517 * @fld: ID of field to be extracted
b199dddbd39953 Qi Zhang 2021-03-09 518 * @match: bit field of all fields
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 519 *
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 520 * This function determines the protocol ID, offset, and size of the given
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 521 * field. It then allocates one or more extraction sequence entries for the
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 522 * given field, and fill the entries with protocol ID and offset information.
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 523 */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 524 static enum ice_status
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 525 ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
b199dddbd39953 Qi Zhang 2021-03-09 526 u8 seg, enum ice_flow_field fld, u64 match)
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 527 {
b199dddbd39953 Qi Zhang 2021-03-09 528 enum ice_flow_field sib = ICE_FLOW_FIELD_IDX_MAX;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 529 enum ice_prot_id prot_id = ICE_PROT_ID_INVAL;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 530 u8 fv_words = hw->blk[params->blk].es.fvw;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 531 struct ice_flow_fld_info *flds;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 532 u16 cnt, ese_bits, i;
b199dddbd39953 Qi Zhang 2021-03-09 533 u16 sib_mask = 0;
b199dddbd39953 Qi Zhang 2021-03-09 534 u16 mask;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 535 u16 off;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 536
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 537 flds = params->prof->segs[seg].fields;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 538
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 539 switch (fld) {
390bd141808d50 Qi Zhang 2021-03-09 540 case ICE_FLOW_FIELD_IDX_ETH_DA:
390bd141808d50 Qi Zhang 2021-03-09 541 case ICE_FLOW_FIELD_IDX_ETH_SA:
390bd141808d50 Qi Zhang 2021-03-09 542 case ICE_FLOW_FIELD_IDX_S_VLAN:
390bd141808d50 Qi Zhang 2021-03-09 543 case ICE_FLOW_FIELD_IDX_C_VLAN:
390bd141808d50 Qi Zhang 2021-03-09 544 prot_id = seg == 0 ? ICE_PROT_MAC_OF_OR_S : ICE_PROT_MAC_IL;
390bd141808d50 Qi Zhang 2021-03-09 545 break;
390bd141808d50 Qi Zhang 2021-03-09 546 case ICE_FLOW_FIELD_IDX_ETH_TYPE:
390bd141808d50 Qi Zhang 2021-03-09 547 prot_id = seg == 0 ? ICE_PROT_ETYPE_OL : ICE_PROT_ETYPE_IL;
390bd141808d50 Qi Zhang 2021-03-09 548 break;
b199dddbd39953 Qi Zhang 2021-03-09 549 case ICE_FLOW_FIELD_IDX_IPV4_DSCP:
b199dddbd39953 Qi Zhang 2021-03-09 550 prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd39953 Qi Zhang 2021-03-09 551 break;
b199dddbd39953 Qi Zhang 2021-03-09 552 case ICE_FLOW_FIELD_IDX_IPV6_DSCP:
b199dddbd39953 Qi Zhang 2021-03-09 553 prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd39953 Qi Zhang 2021-03-09 554 break;
b199dddbd39953 Qi Zhang 2021-03-09 555 case ICE_FLOW_FIELD_IDX_IPV4_TTL:
b199dddbd39953 Qi Zhang 2021-03-09 556 case ICE_FLOW_FIELD_IDX_IPV4_PROT:
b199dddbd39953 Qi Zhang 2021-03-09 557 prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd39953 Qi Zhang 2021-03-09 558
b199dddbd39953 Qi Zhang 2021-03-09 559 /* TTL and PROT share the same extraction seq. entry.
b199dddbd39953 Qi Zhang 2021-03-09 560 * Each is considered a sibling to the other in terms of sharing
b199dddbd39953 Qi Zhang 2021-03-09 561 * the same extraction sequence entry.
b199dddbd39953 Qi Zhang 2021-03-09 562 */
b199dddbd39953 Qi Zhang 2021-03-09 563 if (fld == ICE_FLOW_FIELD_IDX_IPV4_TTL)
b199dddbd39953 Qi Zhang 2021-03-09 564 sib = ICE_FLOW_FIELD_IDX_IPV4_PROT;
b199dddbd39953 Qi Zhang 2021-03-09 565 else if (fld == ICE_FLOW_FIELD_IDX_IPV4_PROT)
b199dddbd39953 Qi Zhang 2021-03-09 566 sib = ICE_FLOW_FIELD_IDX_IPV4_TTL;
b199dddbd39953 Qi Zhang 2021-03-09 567
b199dddbd39953 Qi Zhang 2021-03-09 568 /* If the sibling field is also included, that field's
b199dddbd39953 Qi Zhang 2021-03-09 569 * mask needs to be included.
b199dddbd39953 Qi Zhang 2021-03-09 570 */
b199dddbd39953 Qi Zhang 2021-03-09 571 if (match & BIT(sib))
b199dddbd39953 Qi Zhang 2021-03-09 572 sib_mask = ice_flds_info[sib].mask;
b199dddbd39953 Qi Zhang 2021-03-09 573 break;
b199dddbd39953 Qi Zhang 2021-03-09 574 case ICE_FLOW_FIELD_IDX_IPV6_TTL:
b199dddbd39953 Qi Zhang 2021-03-09 575 case ICE_FLOW_FIELD_IDX_IPV6_PROT:
b199dddbd39953 Qi Zhang 2021-03-09 576 prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd39953 Qi Zhang 2021-03-09 577
b199dddbd39953 Qi Zhang 2021-03-09 578 /* TTL and PROT share the same extraction seq. entry.
b199dddbd39953 Qi Zhang 2021-03-09 579 * Each is considered a sibling to the other in terms of sharing
b199dddbd39953 Qi Zhang 2021-03-09 580 * the same extraction sequence entry.
b199dddbd39953 Qi Zhang 2021-03-09 581 */
b199dddbd39953 Qi Zhang 2021-03-09 582 if (fld == ICE_FLOW_FIELD_IDX_IPV6_TTL)
b199dddbd39953 Qi Zhang 2021-03-09 583 sib = ICE_FLOW_FIELD_IDX_IPV6_PROT;
b199dddbd39953 Qi Zhang 2021-03-09 584 else if (fld == ICE_FLOW_FIELD_IDX_IPV6_PROT)
b199dddbd39953 Qi Zhang 2021-03-09 585 sib = ICE_FLOW_FIELD_IDX_IPV6_TTL;
b199dddbd39953 Qi Zhang 2021-03-09 586
b199dddbd39953 Qi Zhang 2021-03-09 587 /* If the sibling field is also included, that field's
b199dddbd39953 Qi Zhang 2021-03-09 588 * mask needs to be included.
b199dddbd39953 Qi Zhang 2021-03-09 589 */
b199dddbd39953 Qi Zhang 2021-03-09 590 if (match & BIT(sib))
b199dddbd39953 Qi Zhang 2021-03-09 591 sib_mask = ice_flds_info[sib].mask;
b199dddbd39953 Qi Zhang 2021-03-09 592 break;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 593 case ICE_FLOW_FIELD_IDX_IPV4_SA:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 594 case ICE_FLOW_FIELD_IDX_IPV4_DA:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 595 prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 596 break;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 597 case ICE_FLOW_FIELD_IDX_IPV6_SA:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 598 case ICE_FLOW_FIELD_IDX_IPV6_DA:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 599 prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 600 break;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 601 case ICE_FLOW_FIELD_IDX_TCP_SRC_PORT:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 602 case ICE_FLOW_FIELD_IDX_TCP_DST_PORT:
390bd141808d50 Qi Zhang 2021-03-09 603 case ICE_FLOW_FIELD_IDX_TCP_FLAGS:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 604 prot_id = ICE_PROT_TCP_IL;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 605 break;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 606 case ICE_FLOW_FIELD_IDX_UDP_SRC_PORT:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 607 case ICE_FLOW_FIELD_IDX_UDP_DST_PORT:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 608 prot_id = ICE_PROT_UDP_IL_OR_S;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 609 break;
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17 610 case ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT:
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17 611 case ICE_FLOW_FIELD_IDX_SCTP_DST_PORT:
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17 612 prot_id = ICE_PROT_SCTP_IL;
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17 613 break;
390bd141808d50 Qi Zhang 2021-03-09 614 case ICE_FLOW_FIELD_IDX_ARP_SIP:
390bd141808d50 Qi Zhang 2021-03-09 615 case ICE_FLOW_FIELD_IDX_ARP_DIP:
390bd141808d50 Qi Zhang 2021-03-09 616 case ICE_FLOW_FIELD_IDX_ARP_SHA:
390bd141808d50 Qi Zhang 2021-03-09 617 case ICE_FLOW_FIELD_IDX_ARP_DHA:
390bd141808d50 Qi Zhang 2021-03-09 618 case ICE_FLOW_FIELD_IDX_ARP_OP:
390bd141808d50 Qi Zhang 2021-03-09 619 prot_id = ICE_PROT_ARP_OF;
390bd141808d50 Qi Zhang 2021-03-09 620 break;
390bd141808d50 Qi Zhang 2021-03-09 621 case ICE_FLOW_FIELD_IDX_ICMP_TYPE:
390bd141808d50 Qi Zhang 2021-03-09 622 case ICE_FLOW_FIELD_IDX_ICMP_CODE:
390bd141808d50 Qi Zhang 2021-03-09 623 /* ICMP type and code share the same extraction seq. entry */
390bd141808d50 Qi Zhang 2021-03-09 624 prot_id = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) ?
390bd141808d50 Qi Zhang 2021-03-09 625 ICE_PROT_ICMP_IL : ICE_PROT_ICMPV6_IL;
b199dddbd39953 Qi Zhang 2021-03-09 626 sib = fld == ICE_FLOW_FIELD_IDX_ICMP_TYPE ?
b199dddbd39953 Qi Zhang 2021-03-09 627 ICE_FLOW_FIELD_IDX_ICMP_CODE :
b199dddbd39953 Qi Zhang 2021-03-09 628 ICE_FLOW_FIELD_IDX_ICMP_TYPE;
390bd141808d50 Qi Zhang 2021-03-09 629 break;
a4e82a81f57387 Tony Nguyen 2020-05-06 630 case ICE_FLOW_FIELD_IDX_GRE_KEYID:
a4e82a81f57387 Tony Nguyen 2020-05-06 631 prot_id = ICE_PROT_GRE_OF;
a4e82a81f57387 Tony Nguyen 2020-05-06 632 break;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 633 default:
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 634 return ICE_ERR_NOT_IMPL;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 635 }
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 636
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 637 /* Each extraction sequence entry is a word in size, and extracts a
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 638 * word-aligned offset from a protocol header.
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 639 */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 640 ese_bits = ICE_FLOW_FV_EXTRACT_SZ * BITS_PER_BYTE;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 641
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 642 flds[fld].xtrct.prot_id = prot_id;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 643 flds[fld].xtrct.off = (ice_flds_info[fld].off / ese_bits) *
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 644 ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 645 flds[fld].xtrct.disp = (u8)(ice_flds_info[fld].off % ese_bits);
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 646 flds[fld].xtrct.idx = params->es_cnt;
b199dddbd39953 Qi Zhang 2021-03-09 647 flds[fld].xtrct.mask = ice_flds_info[fld].mask;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 648
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 649 /* Adjust the next field-entry index after accommodating the number of
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 650 * entries this field consumes
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 651 */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 652 cnt = DIV_ROUND_UP(flds[fld].xtrct.disp + ice_flds_info[fld].size,
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 653 ese_bits);
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 654
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 655 /* Fill in the extraction sequence entries needed for this field */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 656 off = flds[fld].xtrct.off;
b199dddbd39953 Qi Zhang 2021-03-09 657 mask = flds[fld].xtrct.mask;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 658 for (i = 0; i < cnt; i++) {
b199dddbd39953 Qi Zhang 2021-03-09 659 /* Only consume an extraction sequence entry if there is no
b199dddbd39953 Qi Zhang 2021-03-09 660 * sibling field associated with this field or the sibling entry
b199dddbd39953 Qi Zhang 2021-03-09 661 * already extracts the word shared with this field.
b199dddbd39953 Qi Zhang 2021-03-09 662 */
b199dddbd39953 Qi Zhang 2021-03-09 @663 if (sib == ICE_FLOW_FIELD_IDX_MAX ||
b199dddbd39953 Qi Zhang 2021-03-09 664 flds[sib].xtrct.prot_id == ICE_PROT_ID_INVAL ||
b199dddbd39953 Qi Zhang 2021-03-09 665 flds[sib].xtrct.off != off) {
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 666 u8 idx;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 667
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 668 /* Make sure the number of extraction sequence required
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 669 * does not exceed the block's capability
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 670 */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 671 if (params->es_cnt >= fv_words)
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 672 return ICE_ERR_MAX_LIMIT;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 673
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 674 /* some blocks require a reversed field vector layout */
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 675 if (hw->blk[params->blk].es.reverse)
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 676 idx = fv_words - params->es_cnt - 1;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 677 else
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 678 idx = params->es_cnt;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 679
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 680 params->es[idx].prot_id = prot_id;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 681 params->es[idx].off = off;
b199dddbd39953 Qi Zhang 2021-03-09 682 params->mask[idx] = mask | sib_mask;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 683 params->es_cnt++;
b199dddbd39953 Qi Zhang 2021-03-09 684 }
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 685
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 686 off += ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 687 }
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 688
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 689 return 0;
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 690 }
31ad4e4ee1e4e2 Tony Nguyen 2020-01-17 691
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-02-22 18:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-22 18:55 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-03-14 16:43 drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use kernel test robot
2022-03-13 14:45 kernel test robot
2022-02-26 5:05 kernel test robot
2022-02-24 22:33 kernel test robot
2022-02-20 22:04 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202230223.ZeDCP365-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.