Commit 9303e0c4 authored by Li Zefan's avatar Li Zefan Committed by Linus Torvalds
Browse files

cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_sprintf_memlist()



It's not necessary to copy cpuset->mems_allowed to a buffer allocated by
NODEMASK_ALLOC().  Just pass it to nodelist_scnprintf().

As spotted by Paul, a side effect is we fix a bug that the function can
return -ENOMEM but the caller doesn't expect negative return value.
Therefore change the return value of cpuset_sprintf_cpulist() and
cpuset_sprintf_memlist() from int to size_t.

Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Acked-by: default avatarPaul Menage <menage@google.com>
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Cc: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f9434ad1
Loading
Loading
Loading
Loading
+8 −16
Original line number Diff line number Diff line
@@ -1610,34 +1610,26 @@ out:
 * across a page fault.
 */

static int cpuset_sprintf_cpulist(char *page, struct cpuset *cs)
static size_t cpuset_sprintf_cpulist(char *page, struct cpuset *cs)
{
	int ret;
	size_t count;

	mutex_lock(&callback_mutex);
	ret = cpulist_scnprintf(page, PAGE_SIZE, cs->cpus_allowed);
	count = cpulist_scnprintf(page, PAGE_SIZE, cs->cpus_allowed);
	mutex_unlock(&callback_mutex);

	return ret;
	return count;
}

static int cpuset_sprintf_memlist(char *page, struct cpuset *cs)
static size_t cpuset_sprintf_memlist(char *page, struct cpuset *cs)
{
	NODEMASK_ALLOC(nodemask_t, mask, GFP_KERNEL);
	int retval;

	if (mask == NULL)
		return -ENOMEM;
	size_t count;

	mutex_lock(&callback_mutex);
	*mask = cs->mems_allowed;
	count = nodelist_scnprintf(page, PAGE_SIZE, cs->mems_allowed);
	mutex_unlock(&callback_mutex);

	retval = nodelist_scnprintf(page, PAGE_SIZE, *mask);

	NODEMASK_FREE(mask);

	return retval;
	return count;
}

static ssize_t cpuset_common_file_read(struct cgroup *cont,