From: Amir Vadai Date: Thu, 4 Aug 2011 12:42:09 +0000 (+0300) Subject: mlx4_core: Do not allow mlx4_bitmap_init to reserve more slots than available X-Git-Tag: v4.1.12-92~293^2~1^2~91 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4e4fab00a3c3768bc1b7473f22075592da4afcbf;p=users%2Fjedix%2Flinux-maple.git mlx4_core: Do not allow mlx4_bitmap_init to reserve more slots than available Caused a kernel crash when log_num_mac was too big Signed-off-by: Amir Vadai (Ported from Mellanox OFED 2.4) Signed-off-by: Mukesh Kacker --- diff --git a/drivers/net/ethernet/mellanox/mlx4/alloc.c b/drivers/net/ethernet/mellanox/mlx4/alloc.c index eb6d038f5de90..43d3e24f64987 100644 --- a/drivers/net/ethernet/mellanox/mlx4/alloc.c +++ b/drivers/net/ethernet/mellanox/mlx4/alloc.c @@ -181,6 +181,9 @@ int mlx4_bitmap_init(struct mlx4_bitmap *bitmap, u32 num, u32 mask, if (num != roundup_pow_of_two(num)) return -EINVAL; + if (reserved_bot + reserved_top >= num) + return -EINVAL; + bitmap->last = 0; bitmap->top = 0; bitmap->max = num - reserved_top;