All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:637 npc_update_entry() error: buffer overflow 'field->kw_mask' 7 <= 7
@ 2021-07-23  6:58 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-23  6:58 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 10226 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Subbaraya Sundeep <sbhatta@marvell.com>
CC: Jakub Kicinski <kuba@kernel.org>
CC: Sunil Goutham <sgoutham@marvell.com>
CC: Naveen Mamindlapalli <naveenm@marvell.com>

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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34748 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-23  6:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-23  6:58 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:637 npc_update_entry() error: buffer overflow 'field->kw_mask' 7 <= 7 kernel test robot

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.