Index: oldkernel/linux/fs/block_dev.c
diff -u linux/fs/block_dev.c:1.1.1.1 linux/fs/block_dev.c:1.2
--- linux/fs/block_dev.c:1.1.1.1	Wed May 31 12:33:48 2000
+++ linux/fs/block_dev.c	Thu Jun  1 15:17:21 2000
@@ -92,6 +92,7 @@
 		      blocks = read_ahead[MAJOR(dev)] / (blocksize >> 9) / 2;
 		      if (block + blocks > size) blocks = size - block;
 		      if (blocks > NBUF) blocks=NBUF;
+		      if (!blocks) blocks = 1;
 		      for(i=1; i<blocks; i++)
 		      {
 		        bhlist[i] = getblk (dev, block+i, blocksize);
@@ -105,8 +106,10 @@
 		    ll_rw_block(READ, blocks, bhlist);
 		    for(i=1; i<blocks; i++) brelse(bhlist[i]);
 		    wait_on_buffer(bh);
-		    if (!buffer_uptodate(bh))
+		    if (!buffer_uptodate(bh)) {
+			  brelse(bh);
 			  return written ? written : -EIO;
+		    }
 		  };
 		};
 #endif
