[bug report] octeontx2-af: Drop rules for NPC MCAM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Ratheesh Kannoth,

The patch 3571fe07a090: "octeontx2-af: Drop rules for NPC MCAM" from
Jul 8, 2022, leads to the following Smatch static checker warning:

	drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c:1232 rvu_npc_exact_del_table_entry_by_id()
	error: uninitialized symbol 'drop_mcam_idx'.

drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c
    1199 static int rvu_npc_exact_del_table_entry_by_id(struct rvu *rvu, u32 seq_id)
    1200 {
    1201         struct npc_exact_table_entry *entry = NULL;
    1202         struct npc_exact_table *table;
    1203         bool disable_cam = false;
    1204         u32 drop_mcam_idx;
    1205         int *cnt;
    1206 
    1207         table = rvu->hw->table;
    1208 
    1209         mutex_lock(&table->lock);
    1210 
    1211         /* Lookup for entry which needs to be updated */
    1212         entry = __rvu_npc_exact_find_entry_by_seq_id(rvu, seq_id);
    1213         if (!entry) {
    1214                 dev_dbg(rvu->dev, "%s: failed to find entry for id=0x%x\n", __func__, seq_id);
    1215                 mutex_unlock(&table->lock);
    1216                 return -ENODATA;
    1217         }
    1218 
    1219         cnt = (entry->opc_type == NPC_EXACT_OPC_CAM) ? &table->cam_tbl_entry_cnt :
    1220                                 &table->mem_tbl_entry_cnt;
    1221 
    1222         /* delete from lists */
    1223         list_del_init(&entry->list);
    1224         list_del_init(&entry->glist);
    1225 
    1226         (*cnt)--;
    1227 
    1228         rvu_npc_exact_get_drop_rule_info(rvu, NIX_INTF_TYPE_CGX, entry->cgx_id, entry->lmac_id,
    1229                                          &drop_mcam_idx, NULL, NULL, NULL);

No checks for errors

    1230 
    1231         if (entry->cmd)
--> 1232                 __rvu_npc_exact_cmd_rules_cnt_update(rvu, drop_mcam_idx, -1, &disable_cam);

Uninitialized value leads to out of bounds access

    1233 
    1234         /* No dmac filter rules; disable drop on hit rule */
    1235         if (disable_cam) {
    1236                 rvu_npc_enable_mcam_by_entry_index(rvu, drop_mcam_idx, NIX_INTF_RX, false);
    1237                 dev_dbg(rvu->dev, "%s: Disabling mcam idx %d\n",
    1238                         __func__, drop_mcam_idx);
    1239         }
    1240 
    1241         mutex_unlock(&table->lock);
    1242 
    1243         rvu_npc_exact_dealloc_table_entry(rvu, entry->opc_type, entry->ways, entry->index);
    1244 
    1245         rvu_npc_exact_free_id(rvu, seq_id);
    1246 
    1247         dev_dbg(rvu->dev, "%s: delete entry success for id=0x%x, mca=%pM\n",
    1248                 __func__, seq_id, entry->mac);
    1249         kfree(entry);
    1250 
    1251         return 0;
    1252 }

regards,
dan carpenter



[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux