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 |
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
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
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 --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; }
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(+)