mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
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: 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>
This commit is contained in:
committed by
Jakub Kicinski
parent
3fa840230f
commit
70458f8a6b
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user