ext2 fixes (Steve VanDeBogart)
diff --git a/src/libdiskfs/ext2.c b/src/libdiskfs/ext2.c
index 8473aa3..ddd3d7b 100644
--- a/src/libdiskfs/ext2.c
+++ b/src/libdiskfs/ext2.c
@@ -88,7 +88,7 @@
 	Group *g;
 	Block *gb;
 	uchar *bits;
-	u32int bno, boff;
+	u32int bno, boff, bitpos;
 	Ext2 *fs;
 
 	fs = fsys->priv;
@@ -115,11 +115,12 @@
 	if(debug)
 		fprint(2, "group %d bitblock=%d...", bno/fs->blockspergroup, g->bitblock);
 */
+	bitpos = (u64int)g->bitblock*fs->blocksize;
+	blockput(gb);
 
-	if((bitb = diskread(fs->disk, fs->blocksize, (u64int)g->bitblock*fs->blocksize)) == nil){
+	if((bitb = diskread(fs->disk, fs->blocksize, bitpos)) == nil){
 		if(debug)
 			fprint(2, "loading bitblock: %r...");
-		blockput(gb);
 		return nil;
 	}
 	bits = bitb->data;
@@ -128,9 +129,9 @@
 		if(debug)
 			fprint(2, "block %d not allocated...", bno);
 		blockput(bitb);
-		blockput(gb);
 		return nil;
 	}
+	blockput(bitb);
 
 	bno += fs->firstblock;
 	return diskread(fs->disk, fs->blocksize, (u64int)bno*fs->blocksize);