From 78f676f4c9fc7e850376bb8a820f1cbfa99242d3 Mon Sep 17 00:00:00 2001 From: Moshe Lazer Date: Tue, 25 Mar 2014 10:54:15 +0200 Subject: [PATCH] IB/mlx4: Check port_num before using it in mlx4_ib_port_link_layer In mlx4_ib_port_link_layer func port_num is used as table index without checking its validity. Signed-off-by: Moshe Lazer (Ported from OFED 2.4) Signed-off-by: Mukesh Kacker --- drivers/infiniband/hw/mlx4/main.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c index 445f41899069..0092e0acbf13 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -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, -- 2.50.1