net/mlx4_core: Check port out-of-range before using in mlx4_slave_cap
The range check was performed after using the port number. Reverse this to prevent a potential array overflow. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b91cb3ebcd
commit
6230bb234d
|
@ -485,15 +485,15 @@ static int mlx4_slave_cap(struct mlx4_dev *dev)
|
||||||
dev->caps.num_mgms = 0;
|
dev->caps.num_mgms = 0;
|
||||||
dev->caps.num_amgms = 0;
|
dev->caps.num_amgms = 0;
|
||||||
|
|
||||||
for (i = 1; i <= dev->caps.num_ports; ++i)
|
|
||||||
dev->caps.port_mask[i] = dev->caps.port_type[i];
|
|
||||||
|
|
||||||
if (dev->caps.num_ports > MLX4_MAX_PORTS) {
|
if (dev->caps.num_ports > MLX4_MAX_PORTS) {
|
||||||
mlx4_err(dev, "HCA has %d ports, but we only support %d, "
|
mlx4_err(dev, "HCA has %d ports, but we only support %d, "
|
||||||
"aborting.\n", dev->caps.num_ports, MLX4_MAX_PORTS);
|
"aborting.\n", dev->caps.num_ports, MLX4_MAX_PORTS);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 1; i <= dev->caps.num_ports; ++i)
|
||||||
|
dev->caps.port_mask[i] = dev->caps.port_type[i];
|
||||||
|
|
||||||
if (dev->caps.uar_page_size * (dev->caps.num_uars -
|
if (dev->caps.uar_page_size * (dev->caps.num_uars -
|
||||||
dev->caps.reserved_uars) >
|
dev->caps.reserved_uars) >
|
||||||
pci_resource_len(dev->pdev, 2)) {
|
pci_resource_len(dev->pdev, 2)) {
|
||||||
|
|
Loading…
Reference in New Issue