@@ -746,13 +746,15 @@ static int get_checkpoint_version(struct f2fs_sb_info *sbi, block_t cp_addr,
746
746
747
747
crc_offset = le32_to_cpu ((* cp_block )-> checksum_offset );
748
748
if (crc_offset > (blk_size - sizeof (__le32 ))) {
749
+ f2fs_put_page (* cp_page , 1 );
749
750
f2fs_msg (sbi -> sb , KERN_WARNING ,
750
751
"invalid crc_offset: %zu" , crc_offset );
751
752
return - EINVAL ;
752
753
}
753
754
754
755
crc = cur_cp_crc (* cp_block );
755
756
if (!f2fs_crc_valid (sbi , crc , * cp_block , crc_offset )) {
757
+ f2fs_put_page (* cp_page , 1 );
756
758
f2fs_msg (sbi -> sb , KERN_WARNING , "invalid crc value" );
757
759
return - EINVAL ;
758
760
}
@@ -772,24 +774,23 @@ static struct page *validate_checkpoint(struct f2fs_sb_info *sbi,
772
774
err = get_checkpoint_version (sbi , cp_addr , & cp_block ,
773
775
& cp_page_1 , version );
774
776
if (err )
775
- goto invalid_cp1 ;
777
+ return NULL ;
776
778
pre_version = * version ;
777
779
778
780
cp_addr += le32_to_cpu (cp_block -> cp_pack_total_block_count ) - 1 ;
779
781
err = get_checkpoint_version (sbi , cp_addr , & cp_block ,
780
782
& cp_page_2 , version );
781
783
if (err )
782
- goto invalid_cp2 ;
784
+ goto invalid_cp ;
783
785
cur_version = * version ;
784
786
785
787
if (cur_version == pre_version ) {
786
788
* version = cur_version ;
787
789
f2fs_put_page (cp_page_2 , 1 );
788
790
return cp_page_1 ;
789
791
}
790
- invalid_cp2 :
791
792
f2fs_put_page (cp_page_2 , 1 );
792
- invalid_cp1 :
793
+ invalid_cp :
793
794
f2fs_put_page (cp_page_1 , 1 );
794
795
return NULL ;
795
796
}
0 commit comments