Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a36e59d authored by Sha Zhengju's avatar Sha Zhengju Committed by Linus Torvalds
Browse files

memcg: reduce function dereference



This function dereferences res far too often, so optimize it.

Signed-off-by: default avatarSha Zhengju <handai.szj@taobao.com>
Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Jeff Liu <jeff.liu@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3af33516
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -178,27 +178,30 @@ u64 res_counter_read_u64(struct res_counter *counter, int member)
#endif

int res_counter_memparse_write_strategy(const char *buf,
					unsigned long long *res)
					unsigned long long *resp)
{
	char *end;
	unsigned long long res;

	/* return RES_COUNTER_MAX(unlimited) if "-1" is specified */
	if (*buf == '-') {
		*res = simple_strtoull(buf + 1, &end, 10);
		if (*res != 1 || *end != '\0')
		res = simple_strtoull(buf + 1, &end, 10);
		if (res != 1 || *end != '\0')
			return -EINVAL;
		*res = RES_COUNTER_MAX;
		*resp = RES_COUNTER_MAX;
		return 0;
	}

	*res = memparse(buf, &end);
	res = memparse(buf, &end);
	if (*end != '\0')
		return -EINVAL;

	if (PAGE_ALIGN(*res) >= *res)
		*res = PAGE_ALIGN(*res);
	if (PAGE_ALIGN(res) >= res)
		res = PAGE_ALIGN(res);
	else
		*res = RES_COUNTER_MAX;
		res = RES_COUNTER_MAX;

	*resp = res;

	return 0;
}