CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: Qi Zhang <qi.z.zh...@intel.com>
CC: Tony Nguyen <anthony.l.ngu...@intel.com>
CC: Dan Nowlin <dan.now...@intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   9137eda53752ef73148e42b0d7640a00f1bc96b1
commit: b199dddbd399536d5470e10e6bfd7d0e1b5fb71a ice: Support non word aligned 
input set field
date:   11 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 11 months ago
config: ia64-randconfig-m031-20220220 
(https://download.01.org/0day-ci/archive/20220226/202202261225.lpgudshd-...@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 <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@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

31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  511  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  512  /**
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  513   * ice_flow_xtract_fld - 
Create an extraction sequence entry for the given field
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  514   * @hw: pointer to the 
HW struct
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  515   * @params: information 
about the flow to be processed
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  516   * @seg: packet segment 
index of the field to be extracted
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  517   * @fld: ID of field to 
be extracted
b199dddbd399536 Qi Zhang              2021-03-09  518   * @match: bit field of 
all fields
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  519   *
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  520   * This function 
determines the protocol ID, offset, and size of the given
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  521   * field. It then 
allocates one or more extraction sequence entries for the
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  522   * given field, and fill 
the entries with protocol ID and offset information.
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  523   */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  524  static enum ice_status
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  525  
ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
b199dddbd399536 Qi Zhang              2021-03-09  526               u8 seg, 
enum ice_flow_field fld, u64 match)
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  527  {
b199dddbd399536 Qi Zhang              2021-03-09  528   enum ice_flow_field sib 
= ICE_FLOW_FIELD_IDX_MAX;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  529   enum ice_prot_id 
prot_id = ICE_PROT_ID_INVAL;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  530   u8 fv_words = 
hw->blk[params->blk].es.fvw;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  531   struct 
ice_flow_fld_info *flds;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  532   u16 cnt, ese_bits, i;
b199dddbd399536 Qi Zhang              2021-03-09  533   u16 sib_mask = 0;
b199dddbd399536 Qi Zhang              2021-03-09  534   u16 mask;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  535   u16 off;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  536  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  537   flds = 
params->prof->segs[seg].fields;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  538  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  539   switch (fld) {
390bd141808d501 Qi Zhang              2021-03-09  540   case 
ICE_FLOW_FIELD_IDX_ETH_DA:
390bd141808d501 Qi Zhang              2021-03-09  541   case 
ICE_FLOW_FIELD_IDX_ETH_SA:
390bd141808d501 Qi Zhang              2021-03-09  542   case 
ICE_FLOW_FIELD_IDX_S_VLAN:
390bd141808d501 Qi Zhang              2021-03-09  543   case 
ICE_FLOW_FIELD_IDX_C_VLAN:
390bd141808d501 Qi Zhang              2021-03-09  544           prot_id = seg 
== 0 ? ICE_PROT_MAC_OF_OR_S : ICE_PROT_MAC_IL;
390bd141808d501 Qi Zhang              2021-03-09  545           break;
390bd141808d501 Qi Zhang              2021-03-09  546   case 
ICE_FLOW_FIELD_IDX_ETH_TYPE:
390bd141808d501 Qi Zhang              2021-03-09  547           prot_id = seg 
== 0 ? ICE_PROT_ETYPE_OL : ICE_PROT_ETYPE_IL;
390bd141808d501 Qi Zhang              2021-03-09  548           break;
b199dddbd399536 Qi Zhang              2021-03-09  549   case 
ICE_FLOW_FIELD_IDX_IPV4_DSCP:
b199dddbd399536 Qi Zhang              2021-03-09  550           prot_id = seg 
== 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd399536 Qi Zhang              2021-03-09  551           break;
b199dddbd399536 Qi Zhang              2021-03-09  552   case 
ICE_FLOW_FIELD_IDX_IPV6_DSCP:
b199dddbd399536 Qi Zhang              2021-03-09  553           prot_id = seg 
== 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd399536 Qi Zhang              2021-03-09  554           break;
b199dddbd399536 Qi Zhang              2021-03-09  555   case 
ICE_FLOW_FIELD_IDX_IPV4_TTL:
b199dddbd399536 Qi Zhang              2021-03-09  556   case 
ICE_FLOW_FIELD_IDX_IPV4_PROT:
b199dddbd399536 Qi Zhang              2021-03-09  557           prot_id = seg 
== 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd399536 Qi Zhang              2021-03-09  558  
b199dddbd399536 Qi Zhang              2021-03-09  559           /* TTL and PROT 
share the same extraction seq. entry.
b199dddbd399536 Qi Zhang              2021-03-09  560            * Each is 
considered a sibling to the other in terms of sharing
b199dddbd399536 Qi Zhang              2021-03-09  561            * the same 
extraction sequence entry.
b199dddbd399536 Qi Zhang              2021-03-09  562            */
b199dddbd399536 Qi Zhang              2021-03-09  563           if (fld == 
ICE_FLOW_FIELD_IDX_IPV4_TTL)
b199dddbd399536 Qi Zhang              2021-03-09  564                   sib = 
ICE_FLOW_FIELD_IDX_IPV4_PROT;
b199dddbd399536 Qi Zhang              2021-03-09  565           else if (fld == 
ICE_FLOW_FIELD_IDX_IPV4_PROT)
b199dddbd399536 Qi Zhang              2021-03-09  566                   sib = 
ICE_FLOW_FIELD_IDX_IPV4_TTL;
b199dddbd399536 Qi Zhang              2021-03-09  567  
b199dddbd399536 Qi Zhang              2021-03-09  568           /* If the 
sibling field is also included, that field's
b199dddbd399536 Qi Zhang              2021-03-09  569            * mask needs 
to be included.
b199dddbd399536 Qi Zhang              2021-03-09  570            */
b199dddbd399536 Qi Zhang              2021-03-09  571           if (match & 
BIT(sib))
b199dddbd399536 Qi Zhang              2021-03-09  572                   
sib_mask = ice_flds_info[sib].mask;
b199dddbd399536 Qi Zhang              2021-03-09  573           break;
b199dddbd399536 Qi Zhang              2021-03-09  574   case 
ICE_FLOW_FIELD_IDX_IPV6_TTL:
b199dddbd399536 Qi Zhang              2021-03-09  575   case 
ICE_FLOW_FIELD_IDX_IPV6_PROT:
b199dddbd399536 Qi Zhang              2021-03-09  576           prot_id = seg 
== 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd399536 Qi Zhang              2021-03-09  577  
b199dddbd399536 Qi Zhang              2021-03-09  578           /* TTL and PROT 
share the same extraction seq. entry.
b199dddbd399536 Qi Zhang              2021-03-09  579            * Each is 
considered a sibling to the other in terms of sharing
b199dddbd399536 Qi Zhang              2021-03-09  580            * the same 
extraction sequence entry.
b199dddbd399536 Qi Zhang              2021-03-09  581            */
b199dddbd399536 Qi Zhang              2021-03-09  582           if (fld == 
ICE_FLOW_FIELD_IDX_IPV6_TTL)
b199dddbd399536 Qi Zhang              2021-03-09  583                   sib = 
ICE_FLOW_FIELD_IDX_IPV6_PROT;
b199dddbd399536 Qi Zhang              2021-03-09  584           else if (fld == 
ICE_FLOW_FIELD_IDX_IPV6_PROT)
b199dddbd399536 Qi Zhang              2021-03-09  585                   sib = 
ICE_FLOW_FIELD_IDX_IPV6_TTL;
b199dddbd399536 Qi Zhang              2021-03-09  586  
b199dddbd399536 Qi Zhang              2021-03-09  587           /* If the 
sibling field is also included, that field's
b199dddbd399536 Qi Zhang              2021-03-09  588            * mask needs 
to be included.
b199dddbd399536 Qi Zhang              2021-03-09  589            */
b199dddbd399536 Qi Zhang              2021-03-09  590           if (match & 
BIT(sib))
b199dddbd399536 Qi Zhang              2021-03-09  591                   
sib_mask = ice_flds_info[sib].mask;
b199dddbd399536 Qi Zhang              2021-03-09  592           break;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  593   case 
ICE_FLOW_FIELD_IDX_IPV4_SA:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  594   case 
ICE_FLOW_FIELD_IDX_IPV4_DA:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  595           prot_id = seg 
== 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  596           break;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  597   case 
ICE_FLOW_FIELD_IDX_IPV6_SA:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  598   case 
ICE_FLOW_FIELD_IDX_IPV6_DA:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  599           prot_id = seg 
== 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  600           break;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  601   case 
ICE_FLOW_FIELD_IDX_TCP_SRC_PORT:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  602   case 
ICE_FLOW_FIELD_IDX_TCP_DST_PORT:
390bd141808d501 Qi Zhang              2021-03-09  603   case 
ICE_FLOW_FIELD_IDX_TCP_FLAGS:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  604           prot_id = 
ICE_PROT_TCP_IL;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  605           break;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  606   case 
ICE_FLOW_FIELD_IDX_UDP_SRC_PORT:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  607   case 
ICE_FLOW_FIELD_IDX_UDP_DST_PORT:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  608           prot_id = 
ICE_PROT_UDP_IL_OR_S;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  609           break;
1c01c8c6c969a9d Md Fahad Iqbal Polash 2020-01-17  610   case 
ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT:
1c01c8c6c969a9d Md Fahad Iqbal Polash 2020-01-17  611   case 
ICE_FLOW_FIELD_IDX_SCTP_DST_PORT:
1c01c8c6c969a9d Md Fahad Iqbal Polash 2020-01-17  612           prot_id = 
ICE_PROT_SCTP_IL;
1c01c8c6c969a9d Md Fahad Iqbal Polash 2020-01-17  613           break;
390bd141808d501 Qi Zhang              2021-03-09  614   case 
ICE_FLOW_FIELD_IDX_ARP_SIP:
390bd141808d501 Qi Zhang              2021-03-09  615   case 
ICE_FLOW_FIELD_IDX_ARP_DIP:
390bd141808d501 Qi Zhang              2021-03-09  616   case 
ICE_FLOW_FIELD_IDX_ARP_SHA:
390bd141808d501 Qi Zhang              2021-03-09  617   case 
ICE_FLOW_FIELD_IDX_ARP_DHA:
390bd141808d501 Qi Zhang              2021-03-09  618   case 
ICE_FLOW_FIELD_IDX_ARP_OP:
390bd141808d501 Qi Zhang              2021-03-09  619           prot_id = 
ICE_PROT_ARP_OF;
390bd141808d501 Qi Zhang              2021-03-09  620           break;
390bd141808d501 Qi Zhang              2021-03-09  621   case 
ICE_FLOW_FIELD_IDX_ICMP_TYPE:
390bd141808d501 Qi Zhang              2021-03-09  622   case 
ICE_FLOW_FIELD_IDX_ICMP_CODE:
390bd141808d501 Qi Zhang              2021-03-09  623           /* ICMP type 
and code share the same extraction seq. entry */
390bd141808d501 Qi Zhang              2021-03-09  624           prot_id = 
(params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) ?
390bd141808d501 Qi Zhang              2021-03-09  625                           
ICE_PROT_ICMP_IL : ICE_PROT_ICMPV6_IL;
b199dddbd399536 Qi Zhang              2021-03-09  626           sib = fld == 
ICE_FLOW_FIELD_IDX_ICMP_TYPE ?
b199dddbd399536 Qi Zhang              2021-03-09  627                   
ICE_FLOW_FIELD_IDX_ICMP_CODE :
b199dddbd399536 Qi Zhang              2021-03-09  628                   
ICE_FLOW_FIELD_IDX_ICMP_TYPE;
390bd141808d501 Qi Zhang              2021-03-09  629           break;
a4e82a81f573878 Tony Nguyen           2020-05-06  630   case 
ICE_FLOW_FIELD_IDX_GRE_KEYID:
a4e82a81f573878 Tony Nguyen           2020-05-06  631           prot_id = 
ICE_PROT_GRE_OF;
a4e82a81f573878 Tony Nguyen           2020-05-06  632           break;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  633   default:
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  634           return 
ICE_ERR_NOT_IMPL;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  635   }
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  636  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  637   /* Each extraction 
sequence entry is a word in size, and extracts a
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  638    * word-aligned offset 
from a protocol header.
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  639    */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  640   ese_bits = 
ICE_FLOW_FV_EXTRACT_SZ * BITS_PER_BYTE;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  641  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  642   flds[fld].xtrct.prot_id 
= prot_id;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  643   flds[fld].xtrct.off = 
(ice_flds_info[fld].off / ese_bits) *
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  644           
ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  645   flds[fld].xtrct.disp = 
(u8)(ice_flds_info[fld].off % ese_bits);
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  646   flds[fld].xtrct.idx = 
params->es_cnt;
b199dddbd399536 Qi Zhang              2021-03-09  647   flds[fld].xtrct.mask = 
ice_flds_info[fld].mask;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  648  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  649   /* Adjust the next 
field-entry index after accommodating the number of
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  650    * entries this field 
consumes
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  651    */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  652   cnt = 
DIV_ROUND_UP(flds[fld].xtrct.disp + ice_flds_info[fld].size,
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  653                      
ese_bits);
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  654  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  655   /* Fill in the 
extraction sequence entries needed for this field */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  656   off = 
flds[fld].xtrct.off;
b199dddbd399536 Qi Zhang              2021-03-09  657   mask = 
flds[fld].xtrct.mask;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  658   for (i = 0; i < cnt; 
i++) {
b199dddbd399536 Qi Zhang              2021-03-09  659           /* Only consume 
an extraction sequence entry if there is no
b199dddbd399536 Qi Zhang              2021-03-09  660            * sibling 
field associated with this field or the sibling entry
b199dddbd399536 Qi Zhang              2021-03-09  661            * already 
extracts the word shared with this field.
b199dddbd399536 Qi Zhang              2021-03-09  662            */
b199dddbd399536 Qi Zhang              2021-03-09 @663           if (sib == 
ICE_FLOW_FIELD_IDX_MAX ||
b199dddbd399536 Qi Zhang              2021-03-09  664               
flds[sib].xtrct.prot_id == ICE_PROT_ID_INVAL ||
b199dddbd399536 Qi Zhang              2021-03-09  665               
flds[sib].xtrct.off != off) {
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  666                   u8 idx;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  667  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  668                   /* Make 
sure the number of extraction sequence required
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  669                    * does 
not exceed the block's capability
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  670                    */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  671                   if 
(params->es_cnt >= fv_words)
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  672                           
return ICE_ERR_MAX_LIMIT;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  673  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  674                   /* some 
blocks require a reversed field vector layout */
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  675                   if 
(hw->blk[params->blk].es.reverse)
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  676                           
idx = fv_words - params->es_cnt - 1;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  677                   else
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  678                           
idx = params->es_cnt;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  679  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  680                   
params->es[idx].prot_id = prot_id;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  681                   
params->es[idx].off = off;
b199dddbd399536 Qi Zhang              2021-03-09  682                   
params->mask[idx] = mask | sib_mask;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  683                   
params->es_cnt++;
b199dddbd399536 Qi Zhang              2021-03-09  684           }
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  685  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  686           off += 
ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  687   }
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  688  
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  689   return 0;
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  690  }
31ad4e4ee1e4e2e Tony Nguyen           2020-01-17  691  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to