[DRBD-cvs] drbd by phil; LGE pointed our that there is an off by ...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Tue, 6 Jul 2004 21:09:23 +0200 (CEST)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_bitmap.c
Log Message:
LGE pointed our that there is an off by one error in a corner case.
Fixed.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_bitmap.c,v
retrieving revision 1.1.2.10
retrieving revision 1.1.2.11
diff -u -3 -r1.1.2.10 -r1.1.2.11
--- drbd_bitmap.c 6 Jul 2004 09:39:11 -0000 1.1.2.10
+++ drbd_bitmap.c 6 Jul 2004 19:09:18 -0000 1.1.2.11
@@ -242,10 +242,12 @@
{
const unsigned long mask = (1 << (b->bm_bits & (BITS_PER_LONG-1))) -1;
size_t w = b->bm_bits >> LN2_BPL;
- int cleared;
+ int cleared=0;
- cleared = hweight_long(b->bm[w] & ~mask);
- b->bm[w++] &= mask;
+ if ( w < b->bm_words ) {
+ cleared = hweight_long(b->bm[w] & ~mask);
+ b->bm[w++] &= mask;
+ }
if ( w < b->bm_words ) {
cleared += hweight_long(b->bm[w]);