diff options
author | Roland Dreier <rolandd@cisco.com> | 2007-05-29 16:07:09 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-05-29 16:07:09 -0700 |
commit | a2cb4a98f243d01f2c8d5799c764bb96ffa66c44 (patch) | |
tree | 8bf4e73ab877936da113969c941a51e6aef8d319 | |
parent | d998ccce020e2cfcf11c6b57503532930ede2894 (diff) | |
download | linux-3.10-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.tar.gz linux-3.10-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.tar.bz2 linux-3.10-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.zip |
IB/mlx4: Fix last allocated object tracking in bitmap allocator
Set last allocated object to the object after the one just allocated
before ORing in the extra top bits. Also handle the case where this
wraps around.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/net/mlx4/alloc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c index dfbd5809d74..f8d63d39f59 100644 --- a/drivers/net/mlx4/alloc.c +++ b/drivers/net/mlx4/alloc.c @@ -51,8 +51,8 @@ u32 mlx4_bitmap_alloc(struct mlx4_bitmap *bitmap) if (obj < bitmap->max) { set_bit(obj, bitmap->table); + bitmap->last = (obj + 1) & (bitmap->max - 1); obj |= bitmap->top; - bitmap->last = obj + 1; } else obj = -1; |