Skip to content

Commit a94efbd

Browse files
Peter Chendavem330
authored andcommitted
ethernet: arc: emac_main: add missing of_node_put after calling of_parse_phandle
of_node_put needs to be called when the device node which is got from of_parse_phandle has finished using. Signed-off-by: Peter Chen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9c52de0 commit a94efbd

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

drivers/net/ethernet/arc/emac_main.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -749,14 +749,16 @@ int arc_emac_probe(struct net_device *ndev, int interface)
749749
err = of_address_to_resource(dev->of_node, 0, &res_regs);
750750
if (err) {
751751
dev_err(dev, "failed to retrieve registers base from device tree\n");
752-
return -ENODEV;
752+
err = -ENODEV;
753+
goto out_put_node;
753754
}
754755

755756
/* Get IRQ from device tree */
756757
irq = irq_of_parse_and_map(dev->of_node, 0);
757758
if (!irq) {
758759
dev_err(dev, "failed to retrieve <irq> value from device tree\n");
759-
return -ENODEV;
760+
err = -ENODEV;
761+
goto out_put_node;
760762
}
761763

762764
ndev->netdev_ops = &arc_emac_netdev_ops;
@@ -778,7 +780,7 @@ int arc_emac_probe(struct net_device *ndev, int interface)
778780
err = clk_prepare_enable(priv->clk);
779781
if (err) {
780782
dev_err(dev, "failed to enable clock\n");
781-
return err;
783+
goto out_put_node;
782784
}
783785

784786
clock_frequency = clk_get_rate(priv->clk);
@@ -787,7 +789,8 @@ int arc_emac_probe(struct net_device *ndev, int interface)
787789
if (of_property_read_u32(dev->of_node, "clock-frequency",
788790
&clock_frequency)) {
789791
dev_err(dev, "failed to retrieve <clock-frequency> from device tree\n");
790-
return -EINVAL;
792+
err = -EINVAL;
793+
goto out_put_node;
791794
}
792795
}
793796

@@ -867,6 +870,7 @@ int arc_emac_probe(struct net_device *ndev, int interface)
867870
goto out_netif_api;
868871
}
869872

873+
of_node_put(phy_node);
870874
return 0;
871875

872876
out_netif_api:
@@ -877,6 +881,9 @@ int arc_emac_probe(struct net_device *ndev, int interface)
877881
out_clken:
878882
if (priv->clk)
879883
clk_disable_unprepare(priv->clk);
884+
out_put_node:
885+
of_node_put(phy_node);
886+
880887
return err;
881888
}
882889
EXPORT_SYMBOL_GPL(arc_emac_probe);

0 commit comments

Comments
 (0)