Index: uspace/srv/fs/minixfs/mfs_balloc.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_balloc.c	(revision ba5beaf12001f0e01eba4c1c5cb4e2ae7feb0d6e)
+++ uspace/srv/fs/minixfs/mfs_balloc.c	(revision 77a2d77d1c922c5b59855556b532386f7248baea)
@@ -12,7 +12,7 @@
 {
 	struct mfs_sb_info *sbi;
-	unsigned start_block;
+	uint32_t limit;
 	unsigned long nblocks;
-	unsigned *search, i;
+	unsigned *search, i, start_block;
 	int r, freebit;
 
@@ -25,4 +25,5 @@
 		start_block = 2 + sbi->ibmap_blocks;
 		nblocks = sbi->zbmap_blocks;
+		limit = sbi->nzones;
 	} else {
 		/*bid == BMAP_INODE*/
@@ -30,4 +31,5 @@
 		start_block = 2;
 		nblocks = sbi->ibmap_blocks;
+		limit = sbi->ninodes;
 	}
 
@@ -52,9 +54,14 @@
 		/*Free bit found, compute real index*/
 		*idx = (freebit + sbi->block_size * 8 * i);
+		if (*idx > limit) {
+			/*Index is beyond the limit, it is invalid*/
+			block_put(b);
+			break;
+		}
+
 		*search = i;
 		b->dirty = true;
 		block_put(b);
 		goto found;
-		
 	}
 
