octeontx2-af: Check return value of nix_get_nixlf before using nixlf
authorSubbaraya Sundeep <sbhatta@marvell.com>
Wed, 29 Nov 2023 05:41:48 +0000 (11:11 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:39:06 +0000 (18:39 +0100)
[ Upstream commit 830139e7b6911266a84a77e1f18abf758995cc89 ]

If a NIXLF is not attached to a PF/VF device then
nix_get_nixlf function fails and returns proper error
code. But npc_get_default_entry_action does not check it
and uses garbage value in subsequent calls. Fix this
by cheking the return value of nix_get_nixlf.

Fixes: 967db3529eca ("octeontx2-af: add support for multicast/promisc packet replication feature")
Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c

index 16cfc80..f658058 100644 (file)
@@ -389,7 +389,13 @@ static u64 npc_get_default_entry_action(struct rvu *rvu, struct npc_mcam *mcam,
        int bank, nixlf, index;
 
        /* get ucast entry rule entry index */
-       nix_get_nixlf(rvu, pf_func, &nixlf, NULL);
+       if (nix_get_nixlf(rvu, pf_func, &nixlf, NULL)) {
+               dev_err(rvu->dev, "%s: nixlf not attached to pcifunc:0x%x\n",
+                       __func__, pf_func);
+               /* Action 0 is drop */
+               return 0;
+       }
+
        index = npc_get_nixlf_mcam_index(mcam, pf_func, nixlf,
                                         NIXLF_UCAST_ENTRY);
        bank = npc_get_bank(mcam, index);