mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
drivers: net: cpsw: fix buggy loop condition
Commit 0cd8f9cc06
("drivers: net: cpsw:
enable promiscuous mode support")
Enable promiscuous mode support for CPSW.
Introduced a crash on an am335x based board (similiar to am335x-evm).
Reason is buggy end condition in for loop in cpsw_set_promiscious()
for (i = 0; i <= priv->data.slaves; i++)
should be
for (i = 0; i < priv->data.slaves; i++)
Fix this ...
Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Sebastian Siewior <bigeasy@linutronix.de>
Cc: Daniel Mack <zonque@gmail.com>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Markus Pargmann <mpa@pengutronix.de>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b0c057ca7e
commit
0d961b3b52
@ -554,7 +554,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable)
|
||||
* common for both the interface as the interface shares
|
||||
* the same hardware resource.
|
||||
*/
|
||||
for (i = 0; i <= priv->data.slaves; i++)
|
||||
for (i = 0; i < priv->data.slaves; i++)
|
||||
if (priv->slaves[i].ndev->flags & IFF_PROMISC)
|
||||
flag = true;
|
||||
|
||||
@ -578,7 +578,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable)
|
||||
unsigned long timeout = jiffies + HZ;
|
||||
|
||||
/* Disable Learn for all ports */
|
||||
for (i = 0; i <= priv->data.slaves; i++) {
|
||||
for (i = 0; i < priv->data.slaves; i++) {
|
||||
cpsw_ale_control_set(ale, i,
|
||||
ALE_PORT_NOLEARN, 1);
|
||||
cpsw_ale_control_set(ale, i,
|
||||
@ -606,7 +606,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable)
|
||||
cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 0);
|
||||
|
||||
/* Enable Learn for all ports */
|
||||
for (i = 0; i <= priv->data.slaves; i++) {
|
||||
for (i = 0; i < priv->data.slaves; i++) {
|
||||
cpsw_ale_control_set(ale, i,
|
||||
ALE_PORT_NOLEARN, 0);
|
||||
cpsw_ale_control_set(ale, i,
|
||||
|
Loading…
Reference in New Issue
Block a user