net/mlx4: Verify port number in __mlx4_unregister_mac
authorEugenia Emantayev <eugenia@mellanox.com>
Tue, 8 Jul 2014 08:25:21 +0000 (11:25 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Jul 2014 02:58:44 +0000 (19:58 -0700)
Verify port number to avoid crashes if port number is outside the range.

Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/port.c

index 5d76a60ac053f1d1e2f4f775dd146bb81b9afbc6..9ba0c1ca10d59ffe1a2be56b67439f0013b8ad59 100644 (file)
@@ -244,10 +244,16 @@ EXPORT_SYMBOL_GPL(mlx4_get_base_qpn);
 
 void __mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, u64 mac)
 {
-       struct mlx4_port_info *info = &mlx4_priv(dev)->port[port];
-       struct mlx4_mac_table *table = &info->mac_table;
+       struct mlx4_port_info *info;
+       struct mlx4_mac_table *table;
        int index;
 
+       if (port < 1 || port > dev->caps.num_ports) {
+               mlx4_warn(dev, "invalid port number (%d), aborting...\n", port);
+               return;
+       }
+       info = &mlx4_priv(dev)->port[port];
+       table = &info->mac_table;
        mutex_lock(&table->mutex);
        index = find_index(dev, table, mac);