Skip to content

Commit 70458f8

Browse files
jhovoldkuba-moo
authored andcommitted
net: enetc: fix device and OF node leak at probe
Make sure to drop the references to the IERB OF node and platform device taken by of_parse_phandle() and of_find_device_by_node() during probe. Fixes: e7d48e5 ("net: enetc: add a mini driver for the Integrated Endpoint Register Block") Cc: [email protected] # 5.13 Cc: Vladimir Oltean <[email protected]> Signed-off-by: Johan Hovold <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 3fa8402 commit 70458f8

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

drivers/net/ethernet/freescale/enetc/enetc_pf.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -829,19 +829,29 @@ static int enetc_pf_register_with_ierb(struct pci_dev *pdev)
829829
{
830830
struct platform_device *ierb_pdev;
831831
struct device_node *ierb_node;
832+
int ret;
832833

833834
ierb_node = of_find_compatible_node(NULL, NULL,
834835
"fsl,ls1028a-enetc-ierb");
835-
if (!ierb_node || !of_device_is_available(ierb_node))
836+
if (!ierb_node)
836837
return -ENODEV;
837838

839+
if (!of_device_is_available(ierb_node)) {
840+
of_node_put(ierb_node);
841+
return -ENODEV;
842+
}
843+
838844
ierb_pdev = of_find_device_by_node(ierb_node);
839845
of_node_put(ierb_node);
840846

841847
if (!ierb_pdev)
842848
return -EPROBE_DEFER;
843849

844-
return enetc_ierb_register_pf(ierb_pdev, pdev);
850+
ret = enetc_ierb_register_pf(ierb_pdev, pdev);
851+
852+
put_device(&ierb_pdev->dev);
853+
854+
return ret;
845855
}
846856

847857
static const struct enetc_si_ops enetc_psi_ops = {

0 commit comments

Comments
 (0)