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