]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/mlx4: Check port_num before using it in mlx4_ib_port_link_layer
authorMoshe Lazer <moshel@mellanox.com>
Tue, 25 Mar 2014 08:54:15 +0000 (10:54 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 21:45:19 +0000 (14:45 -0700)
In mlx4_ib_port_link_layer func port_num is used as table
index without checking its validity.

Signed-off-by: Moshe Lazer <moshel@mellanox.com>
(Ported from OFED 2.4)

Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
drivers/infiniband/hw/mlx4/main.c

index 445f418990697d5c1810407f6660690ff5efeea4..0092e0acbf1358f90e86dc2be4dfec96c12059fb 100644 (file)
@@ -242,8 +242,17 @@ mlx4_ib_port_link_layer(struct ib_device *device, u8 port_num)
 {
        struct mlx4_dev *dev = to_mdev(device)->dev;
 
-       return dev->caps.port_mask[port_num] == MLX4_PORT_TYPE_IB ?
-               IB_LINK_LAYER_INFINIBAND : IB_LINK_LAYER_ETHERNET;
+       if (port_num > MLX4_MAX_PORTS || port_num == 0)
+               return IB_LINK_LAYER_UNSPECIFIED;
+
+       switch (dev->caps.port_mask[port_num]) {
+       case MLX4_PORT_TYPE_IB:
+               return IB_LINK_LAYER_INFINIBAND;
+       case MLX4_PORT_TYPE_ETH:
+               return IB_LINK_LAYER_ETHERNET;
+       }
+
+       return IB_LINK_LAYER_UNSPECIFIED;
 }
 
 static int ib_link_query_port(struct ib_device *ibdev, u8 port,