@@ -708,13 +708,15 @@ static int get_checkpoint_version(struct f2fs_sb_info *sbi, block_t cp_addr,
708
708
709
709
crc_offset = le32_to_cpu ((* cp_block )-> checksum_offset );
710
710
if (crc_offset > (blk_size - sizeof (__le32 ))) {
711
+ f2fs_put_page (* cp_page , 1 );
711
712
f2fs_msg (sbi -> sb , KERN_WARNING ,
712
713
"invalid crc_offset: %zu" , crc_offset );
713
714
return - EINVAL ;
714
715
}
715
716
716
717
crc = cur_cp_crc (* cp_block );
717
718
if (!f2fs_crc_valid (sbi , crc , * cp_block , crc_offset )) {
719
+ f2fs_put_page (* cp_page , 1 );
718
720
f2fs_msg (sbi -> sb , KERN_WARNING , "invalid crc value" );
719
721
return - EINVAL ;
720
722
}
@@ -734,24 +736,23 @@ static struct page *validate_checkpoint(struct f2fs_sb_info *sbi,
734
736
err = get_checkpoint_version (sbi , cp_addr , & cp_block ,
735
737
& cp_page_1 , version );
736
738
if (err )
737
- goto invalid_cp1 ;
739
+ return NULL ;
738
740
pre_version = * version ;
739
741
740
742
cp_addr += le32_to_cpu (cp_block -> cp_pack_total_block_count ) - 1 ;
741
743
err = get_checkpoint_version (sbi , cp_addr , & cp_block ,
742
744
& cp_page_2 , version );
743
745
if (err )
744
- goto invalid_cp2 ;
746
+ goto invalid_cp ;
745
747
cur_version = * version ;
746
748
747
749
if (cur_version == pre_version ) {
748
750
* version = cur_version ;
749
751
f2fs_put_page (cp_page_2 , 1 );
750
752
return cp_page_1 ;
751
753
}
752
- invalid_cp2 :
753
754
f2fs_put_page (cp_page_2 , 1 );
754
- invalid_cp1 :
755
+ invalid_cp :
755
756
f2fs_put_page (cp_page_1 , 1 );
756
757
return NULL ;
757
758
}
0 commit comments