All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] net: dsa: properly disconnect the slave PHYs
@ 2016-10-18 12:12 John Crispin
  2016-10-18 12:29 ` Andrew Lunn
  0 siblings, 1 reply; 5+ messages in thread
From: John Crispin @ 2016-10-18 12:12 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, David S. Miller
  Cc: netdev, linux-kernel, John Crispin

The shutdown code only stopped the PHYs but does not diconnect them
properly. This could lead to null pointer deref related kernel oopses
during reboot. Fix this by calling phy_disconnect() after the PHYs are
stopped.

Signed-off-by: John Crispin <john@phrozen.org>
---
 net/dsa/slave.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 68714a5..725d9f7 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -154,8 +154,10 @@ static int dsa_slave_close(struct net_device *dev)
 	struct net_device *master = p->parent->dst->master_netdev;
 	struct dsa_switch *ds = p->parent;
 
-	if (p->phy)
+	if (p->phy) {
 		phy_stop(p->phy);
+		phy_disconnect(p->phy);
+	}
 
 	dev_mc_unsync(master, dev);
 	dev_uc_unsync(master, dev);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: dsa: properly disconnect the slave PHYs
  2016-10-18 12:12 [PATCH] net: dsa: properly disconnect the slave PHYs John Crispin
@ 2016-10-18 12:29 ` Andrew Lunn
  2016-10-18 12:54   ` John Crispin
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Lunn @ 2016-10-18 12:29 UTC (permalink / raw)
  To: John Crispin
  Cc: Vivien Didelot, Florian Fainelli, David S. Miller, netdev, linux-kernel

On Tue, Oct 18, 2016 at 02:12:40PM +0200, John Crispin wrote:
> The shutdown code only stopped the PHYs but does not diconnect them
> properly. This could lead to null pointer deref related kernel oopses
> during reboot. Fix this by calling phy_disconnect() after the PHYs are
> stopped.

Humm, i don't follow this.

The phy is disconnected in dsa_slave_destroy(). Why is that not
sufficient?

Also, after calling dsa_slave_close(), dsa_slave_open() can be
called. But with your change, the phy has gone, so we are going to
have trouble.

	Andrew

> 
> Signed-off-by: John Crispin <john@phrozen.org>
> ---
>  net/dsa/slave.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> index 68714a5..725d9f7 100644
> --- a/net/dsa/slave.c
> +++ b/net/dsa/slave.c
> @@ -154,8 +154,10 @@ static int dsa_slave_close(struct net_device *dev)
>  	struct net_device *master = p->parent->dst->master_netdev;
>  	struct dsa_switch *ds = p->parent;
>  
> -	if (p->phy)
> +	if (p->phy) {
>  		phy_stop(p->phy);
> +		phy_disconnect(p->phy);
> +	}
>  
>  	dev_mc_unsync(master, dev);
>  	dev_uc_unsync(master, dev);
> -- 
> 1.7.10.4
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: dsa: properly disconnect the slave PHYs
  2016-10-18 12:29 ` Andrew Lunn
@ 2016-10-18 12:54   ` John Crispin
  2016-10-18 13:24     ` Andrew Lunn
  0 siblings, 1 reply; 5+ messages in thread
From: John Crispin @ 2016-10-18 12:54 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Vivien Didelot, Florian Fainelli, David S. Miller, netdev, linux-kernel



On 18/10/2016 14:29, Andrew Lunn wrote:
> On Tue, Oct 18, 2016 at 02:12:40PM +0200, John Crispin wrote:
>> The shutdown code only stopped the PHYs but does not diconnect them
>> properly. This could lead to null pointer deref related kernel oopses
>> during reboot. Fix this by calling phy_disconnect() after the PHYs are
>> stopped.
> 
> Humm, i don't follow this.
> 
> The phy is disconnected in dsa_slave_destroy(). Why is that not
> sufficient?
> 
> Also, after calling dsa_slave_close(), dsa_slave_open() can be
> called. But with your change, the phy has gone, so we are going to
> have trouble.
> 
> 	Andrew
> 

Hi Andrew

i am testing on v4.4 which did not have a phy_disconnect() call. this
seems to have been fixed by cda5c15b so please ignore this patch

	John

>>
>> Signed-off-by: John Crispin <john@phrozen.org>
>> ---
>>  net/dsa/slave.c |    4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
>> index 68714a5..725d9f7 100644
>> --- a/net/dsa/slave.c
>> +++ b/net/dsa/slave.c
>> @@ -154,8 +154,10 @@ static int dsa_slave_close(struct net_device *dev)
>>  	struct net_device *master = p->parent->dst->master_netdev;
>>  	struct dsa_switch *ds = p->parent;
>>  
>> -	if (p->phy)
>> +	if (p->phy) {
>>  		phy_stop(p->phy);
>> +		phy_disconnect(p->phy);
>> +	}
>>  
>>  	dev_mc_unsync(master, dev);
>>  	dev_uc_unsync(master, dev);
>> -- 
>> 1.7.10.4
>>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: dsa: properly disconnect the slave PHYs
  2016-10-18 12:54   ` John Crispin
@ 2016-10-18 13:24     ` Andrew Lunn
  2016-10-18 13:27       ` John Crispin
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Lunn @ 2016-10-18 13:24 UTC (permalink / raw)
  To: John Crispin
  Cc: Vivien Didelot, Florian Fainelli, David S. Miller, netdev, linux-kernel

> Hi Andrew
> 
> i am testing on v4.4 which did not have a phy_disconnect() call. this
> seems to have been fixed by cda5c15b so please ignore this patch

Hi John

All patches must be against net-next, or net if it is a fix. Anything
else is wrong....

     Andrew

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: dsa: properly disconnect the slave PHYs
  2016-10-18 13:24     ` Andrew Lunn
@ 2016-10-18 13:27       ` John Crispin
  0 siblings, 0 replies; 5+ messages in thread
From: John Crispin @ 2016-10-18 13:27 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Vivien Didelot, Florian Fainelli, David S. Miller, netdev, linux-kernel



On 18/10/2016 15:24, Andrew Lunn wrote:
>> Hi Andrew
>>
>> i am testing on v4.4 which did not have a phy_disconnect() call. this
>> seems to have been fixed by cda5c15b so please ignore this patch
> 
> Hi John
> 
> All patches must be against net-next, or net if it is a fix. Anything
> else is wrong....
> 
>      Andrew
> 

Hi Andrew,

i know. i was testing on v4.4 and then rebased the patch against
net-next without noticing that a similar patch had already been merged.

regardless, using the latest net-next tree, the oops is gone without
adding any patches.

	John

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-10-18 13:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-18 12:12 [PATCH] net: dsa: properly disconnect the slave PHYs John Crispin
2016-10-18 12:29 ` Andrew Lunn
2016-10-18 12:54   ` John Crispin
2016-10-18 13:24     ` Andrew Lunn
2016-10-18 13:27       ` John Crispin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.