net: dsa: tag_{e}dsa.c: Remove dependency on platform data
The platform data nr_chips is used when validating a received packet, to ensure it comes from a know switch chip. The number of possible switches is limited to DSA_MAX_SWITCHES, so use this as the first validation step. The new binding allows holes in the dst->ds[] array, so also ensure ensure there is a valid dsa_switch for this packet. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
6e8e862ded
Коммит
149cafd790
|
@ -107,9 +107,13 @@ static int dsa_rcv(struct sk_buff *skb, struct net_device *dev,
|
|||
* Check that the source device exists and that the source
|
||||
* port is a registered DSA port.
|
||||
*/
|
||||
if (source_device >= dst->pd->nr_chips)
|
||||
if (source_device >= DSA_MAX_SWITCHES)
|
||||
goto out_drop;
|
||||
|
||||
ds = dst->ds[source_device];
|
||||
if (!ds)
|
||||
goto out_drop;
|
||||
|
||||
if (source_port >= DSA_MAX_PORTS || ds->ports[source_port] == NULL)
|
||||
goto out_drop;
|
||||
|
||||
|
|
|
@ -120,9 +120,13 @@ static int edsa_rcv(struct sk_buff *skb, struct net_device *dev,
|
|||
* Check that the source device exists and that the source
|
||||
* port is a registered DSA port.
|
||||
*/
|
||||
if (source_device >= dst->pd->nr_chips)
|
||||
if (source_device >= DSA_MAX_SWITCHES)
|
||||
goto out_drop;
|
||||
|
||||
ds = dst->ds[source_device];
|
||||
if (!ds)
|
||||
goto out_drop;
|
||||
|
||||
if (source_port >= DSA_MAX_PORTS || ds->ports[source_port] == NULL)
|
||||
goto out_drop;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче