@@ -629,23 +629,18 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo,
629
629
goto out ;
630
630
}
631
631
632
- static void filelayout_free_fh_array (struct nfs4_filelayout_segment * fl )
632
+ static void _filelayout_free_lseg (struct nfs4_filelayout_segment * fl )
633
633
{
634
634
int i ;
635
635
636
- for (i = 0 ; i < fl -> num_fh ; i ++ ) {
637
- if (!fl -> fh_array [i ])
638
- break ;
639
- kfree (fl -> fh_array [i ]);
636
+ if (fl -> fh_array ) {
637
+ for (i = 0 ; i < fl -> num_fh ; i ++ ) {
638
+ if (!fl -> fh_array [i ])
639
+ break ;
640
+ kfree (fl -> fh_array [i ]);
641
+ }
642
+ kfree (fl -> fh_array );
640
643
}
641
- kfree (fl -> fh_array );
642
- fl -> fh_array = NULL ;
643
- }
644
-
645
- static void
646
- _filelayout_free_lseg (struct nfs4_filelayout_segment * fl )
647
- {
648
- filelayout_free_fh_array (fl );
649
644
kfree (fl );
650
645
}
651
646
@@ -716,21 +711,21 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo,
716
711
/* Do we want to use a mempool here? */
717
712
fl -> fh_array [i ] = kmalloc (sizeof (struct nfs_fh ), gfp_flags );
718
713
if (!fl -> fh_array [i ])
719
- goto out_err_free ;
714
+ goto out_err ;
720
715
721
716
p = xdr_inline_decode (& stream , 4 );
722
717
if (unlikely (!p ))
723
- goto out_err_free ;
718
+ goto out_err ;
724
719
fl -> fh_array [i ]-> size = be32_to_cpup (p ++ );
725
720
if (sizeof (struct nfs_fh ) < fl -> fh_array [i ]-> size ) {
726
721
printk (KERN_ERR "NFS: Too big fh %d received %d\n" ,
727
722
i , fl -> fh_array [i ]-> size );
728
- goto out_err_free ;
723
+ goto out_err ;
729
724
}
730
725
731
726
p = xdr_inline_decode (& stream , fl -> fh_array [i ]-> size );
732
727
if (unlikely (!p ))
733
- goto out_err_free ;
728
+ goto out_err ;
734
729
memcpy (fl -> fh_array [i ]-> data , p , fl -> fh_array [i ]-> size );
735
730
dprintk ("DEBUG: %s: fh len %d\n" , __func__ ,
736
731
fl -> fh_array [i ]-> size );
@@ -739,8 +734,6 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo,
739
734
__free_page (scratch );
740
735
return 0 ;
741
736
742
- out_err_free :
743
- filelayout_free_fh_array (fl );
744
737
out_err :
745
738
__free_page (scratch );
746
739
return - EIO ;
0 commit comments