Commit a6810312 authored by Chengguang Xu's avatar Chengguang Xu Committed by Jan Kara
Browse files

quota: check quota type in early stage

Check quota type in early stage so we can avoid many
unncessary operations when the type is wrong.

Link: https://lore.kernel.org/r/20191008145059.21402-1-cgxu519@mykernel.net


Signed-off-by: default avatarChengguang Xu <cgxu519@mykernel.net>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 24fc755f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -60,8 +60,6 @@ static int quota_sync_all(int type)
{
	int ret;

	if (type >= MAXQUOTAS)
		return -EINVAL;
	ret = security_quotactl(Q_SYNC, type, 0, NULL);
	if (!ret)
		iterate_supers(quota_sync_one, &type);
@@ -686,8 +684,6 @@ static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id,
{
	int ret;

	if (type >= MAXQUOTAS)
		return -EINVAL;
	type = array_index_nospec(type, MAXQUOTAS);
	/*
	 * Quota not supported on this fs? Check this before s_quota_types
@@ -831,6 +827,9 @@ int kernel_quotactl(unsigned int cmd, const char __user *special,
	cmds = cmd >> SUBCMDSHIFT;
	type = cmd & SUBCMDMASK;

	if (type >= MAXQUOTAS)
		return -EINVAL;

	/*
	 * As a special case Q_SYNC can be called without a specific device.
	 * It will iterate all superblocks that have quota enabled and call