diff --git a/ds/bitmap.c b/ds/bitmap.c index 064d10c..514be59 100644 --- a/ds/bitmap.c +++ b/ds/bitmap.c @@ -25,7 +25,7 @@ void bitmap_set(unsigned long *map, unsigned long bit) void bitmap_clear(unsigned long *map, unsigned long bit) { unsigned long index = bit / BITS_PER_WORD; - unsigned long offset = bit & (BITS_PER_WORD - 1); + unsigned long offset = (BITS_PER_WORD - bit - 1) & (BITS_PER_WORD - 1); unsigned long mask = 1ul << offset; map[index] &= ~mask;