On Wed 30-01-08 22:03:58, [EMAIL PROTECTED] wrote: > - 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]> Acked-by: Jan Kara <[EMAIL PROTECTED]>
Honza > --- > 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 > -- Jan Kara <[EMAIL PROTECTED]> SUSE Labs, CR -- 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/