Unverified Commit aae2f80e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14562 f2fs: fix to do sanity check on node blkaddr in truncate_node()

parents 27416dfc 8da0ef34
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -905,6 +905,16 @@ static int truncate_node(struct dnode_of_data *dn)
	if (err)
		return err;

	if (ni.blk_addr != NEW_ADDR &&
		!f2fs_is_valid_blkaddr(sbi, ni.blk_addr, DATA_GENERIC_ENHANCE)) {
		f2fs_err_ratelimited(sbi,
			"nat entry is corrupted, run fsck to fix it, ino:%u, "
			"nid:%u, blkaddr:%u", ni.ino, ni.nid, ni.blk_addr);
		set_sbi_flag(sbi, SBI_NEED_FSCK);
		f2fs_handle_error(sbi, ERROR_INCONSISTENT_NAT);
		return -EFSCORRUPTED;
	}

	/* Deallocate node address */
	f2fs_invalidate_blocks(sbi, ni.blk_addr);
	dec_valid_node_count(sbi, dn->inode, dn->nid == dn->inode->i_ino);