generic: rtl8366: prevent modifications of VLAN 0
[openwrt/svn-archive/archive.git] / target / linux / generic-2.6 / files / drivers / net / phy / rtl8366rb.c
index 2739031e2192a578604b95557f969a808986b996..dcc4d6c921999127696237f33c6fbaa0803c0fbd 100644 (file)
@@ -1150,7 +1150,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev,
        struct rtl8366rb *rtl = sw_to_rtl8366rb(dev);
        char *buf = rtl->buf;
 
-       if (val->port_vlan >= RTL8366_NUM_VLANS)
+       if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS)
                return -EINVAL;
 
        memset(buf, '\0', sizeof(rtl->buf));
@@ -1288,7 +1288,7 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev,
        struct switch_port *port;
        int i;
 
-       if (val->port_vlan >= RTL8366_NUM_VLANS)
+       if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS)
                return -EINVAL;
 
        rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc);
@@ -1317,7 +1317,7 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev,
        struct switch_port *port;
        int i;
 
-       if (val->port_vlan >= RTL8366_NUM_VLANS)
+       if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS)
                return -EINVAL;
 
        rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc);