@@ -1844,13 +1844,14 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1844
1844
if (ret < 0 ) {
1845
1845
dev_err (dev , "%pOF error reading port_id %d\n" ,
1846
1846
port_np , ret );
1847
- return ret ;
1847
+ goto of_node_put ;
1848
1848
}
1849
1849
1850
1850
if (!port_id || port_id > common -> port_num ) {
1851
1851
dev_err (dev , "%pOF has invalid port_id %u %s\n" ,
1852
1852
port_np , port_id , port_np -> name );
1853
- return - EINVAL ;
1853
+ ret = - EINVAL ;
1854
+ goto of_node_put ;
1854
1855
}
1855
1856
1856
1857
port = am65_common_get_port (common , port_id );
@@ -1866,8 +1867,10 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1866
1867
(AM65_CPSW_NU_FRAM_PORT_OFFSET * (port_id - 1 ));
1867
1868
1868
1869
port -> slave .mac_sl = cpsw_sl_get ("am65" , dev , port -> port_base );
1869
- if (IS_ERR (port -> slave .mac_sl ))
1870
- return PTR_ERR (port -> slave .mac_sl );
1870
+ if (IS_ERR (port -> slave .mac_sl )) {
1871
+ ret = PTR_ERR (port -> slave .mac_sl );
1872
+ goto of_node_put ;
1873
+ }
1871
1874
1872
1875
port -> disabled = !of_device_is_available (port_np );
1873
1876
if (port -> disabled ) {
@@ -1880,7 +1883,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1880
1883
ret = PTR_ERR (port -> slave .ifphy );
1881
1884
dev_err (dev , "%pOF error retrieving port phy: %d\n" ,
1882
1885
port_np , ret );
1883
- return ret ;
1886
+ goto of_node_put ;
1884
1887
}
1885
1888
1886
1889
port -> slave .mac_only =
@@ -1889,10 +1892,12 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1889
1892
/* get phy/link info */
1890
1893
if (of_phy_is_fixed_link (port_np )) {
1891
1894
ret = of_phy_register_fixed_link (port_np );
1892
- if (ret )
1893
- return dev_err_probe (dev , ret ,
1895
+ if (ret ) {
1896
+ ret = dev_err_probe (dev , ret ,
1894
1897
"failed to register fixed-link phy %pOF\n" ,
1895
1898
port_np );
1899
+ goto of_node_put ;
1900
+ }
1896
1901
port -> slave .phy_node = of_node_get (port_np );
1897
1902
} else {
1898
1903
port -> slave .phy_node =
@@ -1902,14 +1907,15 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1902
1907
if (!port -> slave .phy_node ) {
1903
1908
dev_err (dev ,
1904
1909
"slave[%d] no phy found\n" , port_id );
1905
- return - ENODEV ;
1910
+ ret = - ENODEV ;
1911
+ goto of_node_put ;
1906
1912
}
1907
1913
1908
1914
ret = of_get_phy_mode (port_np , & port -> slave .phy_if );
1909
1915
if (ret ) {
1910
1916
dev_err (dev , "%pOF read phy-mode err %d\n" ,
1911
1917
port_np , ret );
1912
- return ret ;
1918
+ goto of_node_put ;
1913
1919
}
1914
1920
1915
1921
ret = of_get_mac_address (port_np , port -> slave .mac_addr );
@@ -1932,6 +1938,11 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
1932
1938
}
1933
1939
1934
1940
return 0 ;
1941
+
1942
+ of_node_put :
1943
+ of_node_put (port_np );
1944
+ of_node_put (node );
1945
+ return ret ;
1935
1946
}
1936
1947
1937
1948
static void am65_cpsw_pcpu_stats_free (void * data )
0 commit comments