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

!12506 ocfs2: cancel dqi_sync_work before freeing oinfo

parents 0a6dbdab 2268f7fb
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -689,7 +689,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type)
	int status;
	struct buffer_head *bh = NULL;
	struct ocfs2_quota_recovery *rec;
	int locked = 0;
	int locked = 0, global_read = 0;

	info->dqi_max_spc_limit = 0x7fffffffffffffffLL;
	info->dqi_max_ino_limit = 0x7fffffffffffffffLL;
@@ -697,6 +697,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type)
	if (!oinfo) {
		mlog(ML_ERROR, "failed to allocate memory for ocfs2 quota"
			       " info.");
		status = -ENOMEM;
		goto out_err;
	}
	info->dqi_priv = oinfo;
@@ -709,6 +710,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type)
	status = ocfs2_global_read_info(sb, type);
	if (status < 0)
		goto out_err;
	global_read = 1;

	status = ocfs2_inode_lock(lqinode, &oinfo->dqi_lqi_bh, 1);
	if (status < 0) {
@@ -779,10 +781,12 @@ static int ocfs2_local_read_info(struct super_block *sb, int type)
		if (locked)
			ocfs2_inode_unlock(lqinode, 1);
		ocfs2_release_local_quota_bitmaps(&oinfo->dqi_chunk);
		if (global_read)
			cancel_delayed_work_sync(&oinfo->dqi_sync_work);
		kfree(oinfo);
	}
	brelse(bh);
	return -1;
	return status;
}

/* Write local info to quota file */