fsck.f2fs: do not access nat etnries in ckpt before initialization
ckpt->entries is initialized by fsck_init(), but we tried to access it during
f2fs_do_mount().
The call sequence is:
- f2fs_do_mount
- record_fsync_data
- traverse_dnodes
- do_record_fsync_data
- ADDRS_PER_PAGE
- get_node_info
- node_info_from_raw_nat(fsck->entries[nid])
- do_fsck
- fsck_init
- build_nat_area_bitmap
- fsck->entries = calloc(fsck->nr_nat_entries);
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
diff --git a/fsck/mount.c b/fsck/mount.c
index 894ee06..416187f 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -2126,7 +2126,7 @@
struct f2fs_nat_entry raw_nat;
ni->nid = nid;
- if (c.func == FSCK) {
+ if (c.func == FSCK && F2FS_FSCK(sbi)->nr_nat_entries) {
node_info_from_raw_nat(ni, &(F2FS_FSCK(sbi)->entries[nid]));
if (ni->blk_addr)
return;