diff mbox series

[net] net: dsa: microchip: set the correct number of ports

Message ID 20200702094450.1353917-1-codrin.ciubotariu@microchip.com
State Accepted
Delegated to: David Miller
Headers show
Series [net] net: dsa: microchip: set the correct number of ports | expand

Commit Message

Codrin Ciubotariu July 2, 2020, 9:44 a.m. UTC
The number of ports is incorrectly set to the maximum available for a DSA
switch. Even if the extra ports are not used, this causes some functions
to be called later, like port_disable() and port_stp_state_set(). If the
driver doesn't check the port index, it will end up modifying unknown
registers.

Fixes: b987e98e50ab ("dsa: add DSA switch driver for Microchip KSZ9477")
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
---
 drivers/net/dsa/microchip/ksz8795.c | 3 +++
 drivers/net/dsa/microchip/ksz9477.c | 3 +++
 2 files changed, 6 insertions(+)

Comments

Andrew Lunn July 2, 2020, 1:50 p.m. UTC | #1
On Thu, Jul 02, 2020 at 12:44:50PM +0300, Codrin Ciubotariu wrote:
> The number of ports is incorrectly set to the maximum available for a DSA
> switch. Even if the extra ports are not used, this causes some functions
> to be called later, like port_disable() and port_stp_state_set(). If the
> driver doesn't check the port index, it will end up modifying unknown
> registers.
> 
> Fixes: b987e98e50ab ("dsa: add DSA switch driver for Microchip KSZ9477")
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

Thanks for the minimum patch.

If you wait about a week, net will get merged into net-next. You can
then submit a refactoring patch based on your previous version.

    Andrew
Codrin Ciubotariu July 2, 2020, 3:16 p.m. UTC | #2
On 02.07.2020 16:50, Andrew Lunn wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On Thu, Jul 02, 2020 at 12:44:50PM +0300, Codrin Ciubotariu wrote:
>> The number of ports is incorrectly set to the maximum available for a DSA
>> switch. Even if the extra ports are not used, this causes some functions
>> to be called later, like port_disable() and port_stp_state_set(). If the
>> driver doesn't check the port index, it will end up modifying unknown
>> registers.
>>
>> Fixes: b987e98e50ab ("dsa: add DSA switch driver for Microchip KSZ9477")
>> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
> 
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> 
> Thanks for the minimum patch.
> 
> If you wait about a week, net will get merged into net-next. You can
> then submit a refactoring patch based on your previous version.
> 
>      Andrew
> 


Sure thing. This small version does the job, so I will see about the 
refactoring, maybe I will group it with something else...

Thank you for your review!

Best regards,
Codrin
David Miller July 2, 2020, 9:27 p.m. UTC | #3
From: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Date: Thu, 2 Jul 2020 12:44:50 +0300

> The number of ports is incorrectly set to the maximum available for a DSA
> switch. Even if the extra ports are not used, this causes some functions
> to be called later, like port_disable() and port_stp_state_set(). If the
> driver doesn't check the port index, it will end up modifying unknown
> registers.
> 
> Fixes: b987e98e50ab ("dsa: add DSA switch driver for Microchip KSZ9477")
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Applied and queued up for -stable, thanks.
diff mbox series

Patch

diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c
index 47d65b77caf7..7c17b0f705ec 100644
--- a/drivers/net/dsa/microchip/ksz8795.c
+++ b/drivers/net/dsa/microchip/ksz8795.c
@@ -1268,6 +1268,9 @@  static int ksz8795_switch_init(struct ksz_device *dev)
 			return -ENOMEM;
 	}
 
+	/* set the real number of ports */
+	dev->ds->num_ports = dev->port_cnt;
+
 	return 0;
 }
 
diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c
index 9a51b8a4de5d..8d15c3016024 100644
--- a/drivers/net/dsa/microchip/ksz9477.c
+++ b/drivers/net/dsa/microchip/ksz9477.c
@@ -1588,6 +1588,9 @@  static int ksz9477_switch_init(struct ksz_device *dev)
 			return -ENOMEM;
 	}
 
+	/* set the real number of ports */
+	dev->ds->num_ports = dev->port_cnt;
+
 	return 0;
 }