net: enetc: fix device and OF node leak at probe

commit 70458f8a6b upstream.

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: e7d48e5fbf ("net: enetc: add a mini driver for the Integrated Endpoint Register Block")
Cc: stable@vger.kernel.org	# 5.13
Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250725171213.880-3-johan@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold 2025-07-25 19:12:10 +02:00 committed by Greg Kroah-Hartman
parent 744d9cf898
commit 3328ff844e
1 changed files with 12 additions and 2 deletions

View File

@ -1182,19 +1182,29 @@ static int enetc_pf_register_with_ierb(struct pci_dev *pdev)
{
struct platform_device *ierb_pdev;
struct device_node *ierb_node;
int ret;
ierb_node = of_find_compatible_node(NULL, NULL,
"fsl,ls1028a-enetc-ierb");
if (!ierb_node || !of_device_is_available(ierb_node))
if (!ierb_node)
return -ENODEV;
if (!of_device_is_available(ierb_node)) {
of_node_put(ierb_node);
return -ENODEV;
}
ierb_pdev = of_find_device_by_node(ierb_node);
of_node_put(ierb_node);
if (!ierb_pdev)
return -EPROBE_DEFER;
return enetc_ierb_register_pf(ierb_pdev, pdev);
ret = enetc_ierb_register_pf(ierb_pdev, pdev);
put_device(&ierb_pdev->dev);
return ret;
}
static struct enetc_si *enetc_psi_create(struct pci_dev *pdev)