[PATCH] octeontx2-af: Fix pci_dev reference leak in cgx_print_dmac_flt
From: Wentao Liang
Date: Thu Jun 25 2026 - 02:40:33 EST
In cgx_print_dmac_flt(), pci_get_device() is called to look up the AF
PCI device, but its return value is passed directly to pci_get_drvdata()
without saving the pointer. This means pci_dev_put() can never be called
for the obtained device, causing a reference count leak.
Fix it by saving the return value of pci_get_device() in a local variable
and releasing it via pci_dev_put() after the drvdata is extracted.
Cc: stable@xxxxxxxxxxxxxxx
Fixes: dbc52debf95f ("octeontx2-af: Debugfs support for DMAC filters")
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
.../net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
index fa461489acdd..90dc13df9ff9 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
@@ -2949,7 +2949,7 @@ RVU_DEBUG_SEQ_FOPS(cgx_stat, cgx_stat_display, NULL);
static int cgx_print_dmac_flt(struct seq_file *s, int lmac_id)
{
- struct pci_dev *pdev = NULL;
+ struct pci_dev *af_pdev, *pdev = NULL;
void *cgxd = s->private;
char *bcast, *mcast;
u16 index, domain;
@@ -2958,8 +2958,13 @@ static int cgx_print_dmac_flt(struct seq_file *s, int lmac_id)
u64 cfg, mac;
int pf;
- rvu = pci_get_drvdata(pci_get_device(PCI_VENDOR_ID_CAVIUM,
- PCI_DEVID_OCTEONTX2_RVU_AF, NULL));
+ af_pdev = pci_get_device(PCI_VENDOR_ID_CAVIUM,
+ PCI_DEVID_OCTEONTX2_RVU_AF, NULL);
+ if (!af_pdev)
+ return -ENODEV;
+
+ rvu = pci_get_drvdata(af_pdev);
+ pci_dev_put(af_pdev);
if (!rvu)
return -ENODEV;
--
2.39.5 (Apple Git-154)