- move all brelse(ibh) after main if, because it's called
  on every path except one where ibh is null
- move variables to the most inner blocks

Signed-off-by: Marcin Slusarz <[EMAIL PROTECTED]>
Cc: Jan Kara <[EMAIL PROTECTED]>
---
 fs/udf/inode.c |   52 +++++++++++++++++++++++-----------------------------
 1 files changed, 23 insertions(+), 29 deletions(-)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 68db2ea..c2d0477 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1116,42 +1116,36 @@ static void __udf_read_inode(struct inode *inode)
        fe = (struct fileEntry *)bh->b_data;
 
        if (fe->icbTag.strategyType == cpu_to_le16(4096)) {
-               struct buffer_head *ibh = NULL, *nbh = NULL;
-               struct indirectEntry *ie;
+               struct buffer_head *ibh;
 
                ibh = udf_read_ptagged(inode->i_sb, iinfo->i_location, 1,
                                        &ident);
-               if (ident == TAG_IDENT_IE) {
-                       if (ibh) {
-                               kernel_lb_addr loc;
-                               ie = (struct indirectEntry *)ibh->b_data;
-
-                               loc = lelb_to_cpu(ie->indirectICB.extLocation);
-
-                               if (ie->indirectICB.extLength &&
-                                   (nbh = udf_read_ptagged(inode->i_sb, loc, 0,
-                                                           &ident))) {
-                                       if (ident == TAG_IDENT_FE ||
-                                           ident == TAG_IDENT_EFE) {
-                                               memcpy(&iinfo->i_location,
-                                                      &loc,
-                                                      sizeof(kernel_lb_addr));
-                                               brelse(bh);
-                                               brelse(ibh);
-                                               brelse(nbh);
-                                               __udf_read_inode(inode);
-                                               return;
-                                       } else {
-                                               brelse(nbh);
-                                               brelse(ibh);
-                                       }
-                               } else {
+               if (ident == TAG_IDENT_IE && ibh) {
+                       struct buffer_head *nbh = NULL;
+                       kernel_lb_addr loc;
+                       struct indirectEntry *ie;
+
+                       ie = (struct indirectEntry *)ibh->b_data;
+                       loc = lelb_to_cpu(ie->indirectICB.extLocation);
+
+                       if (ie->indirectICB.extLength &&
+                               (nbh = udf_read_ptagged(inode->i_sb, loc, 0,
+                                                       &ident))) {
+                               if (ident == TAG_IDENT_FE ||
+                                       ident == TAG_IDENT_EFE) {
+                                       memcpy(&iinfo->i_location,
+                                               &loc,
+                                               sizeof(kernel_lb_addr));
+                                       brelse(bh);
                                        brelse(ibh);
+                                       brelse(nbh);
+                                       __udf_read_inode(inode);
+                                       return;
                                }
+                               brelse(nbh);
                        }
-               } else {
-                       brelse(ibh);
                }
+               brelse(ibh);
        } else if (fe->icbTag.strategyType != cpu_to_le16(4)) {
                printk(KERN_ERR "udf: unsupported strategy type: %d\n",
                       le16_to_cpu(fe->icbTag.strategyType));
-- 
1.5.3.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to