[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]);