diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 966cced0f88e7d2f6583bc85c2a8c7e0527ba0c2..9bf10285c6289d05a8ed6a3d26ab2b42fc306e23 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -403,7 +403,9 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
 
 	if (!create) {
 		phys64 = ufs_frag_map(inode, offsets, depth);
-		goto out;
+		if (phys64)
+			map_bh(bh_result, sb, phys64 + frag);
+		return 0;
 	}
 
         /* This code entered only while writing ....? */