ufs_inode_get{frag,block}(): consolidate success exits

These calling conventions are rudiments of pre-2.3 times; they
really need to be sanitized.  This is the first step; next
will be _always_ returning a block number, instead of this
"return a pointer to buffer_head, except when we get to the
actual data" crap.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 5c4a4ab..d65a890 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -226,7 +226,6 @@
 	struct ufs_inode_info *ufsi = UFS_I(inode);
 	struct super_block *sb = inode->i_sb;
 	struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
-	struct buffer_head * result;
 	unsigned blockoff, lastblockoff;
 	u64 tmp, goal, lastfrag, block, lastblock;
 	void *p, *p2;
@@ -249,14 +248,8 @@
 	tmp = ufs_data_ptr_to_cpu(sb, p);
 
 	lastfrag = ufsi->i_lastfrag;
-	if (tmp && fragment < lastfrag) {
-		if (!phys) {
-			return sb_getblk(sb, uspi->s_sbbase + tmp + blockoff);
-		} else {
-			*phys = uspi->s_sbbase + tmp + blockoff;
-			return NULL;
-		}
-	}
+	if (tmp && fragment < lastfrag)
+		goto out;
 
 	lastblock = ufs_fragstoblks (lastfrag);
 	lastblockoff = ufs_fragnum (lastfrag);
@@ -314,20 +307,22 @@
 		return NULL;
 	}
 
-	if (!phys) {
-		result = sb_getblk(sb, uspi->s_sbbase + tmp + blockoff);
-	} else {
-		*phys = uspi->s_sbbase + tmp + blockoff;
-		result = NULL;
+	if (phys) {
 		*err = 0;
 		*new = 1;
 	}
-
 	inode->i_ctime = CURRENT_TIME_SEC;
 	if (IS_SYNC(inode))
 		ufs_sync_inode (inode);
 	mark_inode_dirty(inode);
-	return result;
+out:
+	tmp += uspi->s_sbbase + blockoff;
+	if (!phys) {
+		return sb_getblk(sb, tmp);
+	} else {
+		*phys = tmp;
+		return NULL;
+	}
 
      /* This part : To be implemented ....
         Required only for writing, not required for READ-ONLY.
@@ -367,7 +362,7 @@
 	struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
 	struct buffer_head * result;
 	unsigned blockoff;
-	u64 tmp, goal, block;
+	u64 tmp = 0, goal, block;
 	void *p;
 
 	block = ufs_fragstoblks (fragment);
@@ -392,13 +387,8 @@
 		p = (__fs32 *)bh->b_data + block;
 
 	tmp = ufs_data_ptr_to_cpu(sb, p);
-	if (tmp) {
-		if (!phys)
-			result = sb_getblk(sb, uspi->s_sbbase + tmp + blockoff);
-		else
-			*phys = uspi->s_sbbase + tmp + blockoff;
+	if (tmp)
 		goto out;
-	}
 
 	if (block && (uspi->fs_magic == UFS2_MAGIC ?
 		      (tmp = fs64_to_cpu(sb, ((__fs64 *)bh->b_data)[block-1])) :
@@ -411,12 +401,8 @@
 	if (!tmp)
 		goto out;
 
-	if (!phys) {
-		result = sb_getblk(sb, uspi->s_sbbase + tmp + blockoff);
-	} else {
-		*phys = uspi->s_sbbase + tmp + blockoff;
+	if (new)
 		*new = 1;
-	}
 
 	mark_buffer_dirty(bh);
 	if (IS_SYNC(inode))
@@ -425,6 +411,14 @@
 	mark_inode_dirty(inode);
 out:
 	brelse (bh);
+	if (tmp) {
+		tmp += uspi->s_sbbase + blockoff;
+		if (phys) {
+			*phys = tmp;
+		} else {
+			result = sb_getblk(sb, tmp);
+		}
+	}
 	UFSD("EXIT\n");
 	return result;
 }