CC: [email protected]
CC: [email protected]
TO: Subbaraya Sundeep <[email protected]>
CC: Jakub Kicinski <[email protected]>
CC: Sunil Goutham <[email protected]>
CC: Naveen Mamindlapalli <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   8baef6386baaefb776bdd09b5c7630cf057c51c6
commit: 55307fcb925846d760ed80f4a8359dd4331c52bd octeontx2-af: Add mbox 
messages to install and delete MCAM rules
date:   8 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 8 months ago
config: mips-randconfig-m031-20210723 (attached as .config)
compiler: mips64-linux-gcc (GCC) 10.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:637 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:638 npc_update_entry() 
error: buffer overflow 'dummy.kw' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:643 npc_update_entry() 
error: buffer overflow 'dummy.kw_mask' 7 <= 7

Old smatch warnings:
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:642 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:651 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:653 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 8
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:654 npc_update_entry() 
error: buffer overflow 'dummy.kw' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:655 npc_update_entry() 
error: buffer overflow 'dummy.kw' 7 <= 8
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:659 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:661 npc_update_entry() 
error: buffer overflow 'field->kw_mask' 7 <= 8
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:662 npc_update_entry() 
error: buffer overflow 'dummy.kw_mask' 7 <= 7
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:663 npc_update_entry() 
error: buffer overflow 'dummy.kw_mask' 7 <= 8
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:1206 
rvu_mbox_handler_npc_delete_flow() error: dereferencing freed memory 'iter'

vim +637 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c

