* [PATCH] net: dsa: mt7530: Add some return-value checks @ 2020-09-16 19:50 Alex Dewar 2020-09-16 20:10 ` Gustavo A. R. Silva ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Alex Dewar @ 2020-09-16 19:50 UTC (permalink / raw) Cc: Andrew Lunn, Landen Chao, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, Alex Dewar, linux-mediatek, Jakub Kicinski, Matthias Brugger, Vivien Didelot, David S. Miller, linux-arm-kernel In mt7531_cpu_port_config(), if the variable port is neither 5 nor 5, then variable interface will be used uninitialised. Change the function to return -EINVAL in this case. As the return value of mt7531_cpu_port_config() is never checked (even though it returns an int) add a check in the correct place so that the error can be passed up the call stack. Now that we correctly handle errors thrown in this function, also check the return value of mt7531_mac_config() in case an error occurs here. Addresses-Coverity: 1496993 ("Uninitialized variables") Fixes: c288575f7810 ("net: dsa: mt7530: Add the support of MT7531 switch") Signed-off-by: Alex Dewar <alex.dewar90@gmail.com> --- If it is not expected that these functions will throw errors (i.e. because the parameters passed will always be correct), we could dispense with the use of EINVAL errors and just use BUG*() macros instead. Let me know if you'd rather I fix things up in that way. Best, Alex drivers/net/dsa/mt7530.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 61388945d316..157d0a01faae 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -945,10 +945,14 @@ static int mt753x_cpu_port_enable(struct dsa_switch *ds, int port) { struct mt7530_priv *priv = ds->priv; + int ret; /* Setup max capability of CPU port at first */ - if (priv->info->cpu_port_config) - priv->info->cpu_port_config(ds, port); + if (priv->info->cpu_port_config) { + ret = priv->info->cpu_port_config(ds, port); + if (ret) + return ret; + } /* Enable Mediatek header mode on the cpu port */ mt7530_write(priv, MT7530_PVC_P(port), @@ -2275,7 +2279,7 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) { struct mt7530_priv *priv = ds->priv; phy_interface_t interface; - int speed; + int ret, speed; switch (port) { case 5: @@ -2293,6 +2297,8 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) priv->p6_interface = interface; break; + default: + return -EINVAL; } if (interface == PHY_INTERFACE_MODE_2500BASEX) @@ -2300,7 +2306,9 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) else speed = SPEED_1000; - mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + ret = mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + if (ret) + return ret; mt7530_write(priv, MT7530_PMCR_P(port), PMCR_CPU_PORT_SETTING(priv->id)); mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL, -- 2.28.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] net: dsa: mt7530: Add some return-value checks 2020-09-16 19:50 [PATCH] net: dsa: mt7530: Add some return-value checks Alex Dewar @ 2020-09-16 20:10 ` Gustavo A. R. Silva 2020-09-16 21:22 ` Alex Dewar 2020-09-16 21:23 ` Alex Dewar 2020-09-17 7:32 ` Landen Chao 2 siblings, 1 reply; 10+ messages in thread From: Gustavo A. R. Silva @ 2020-09-16 20:10 UTC (permalink / raw) To: Alex Dewar Cc: Andrew Lunn, Landen Chao, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel On 9/16/20 14:50, Alex Dewar wrote: [..] > > drivers/net/dsa/mt7530.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > [..] > > /* Enable Mediatek header mode on the cpu port */ > mt7530_write(priv, MT7530_PVC_P(port), > @@ -2275,7 +2279,7 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) > { > struct mt7530_priv *priv = ds->priv; > phy_interface_t interface; > - int speed; > + int ret, speed; Don't do this. Instead, declare each variable on its own line. In this case, speed before ret. Thanks -- Gustavo _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] net: dsa: mt7530: Add some return-value checks 2020-09-16 20:10 ` Gustavo A. R. Silva @ 2020-09-16 21:22 ` Alex Dewar 0 siblings, 0 replies; 10+ messages in thread From: Alex Dewar @ 2020-09-16 21:22 UTC (permalink / raw) To: Gustavo A. R. Silva Cc: Andrew Lunn, Landen Chao, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, Alex Dewar, linux-mediatek, Jakub Kicinski, Matthias Brugger, Vivien Didelot, David S. Miller, linux-arm-kernel [snip] > > > > /* Enable Mediatek header mode on the cpu port */ > > mt7530_write(priv, MT7530_PVC_P(port), > > @@ -2275,7 +2279,7 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) > > { > > struct mt7530_priv *priv = ds->priv; > > phy_interface_t interface; > > - int speed; > > + int ret, speed; > > Don't do this. Instead, declare each variable on its own line. In this case, > speed before ret. Good point. I'll do this in v2 :-) > > Thanks > -- > Gustavo _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] net: dsa: mt7530: Add some return-value checks 2020-09-16 19:50 [PATCH] net: dsa: mt7530: Add some return-value checks Alex Dewar 2020-09-16 20:10 ` Gustavo A. R. Silva @ 2020-09-16 21:23 ` Alex Dewar 2020-09-17 7:32 ` Landen Chao 2 siblings, 0 replies; 10+ messages in thread From: Alex Dewar @ 2020-09-16 21:23 UTC (permalink / raw) To: Alex Dewar Cc: Andrew Lunn, Landen Chao, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel On Wed, Sep 16, 2020 at 08:50:17PM +0100, Alex Dewar wrote: > In mt7531_cpu_port_config(), if the variable port is neither 5 nor 5, This should read "neither 5 nor 6", obviously. I'll fix in v2. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] net: dsa: mt7530: Add some return-value checks 2020-09-16 19:50 [PATCH] net: dsa: mt7530: Add some return-value checks Alex Dewar 2020-09-16 20:10 ` Gustavo A. R. Silva 2020-09-16 21:23 ` Alex Dewar @ 2020-09-17 7:32 ` Landen Chao 2020-09-19 19:28 ` [PATCH v2] " Alex Dewar 2 siblings, 1 reply; 10+ messages in thread From: Landen Chao @ 2020-09-17 7:32 UTC (permalink / raw) To: Alex Dewar Cc: Andrew Lunn, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel Hi Alex, Thanks for your review and fixing. On Thu, 2020-09-17 at 03:50 +0800, Alex Dewar wrote: [..] > > If it is not expected that these functions will throw errors (i.e. > because the parameters passed will always be correct), we could dispense > with the use of EINVAL errors and just use BUG*() macros instead. Let me > know if you'd rather I fix things up in that way. The cpu port setting is passed by dts. Use EINVAL to catch unexpected setting is fine. > > Best, > Alex > > drivers/net/dsa/mt7530.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c > index 61388945d316..157d0a01faae 100644 > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -945,10 +945,14 @@ static int > mt753x_cpu_port_enable(struct dsa_switch *ds, int port) > { > struct mt7530_priv *priv = ds->priv; > + int ret; > > /* Setup max capability of CPU port at first */ > - if (priv->info->cpu_port_config) > - priv->info->cpu_port_config(ds, port); > + if (priv->info->cpu_port_config) { > + ret = priv->info->cpu_port_config(ds, port); > + if (ret) > + return ret; > + } How about check return value in caller function, mt7530_setup() and mt7531_setup(), too? if (dsa_is_cpu_port(ds, i)) { ret = mt753x_cpu_port_enable(ds, i); if (ret) return ret; } else { [..] regards, landen _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] net: dsa: mt7530: Add some return-value checks 2020-09-17 7:32 ` Landen Chao @ 2020-09-19 19:28 ` Alex Dewar 2020-09-24 12:13 ` Landen Chao 0 siblings, 1 reply; 10+ messages in thread From: Alex Dewar @ 2020-09-19 19:28 UTC (permalink / raw) Cc: Andrew Lunn, Landen Chao, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, Alex Dewar, linux-mediatek, Jakub Kicinski, Matthias Brugger, Vivien Didelot, David S. Miller, linux-arm-kernel In mt7531_cpu_port_config(), if the variable port is neither 5 nor 6, then variable interface will be used uninitialised. Change the function to return -EINVAL in this case. As the return value of mt7531_cpu_port_config() is never checked (even though it returns an int) add a check in the correct place so that the error can be passed up the call stack. Now that we correctly handle errors thrown in this function, also check the return value of mt7531_mac_config() in case an error occurs here. Also add misisng checks to mt7530_setup() and mt7531_setup(), which are another level further up the call stack. Fixes: c288575f7810 ("net: dsa: mt7530: Add the support of MT7531 switch") Addresses-Coverity: 1496993 ("Uninitialized variables") Signed-off-by: Alex Dewar <alex.dewar90@gmail.com> --- v2: - fix typo in commit message - split variable declarations onto multiple lines (Gustavo) - add additional checks for mt753*_setup (Landen) drivers/net/dsa/mt7530.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 61388945d316..cb3efa7de7a8 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -945,10 +945,14 @@ static int mt753x_cpu_port_enable(struct dsa_switch *ds, int port) { struct mt7530_priv *priv = ds->priv; + int ret; /* Setup max capability of CPU port at first */ - if (priv->info->cpu_port_config) - priv->info->cpu_port_config(ds, port); + if (priv->info->cpu_port_config) { + ret = priv->info->cpu_port_config(ds, port); + if (ret) + return ret; + } /* Enable Mediatek header mode on the cpu port */ mt7530_write(priv, MT7530_PVC_P(port), @@ -1631,9 +1635,11 @@ mt7530_setup(struct dsa_switch *ds) mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, PCR_MATRIX_CLR); - if (dsa_is_cpu_port(ds, i)) - mt753x_cpu_port_enable(ds, i); - else + if (dsa_is_cpu_port(ds, i)) { + ret = mt753x_cpu_port_enable(ds, i); + if (ret) + return ret; + } else mt7530_port_disable(ds, i); /* Enable consistent egress tag */ @@ -1785,9 +1791,11 @@ mt7531_setup(struct dsa_switch *ds) mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR); - if (dsa_is_cpu_port(ds, i)) - mt753x_cpu_port_enable(ds, i); - else + if (dsa_is_cpu_port(ds, i)) { + ret = mt753x_cpu_port_enable(ds, i); + if (ret) + return ret; + } else mt7530_port_disable(ds, i); /* Enable consistent egress tag */ @@ -2276,6 +2284,7 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) struct mt7530_priv *priv = ds->priv; phy_interface_t interface; int speed; + int ret; switch (port) { case 5: @@ -2293,6 +2302,8 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) priv->p6_interface = interface; break; + default: + return -EINVAL; } if (interface == PHY_INTERFACE_MODE_2500BASEX) @@ -2300,7 +2311,9 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) else speed = SPEED_1000; - mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + ret = mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + if (ret) + return ret; mt7530_write(priv, MT7530_PMCR_P(port), PMCR_CPU_PORT_SETTING(priv->id)); mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL, -- 2.28.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2] net: dsa: mt7530: Add some return-value checks 2020-09-19 19:28 ` [PATCH v2] " Alex Dewar @ 2020-09-24 12:13 ` Landen Chao 2020-09-24 13:11 ` Alex Dewar 0 siblings, 1 reply; 10+ messages in thread From: Landen Chao @ 2020-09-24 12:13 UTC (permalink / raw) To: Alex Dewar Cc: Andrew Lunn, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel Hi Alex, Thanks for your patch. By linux/scripts/checkpatch.pl On Sun, 2020-09-20 at 03:28 +0800, Alex Dewar wrote: [..] > @@ -1631,9 +1635,11 @@ mt7530_setup(struct dsa_switch *ds) > mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, > PCR_MATRIX_CLR); > > - if (dsa_is_cpu_port(ds, i)) > - mt753x_cpu_port_enable(ds, i); > - else > + if (dsa_is_cpu_port(ds, i)) { > + ret = mt753x_cpu_port_enable(ds, i); > + if (ret) > + return ret; > + } else > mt7530_port_disable(ds, i); CHECK: braces {} should be used on all arms of this statement CHECK: Unbalanced braces around else statement > > /* Enable consistent egress tag */ > @@ -1785,9 +1791,11 @@ mt7531_setup(struct dsa_switch *ds) > > mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR); > > - if (dsa_is_cpu_port(ds, i)) > - mt753x_cpu_port_enable(ds, i); > - else > + if (dsa_is_cpu_port(ds, i)) { > + ret = mt753x_cpu_port_enable(ds, i); > + if (ret) > + return ret; > + } else > mt7530_port_disable(ds, i); CHECK: braces {} should be used on all arms of this statement CHECK: Unbalanced braces around else statement [..] regards landen _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] net: dsa: mt7530: Add some return-value checks 2020-09-24 12:13 ` Landen Chao @ 2020-09-24 13:11 ` Alex Dewar 2020-09-24 13:25 ` Landen Chao 0 siblings, 1 reply; 10+ messages in thread From: Alex Dewar @ 2020-09-24 13:11 UTC (permalink / raw) To: Landen Chao Cc: Andrew Lunn, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel On 2020-09-24 13:13, Landen Chao wrote: > Hi Alex, > > Thanks for your patch. By linux/scripts/checkpatch.pl > > On Sun, 2020-09-20 at 03:28 +0800, Alex Dewar wrote: > [..] >> @@ -1631,9 +1635,11 @@ mt7530_setup(struct dsa_switch *ds) >> mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, >> PCR_MATRIX_CLR); >> >> - if (dsa_is_cpu_port(ds, i)) >> - mt753x_cpu_port_enable(ds, i); >> - else >> + if (dsa_is_cpu_port(ds, i)) { >> + ret = mt753x_cpu_port_enable(ds, i); >> + if (ret) >> + return ret; >> + } else >> mt7530_port_disable(ds, i); > CHECK: braces {} should be used on all arms of this statement > CHECK: Unbalanced braces around else statement >> >> /* Enable consistent egress tag */ >> @@ -1785,9 +1791,11 @@ mt7531_setup(struct dsa_switch *ds) >> >> mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR); >> >> - if (dsa_is_cpu_port(ds, i)) >> - mt753x_cpu_port_enable(ds, i); >> - else >> + if (dsa_is_cpu_port(ds, i)) { >> + ret = mt753x_cpu_port_enable(ds, i); >> + if (ret) >> + return ret; >> + } else >> mt7530_port_disable(ds, i); > CHECK: braces {} should be used on all arms of this statement > CHECK: Unbalanced braces around else statement > > [..] > regards landen Hi Landen, Sorry about this... I usually run checkpatch over my patches. Would you like me to send a separate fix or a v3? Best, Alex _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] net: dsa: mt7530: Add some return-value checks 2020-09-24 13:11 ` Alex Dewar @ 2020-09-24 13:25 ` Landen Chao 2020-09-24 14:05 ` [PATCH v3] " Alex Dewar 0 siblings, 1 reply; 10+ messages in thread From: Landen Chao @ 2020-09-24 13:25 UTC (permalink / raw) To: Alex Dewar Cc: Andrew Lunn, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, David S. Miller, linux-mediatek, Matthias Brugger, Jakub Kicinski, Vivien Didelot, linux-arm-kernel On Thu, 2020-09-24 at 14:11 +0100, Alex Dewar wrote: > On 2020-09-24 13:13, Landen Chao wrote: > > Hi Alex, > > > > Thanks for your patch. By linux/scripts/checkpatch.pl > > > > On Sun, 2020-09-20 at 03:28 +0800, Alex Dewar wrote: > > [..] > >> @@ -1631,9 +1635,11 @@ mt7530_setup(struct dsa_switch *ds) > >> mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, > >> PCR_MATRIX_CLR); > >> > >> - if (dsa_is_cpu_port(ds, i)) > >> - mt753x_cpu_port_enable(ds, i); > >> - else > >> + if (dsa_is_cpu_port(ds, i)) { > >> + ret = mt753x_cpu_port_enable(ds, i); > >> + if (ret) > >> + return ret; > >> + } else > >> mt7530_port_disable(ds, i); > > CHECK: braces {} should be used on all arms of this statement > > CHECK: Unbalanced braces around else statement > >> > >> /* Enable consistent egress tag */ > >> @@ -1785,9 +1791,11 @@ mt7531_setup(struct dsa_switch *ds) > >> > >> mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR); > >> > >> - if (dsa_is_cpu_port(ds, i)) > >> - mt753x_cpu_port_enable(ds, i); > >> - else > >> + if (dsa_is_cpu_port(ds, i)) { > >> + ret = mt753x_cpu_port_enable(ds, i); > >> + if (ret) > >> + return ret; > >> + } else > >> mt7530_port_disable(ds, i); > > CHECK: braces {} should be used on all arms of this statement > > CHECK: Unbalanced braces around else statement > > > > [..] > > regards landen > Hi Landen, > > Sorry about this... I usually run checkpatch over my patches. Would you > like me to send a separate fix or a v3? > > Best, > Alex Hi Alex, Because v2 has not been merged yet, could you help to fix it in v3? regards landen _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3] net: dsa: mt7530: Add some return-value checks 2020-09-24 13:25 ` Landen Chao @ 2020-09-24 14:05 ` Alex Dewar 0 siblings, 0 replies; 10+ messages in thread From: Alex Dewar @ 2020-09-24 14:05 UTC (permalink / raw) To: Landen Chao Cc: Andrew Lunn, Florian Fainelli, linux-kernel, netdev, Sean Wang, Russell King, Alex Dewar, linux-mediatek, Jakub Kicinski, Matthias Brugger, Vivien Didelot, David S. Miller, linux-arm-kernel In mt7531_cpu_port_config(), if the variable port is neither 5 nor 6, then variable interface will be used uninitialised. Change the function to return -EINVAL in this case. As the return value of mt7531_cpu_port_config() is never checked (even though it returns an int) add a check in the correct place so that the error can be passed up the call stack. Now that we correctly handle errors thrown in this function, also check the return value of mt7531_mac_config() in case an error occurs here. Also add misisng checks to mt7530_setup() and mt7531_setup(), which are another level further up the call stack. Fixes: c288575f7810 ("net: dsa: mt7530: Add the support of MT7531 switch") Addresses-Coverity: 1496993 ("Uninitialized variables") Signed-off-by: Alex Dewar <alex.dewar90@gmail.com> --- Hi Landen, Here you go! v3: - fix checkpatch warning about braces (Landen) v2: - fix typo in commit message - split variable declarations onto multiple lines (Gustavo) - add additional checks for mt753*_setup (Landen) drivers/net/dsa/mt7530.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 61388945d316..23b2386318b2 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -945,10 +945,14 @@ static int mt753x_cpu_port_enable(struct dsa_switch *ds, int port) { struct mt7530_priv *priv = ds->priv; + int ret; /* Setup max capability of CPU port at first */ - if (priv->info->cpu_port_config) - priv->info->cpu_port_config(ds, port); + if (priv->info->cpu_port_config) { + ret = priv->info->cpu_port_config(ds, port); + if (ret) + return ret; + } /* Enable Mediatek header mode on the cpu port */ mt7530_write(priv, MT7530_PVC_P(port), @@ -1631,10 +1635,13 @@ mt7530_setup(struct dsa_switch *ds) mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, PCR_MATRIX_CLR); - if (dsa_is_cpu_port(ds, i)) - mt753x_cpu_port_enable(ds, i); - else + if (dsa_is_cpu_port(ds, i)) { + ret = mt753x_cpu_port_enable(ds, i); + if (ret) + return ret; + } else { mt7530_port_disable(ds, i); + } /* Enable consistent egress tag */ mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK, @@ -1785,10 +1792,13 @@ mt7531_setup(struct dsa_switch *ds) mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR); - if (dsa_is_cpu_port(ds, i)) - mt753x_cpu_port_enable(ds, i); - else + if (dsa_is_cpu_port(ds, i)) { + ret = mt753x_cpu_port_enable(ds, i); + if (ret) + return ret; + } else { mt7530_port_disable(ds, i); + } /* Enable consistent egress tag */ mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK, @@ -2276,6 +2286,7 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) struct mt7530_priv *priv = ds->priv; phy_interface_t interface; int speed; + int ret; switch (port) { case 5: @@ -2293,6 +2304,8 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) priv->p6_interface = interface; break; + default: + return -EINVAL; } if (interface == PHY_INTERFACE_MODE_2500BASEX) @@ -2300,7 +2313,9 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) else speed = SPEED_1000; - mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + ret = mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); + if (ret) + return ret; mt7530_write(priv, MT7530_PMCR_P(port), PMCR_CPU_PORT_SETTING(priv->id)); mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL, -- 2.28.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-09-24 14:08 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-09-16 19:50 [PATCH] net: dsa: mt7530: Add some return-value checks Alex Dewar 2020-09-16 20:10 ` Gustavo A. R. Silva 2020-09-16 21:22 ` Alex Dewar 2020-09-16 21:23 ` Alex Dewar 2020-09-17 7:32 ` Landen Chao 2020-09-19 19:28 ` [PATCH v2] " Alex Dewar 2020-09-24 12:13 ` Landen Chao 2020-09-24 13:11 ` Alex Dewar 2020-09-24 13:25 ` Landen Chao 2020-09-24 14:05 ` [PATCH v3] " Alex Dewar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).