Commit 70458f8a authored by Johan Hovold's avatar Johan Hovold Committed by Jakub Kicinski
Browse files

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: e7d48e5f ("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: default avatarJohan Hovold <johan@kernel.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250725171213.880-3-johan@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3fa84023
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -829,19 +829,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 const struct enetc_si_ops enetc_psi_ops = {