Index: kernel/generic/src/adt/bitmap.c
===================================================================
--- kernel/generic/src/adt/bitmap.c	(revision 8c441bdefd6d7359ee094ff5ef11760e2d16b726)
+++ kernel/generic/src/adt/bitmap.c	(revision 10285ad44e20d78dfcacf229b872c3886c8194a8)
@@ -69,5 +69,5 @@
 void bitmap_set_range(bitmap_t *bitmap, size_t start, size_t bits)
 {
-	size_t i;
+	size_t i = 0;
 	size_t aligned_start;
 	size_t lub;	/* leading unaligned bits */
@@ -81,4 +81,10 @@
 	amb = bits > lub ? bits - lub : 0;
 	tab = amb % 8;
+	
+	if (start + bits < aligned_start) {
+		/* Set bits in the middle of byte. */
+		bitmap->map[start / 8] |= ((1 << lub) - 1) << (start & 7);
+		return;
+	}
 	
 	if (lub) {
@@ -105,5 +111,5 @@
 void bitmap_clear_range(bitmap_t *bitmap, size_t start, size_t bits)
 {
-	size_t i;
+	size_t i = 0;
 	size_t aligned_start;
 	size_t lub;	/* leading unaligned bits */
@@ -117,4 +123,10 @@
 	amb = bits > lub ? bits - lub : 0;
 	tab = amb % 8;
+
+	if (start + bits < aligned_start) {
+		/* Set bits in the middle of byte */
+		bitmap->map[start / 8] &= ~(((1 << lub) - 1) << (start & 7));
+		return;
+	}
 
 	if (lub) {
