Thomas Bogendoerfer 04c0b7
From: Yang Yingliang <yangyingliang@huawei.com>
Thomas Bogendoerfer 04c0b7
Date: Thu, 17 Nov 2022 20:46:58 +0800
Thomas Bogendoerfer 04c0b7
Subject: octeontx2-af: debugsfs: fix pci device refcount leak
Thomas Bogendoerfer 04c0b7
Patch-mainline: v6.1-rc7
Thomas Bogendoerfer 04c0b7
Git-commit: d66608803aa2ffb9e475623343f69996305771ae
Thomas Bogendoerfer 04c0b7
References: git-fixes
Thomas Bogendoerfer 04c0b7
Thomas Bogendoerfer 04c0b7
As comment of pci_get_domain_bus_and_slot() says, it returns
Thomas Bogendoerfer 04c0b7
a pci device with refcount increment, when finish using it,
Thomas Bogendoerfer 04c0b7
the caller must decrement the reference count by calling
Thomas Bogendoerfer 04c0b7
pci_dev_put().
Thomas Bogendoerfer 04c0b7
Thomas Bogendoerfer 04c0b7
So before returning from rvu_dbg_rvu_pf_cgx_map_display() or
Thomas Bogendoerfer 04c0b7
cgx_print_dmac_flt(), pci_dev_put() is called to avoid refcount
Thomas Bogendoerfer 04c0b7
leak.
Thomas Bogendoerfer 04c0b7
Thomas Bogendoerfer 04c0b7
Fixes: dbc52debf95f ("octeontx2-af: Debugfs support for DMAC filters")
Thomas Bogendoerfer 04c0b7
Fixes: e2fb37303865 ("octeontx2-af: Display CGX, NIX and PF map in debugfs.")
Thomas Bogendoerfer 04c0b7
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Thomas Bogendoerfer 04c0b7
Link: https://lore.kernel.org/r/20221117124658.162409-1-yangyingliang@huawei.com
Thomas Bogendoerfer 04c0b7
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Thomas Bogendoerfer 04c0b7
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 04c0b7
---
Thomas Bogendoerfer 04c0b7
 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c |    3 +++
Thomas Bogendoerfer 04c0b7
 1 file changed, 3 insertions(+)
Thomas Bogendoerfer 04c0b7
Thomas Bogendoerfer 04c0b7
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
Thomas Bogendoerfer 04c0b7
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
Thomas Bogendoerfer 04c0b7
@@ -534,6 +534,8 @@ static int rvu_dbg_rvu_pf_cgx_map_displa
Thomas Bogendoerfer 04c0b7
 		sprintf(lmac, "LMAC%d", lmac_id);
Thomas Bogendoerfer 04c0b7
 		seq_printf(filp, "%s\t0x%x\t\tNIX%d\t\t%s\t%s\n",
Thomas Bogendoerfer 04c0b7
 			   dev_name(&pdev->dev), pcifunc, blkid, cgx, lmac);
Thomas Bogendoerfer 04c0b7
+
Thomas Bogendoerfer 04c0b7
+		pci_dev_put(pdev);
Thomas Bogendoerfer 04c0b7
 	}
Thomas Bogendoerfer 04c0b7
 	return 0;
Thomas Bogendoerfer 04c0b7
 }
Thomas Bogendoerfer 04c0b7
@@ -2220,6 +2222,7 @@ static int cgx_print_dmac_flt(struct seq
Thomas Bogendoerfer 04c0b7
 		}
Thomas Bogendoerfer 04c0b7
 	}
Thomas Bogendoerfer 04c0b7
 
Thomas Bogendoerfer 04c0b7
+	pci_dev_put(pdev);
Thomas Bogendoerfer 04c0b7
 	return 0;
Thomas Bogendoerfer 04c0b7
 }
Thomas Bogendoerfer 04c0b7