55307fcb925846 Subbaraya Sundeep 2020-11-15  588  
55307fcb925846 Subbaraya Sundeep 2020-11-15  589  /* npc_update_entry - Based 
on the masks generated during
55307fcb925846 Subbaraya Sundeep 2020-11-15  590   * the key scanning, updates 
the given entry with value and
55307fcb925846 Subbaraya Sundeep 2020-11-15  591   * masks for the field of 
interest. Maximum 16 bytes of a packet
55307fcb925846 Subbaraya Sundeep 2020-11-15  592   * header can be extracted by 
HW hence lo and hi are sufficient.
55307fcb925846 Subbaraya Sundeep 2020-11-15  593   * When field bytes are less 
than or equal to 8 then hi should be
55307fcb925846 Subbaraya Sundeep 2020-11-15  594   * 0 for value and mask.
55307fcb925846 Subbaraya Sundeep 2020-11-15  595   *
55307fcb925846 Subbaraya Sundeep 2020-11-15  596   * If exact match of value is 
required then mask should be all 1's.
55307fcb925846 Subbaraya Sundeep 2020-11-15  597   * If any bits in mask are 0 
then corresponding bits in value are
55307fcb925846 Subbaraya Sundeep 2020-11-15  598   * dont care.
55307fcb925846 Subbaraya Sundeep 2020-11-15  599   */
55307fcb925846 Subbaraya Sundeep 2020-11-15  600  static void 
npc_update_entry(struct rvu *rvu, enum key_fields type,
55307fcb925846 Subbaraya Sundeep 2020-11-15  601                             
struct mcam_entry *entry, u64 val_lo,
55307fcb925846 Subbaraya Sundeep 2020-11-15  602                             
u64 val_hi, u64 mask_lo, u64 mask_hi, u8 intf)
55307fcb925846 Subbaraya Sundeep 2020-11-15  603  {
55307fcb925846 Subbaraya Sundeep 2020-11-15  604        struct npc_mcam *mcam = 
&rvu->hw->mcam;
55307fcb925846 Subbaraya Sundeep 2020-11-15  605        struct mcam_entry dummy 
= { {0} };
55307fcb925846 Subbaraya Sundeep 2020-11-15  606        struct npc_key_field 
*field;
55307fcb925846 Subbaraya Sundeep 2020-11-15  607        u64 kw1, kw2, kw3;
55307fcb925846 Subbaraya Sundeep 2020-11-15  608        u8 shift;
55307fcb925846 Subbaraya Sundeep 2020-11-15  609        int i;
55307fcb925846 Subbaraya Sundeep 2020-11-15  610  
55307fcb925846 Subbaraya Sundeep 2020-11-15  611        field = 
&mcam->rx_key_fields[type];
55307fcb925846 Subbaraya Sundeep 2020-11-15  612        if 
(is_npc_intf_tx(intf))
55307fcb925846 Subbaraya Sundeep 2020-11-15  613                field = 
&mcam->tx_key_fields[type];
55307fcb925846 Subbaraya Sundeep 2020-11-15  614  
55307fcb925846 Subbaraya Sundeep 2020-11-15  615        if (!field->nr_kws)
55307fcb925846 Subbaraya Sundeep 2020-11-15  616                return;
55307fcb925846 Subbaraya Sundeep 2020-11-15  617  
55307fcb925846 Subbaraya Sundeep 2020-11-15  618        for (i = 0; i < 
NPC_MAX_KWS_IN_KEY; i++) {
55307fcb925846 Subbaraya Sundeep 2020-11-15  619                if 
(!field->kw_mask[i])
55307fcb925846 Subbaraya Sundeep 2020-11-15  620                        
continue;
55307fcb925846 Subbaraya Sundeep 2020-11-15  621                /* place key 
value in kw[x] */
55307fcb925846 Subbaraya Sundeep 2020-11-15  622                shift = 
__ffs64(field->kw_mask[i]);
55307fcb925846 Subbaraya Sundeep 2020-11-15  623                /* update entry 
value */
55307fcb925846 Subbaraya Sundeep 2020-11-15  624                kw1 = (val_lo 
<< shift) & field->kw_mask[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  625                dummy.kw[i] = 
kw1;
55307fcb925846 Subbaraya Sundeep 2020-11-15  626                /* update entry 
mask */
55307fcb925846 Subbaraya Sundeep 2020-11-15  627                kw1 = (mask_lo 
<< shift) & field->kw_mask[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  628                
dummy.kw_mask[i] = kw1;
55307fcb925846 Subbaraya Sundeep 2020-11-15  629  
55307fcb925846 Subbaraya Sundeep 2020-11-15  630                if 
(field->nr_kws == 1)
55307fcb925846 Subbaraya Sundeep 2020-11-15  631                        break;
55307fcb925846 Subbaraya Sundeep 2020-11-15  632                /* place 
remaining bits of key value in kw[x + 1] */
55307fcb925846 Subbaraya Sundeep 2020-11-15  633                if 
(field->nr_kws == 2) {
55307fcb925846 Subbaraya Sundeep 2020-11-15  634                        /* 
update entry value */
55307fcb925846 Subbaraya Sundeep 2020-11-15  635                        kw2 = 
shift ? val_lo >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  636                        kw2 |= 
(val_hi << shift);
55307fcb925846 Subbaraya Sundeep 2020-11-15 @637                        kw2 &= 
field->kw_mask[i + 1];
55307fcb925846 Subbaraya Sundeep 2020-11-15 @638                        
dummy.kw[i + 1] = kw2;
55307fcb925846 Subbaraya Sundeep 2020-11-15  639                        /* 
update entry mask */
55307fcb925846 Subbaraya Sundeep 2020-11-15  640                        kw2 = 
shift ? mask_lo >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  641                        kw2 |= 
(mask_hi << shift);
55307fcb925846 Subbaraya Sundeep 2020-11-15  642                        kw2 &= 
field->kw_mask[i + 1];
55307fcb925846 Subbaraya Sundeep 2020-11-15 @643                        
dummy.kw_mask[i + 1] = kw2;
55307fcb925846 Subbaraya Sundeep 2020-11-15  644                        break;
55307fcb925846 Subbaraya Sundeep 2020-11-15  645                }
55307fcb925846 Subbaraya Sundeep 2020-11-15  646                /* place 
remaining bits of key value in kw[x + 1], kw[x + 2] */
55307fcb925846 Subbaraya Sundeep 2020-11-15  647                if 
(field->nr_kws == 3) {
55307fcb925846 Subbaraya Sundeep 2020-11-15  648                        /* 
update entry value */
55307fcb925846 Subbaraya Sundeep 2020-11-15  649                        kw2 = 
shift ? val_lo >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  650                        kw2 |= 
(val_hi << shift);
55307fcb925846 Subbaraya Sundeep 2020-11-15  651                        kw2 &= 
field->kw_mask[i + 1];
55307fcb925846 Subbaraya Sundeep 2020-11-15  652                        kw3 = 
shift ? val_hi >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  653                        kw3 &= 
field->kw_mask[i + 2];
55307fcb925846 Subbaraya Sundeep 2020-11-15  654                        
dummy.kw[i + 1] = kw2;
55307fcb925846 Subbaraya Sundeep 2020-11-15  655                        
dummy.kw[i + 2] = kw3;
55307fcb925846 Subbaraya Sundeep 2020-11-15  656                        /* 
update entry mask */
55307fcb925846 Subbaraya Sundeep 2020-11-15  657                        kw2 = 
shift ? mask_lo >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  658                        kw2 |= 
(mask_hi << shift);
55307fcb925846 Subbaraya Sundeep 2020-11-15  659                        kw2 &= 
field->kw_mask[i + 1];
55307fcb925846 Subbaraya Sundeep 2020-11-15  660                        kw3 = 
shift ? mask_hi >> (64 - shift) : 0;
55307fcb925846 Subbaraya Sundeep 2020-11-15  661                        kw3 &= 
field->kw_mask[i + 2];
55307fcb925846 Subbaraya Sundeep 2020-11-15  662                        
dummy.kw_mask[i + 1] = kw2;
55307fcb925846 Subbaraya Sundeep 2020-11-15  663                        
dummy.kw_mask[i + 2] = kw3;
55307fcb925846 Subbaraya Sundeep 2020-11-15  664                        break;
55307fcb925846 Subbaraya Sundeep 2020-11-15  665                }
55307fcb925846 Subbaraya Sundeep 2020-11-15  666        }
55307fcb925846 Subbaraya Sundeep 2020-11-15  667        /* dummy is ready with 
values and masks for given key
55307fcb925846 Subbaraya Sundeep 2020-11-15  668         * field now clear and 
update input entry with those
55307fcb925846 Subbaraya Sundeep 2020-11-15  669         */
55307fcb925846 Subbaraya Sundeep 2020-11-15  670        for (i = 0; i < 
NPC_MAX_KWS_IN_KEY; i++) {
55307fcb925846 Subbaraya Sundeep 2020-11-15  671                if 
(!field->kw_mask[i])
55307fcb925846 Subbaraya Sundeep 2020-11-15  672                        
continue;
55307fcb925846 Subbaraya Sundeep 2020-11-15  673                entry->kw[i] &= 
~field->kw_mask[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  674                
entry->kw_mask[i] &= ~field->kw_mask[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  675  
55307fcb925846 Subbaraya Sundeep 2020-11-15  676                entry->kw[i] |= 
dummy.kw[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  677                
entry->kw_mask[i] |= dummy.kw_mask[i];
55307fcb925846 Subbaraya Sundeep 2020-11-15  678        }
55307fcb925846 Subbaraya Sundeep 2020-11-15  679  }
55307fcb925846 Subbaraya Sundeep 2020-11-15  680  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to