diff mbox

[05/15] ethernet: cavium: octeon: add missing of_node_put after calling of_parse_phandle

Message ID 1469586048-15697-6-git-send-email-peter.chen@nxp.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Peter Chen July 27, 2016, 2:20 a.m. UTC
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 <peter.chen@nxp.com>
---
 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Daney July 27, 2016, 8:56 p.m. UTC | #1
On 07/26/2016 07:20 PM, Peter Chen wrote:
> 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 <peter.chen@nxp.com>

NAK.


> ---
>   drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
> index e8bc15b..5eb9d8c 100644
> --- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
> +++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
> @@ -960,6 +960,7 @@ static int octeon_mgmt_init_phy(struct net_device *netdev)
>   	phydev = of_phy_connect(netdev, p->phy_np,
>   				octeon_mgmt_adjust_link, 0,
>   				PHY_INTERFACE_MODE_MII);
> +	of_node_put(p->phy_np);

I don't think you can do this here.  octeon_mgmt_init_phy() may be 
called multiple times in the life of the driver, so p->phy_np must 
remain valid.

It may be appropriate to do the  of_node_put() in the 
octeon_mgmt_remove() function.


>
>   	if (!phydev)
>   		return -ENODEV;
>
Peter Chen July 28, 2016, 1:57 a.m. UTC | #2
>
>> ---
>>   drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
>> b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
>> index e8bc15b..5eb9d8c 100644
>> --- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
>> +++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
>> @@ -960,6 +960,7 @@ static int octeon_mgmt_init_phy(struct net_device *netdev)
>>   	phydev = of_phy_connect(netdev, p->phy_np,
>>   				octeon_mgmt_adjust_link, 0,
>>   				PHY_INTERFACE_MODE_MII);
>> +	of_node_put(p->phy_np);
>
>I don't think you can do this here.  octeon_mgmt_init_phy() may be called multiple
>times in the life of the driver, so p->phy_np must remain valid.
>
>It may be appropriate to do the  of_node_put() in the
>octeon_mgmt_remove() function.
 
Thanks, I will change it.

Peter
diff mbox

Patch

diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
index e8bc15b..5eb9d8c 100644
--- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
+++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
@@ -960,6 +960,7 @@  static int octeon_mgmt_init_phy(struct net_device *netdev)
 	phydev = of_phy_connect(netdev, p->phy_np,
 				octeon_mgmt_adjust_link, 0,
 				PHY_INTERFACE_MODE_MII);
+	of_node_put(p->phy_np);
 
 	if (!phydev)
 		return -ENODEV;