Messages in this thread | | | Subject | Re: cpuset: return -EINVAL for legacy non-subset child creation attempt | From | Zefan Li <> | Date | Wed, 2 Dec 2015 09:20:04 +0800 |
| |
On 2015/12/1 23:22, Mike Galbraith wrote: > A legacy hierarchy child set that is not a subset of its parent is not > a permissions issue, it's an invalid configuration. Return -EINVAL. >
It's sometimes arguable which errno should be used. In this case I don't see why we can't use EACCES. It's even documented in man page.
EACCES Attempted to add, using write(2), a CPU or memory node to a cpuset, when that CPU or memory node was not already in its par- ent.
Let's see another example. In mmap manual:
EACCES A file descriptor refers to a non-regular file.
We can argue fd of a non-regular file is an invalid configuration, but here we return EACCES.
> Signed-off-by: Mike Galbraith <efault@gmx.de> > --- > kernel/cpuset.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > --- a/kernel/cpuset.c > +++ b/kernel/cpuset.c > @@ -472,7 +472,7 @@ static int validate_change(struct cpuset > par = parent_cs(cur); > > /* On legacy hiearchy, we must be a subset of our parent cpuset. */ > - ret = -EACCES; > + ret = -EINVAL; > if (!cgroup_subsys_on_dfl(cpuset_cgrp_subsys) && > !is_cpuset_subset(trial, par)) > goto out; > @@ -481,7 +481,6 @@ static int validate_change(struct cpuset > * If either I or some sibling (!= me) is exclusive, we can't > * overlap > */ > - ret = -EINVAL; > cpuset_for_each_child(c, css, par) { > if ((is_cpu_exclusive(trial) || is_cpu_exclusive(c)) && > c != cur && > > >
| |