summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/rocker/rocker.c
diff options
context:
space:
mode:
authorScott Feldman2015-06-01 20:39:03 +0200
committerDavid S. Miller2015-06-02 02:00:08 +0200
commitcec04a60bcd72ce43618ca62da5e0f508e694703 (patch)
treed2da4e7f22cb6fcb4ada5e661de707b334c5b418 /drivers/net/ethernet/rocker/rocker.c
parentrocker: zero allocate ports array (diff)
downloadkernel-qcow2-linux-cec04a60bcd72ce43618ca62da5e0f508e694703.tar.gz
kernel-qcow2-linux-cec04a60bcd72ce43618ca62da5e0f508e694703.tar.xz
kernel-qcow2-linux-cec04a60bcd72ce43618ca62da5e0f508e694703.zip
rocker: cleanup vlan table on error adding vlan
Basic house keeping: If there is an error adding the router MAC for this vlan, removing the just installed VLAN table entry to leave device in same state as before failure. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/rocker/rocker.c')
-rw-r--r--drivers/net/ethernet/rocker/rocker.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index b0fb24509124..bba9557372a7 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -4320,7 +4320,12 @@ static int rocker_port_vlan_add(struct rocker_port *rocker_port,
if (err)
return err;
- return rocker_port_router_mac(rocker_port, trans, 0, htons(vid));
+ err = rocker_port_router_mac(rocker_port, trans, 0, htons(vid));
+ if (err)
+ rocker_port_vlan(rocker_port, trans,
+ ROCKER_OP_FLAG_REMOVE, vid);
+
+ return err;
}
static int rocker_port_vlans_add(struct rocker_port *rocker_port,