summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2007-05-29 16:07:09 -0700
committerRoland Dreier <rolandd@cisco.com>2007-05-29 16:07:09 -0700
commita2cb4a98f243d01f2c8d5799c764bb96ffa66c44 (patch)
tree8bf4e73ab877936da113969c941a51e6aef8d319 /drivers
parentd998ccce020e2cfcf11c6b57503532930ede2894 (diff)
downloadlinux-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.tar.gz
linux-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.tar.bz2
linux-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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mlx4/alloc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
index dfbd5809d744..f8d63d39f592 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;