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/

Reply via email to