The current error codes returned when a the per user per user
namespace limit are hit (EINVAL, EUSERS, and ENFILE) are wrong. I
asked for advice on linux-api and it we made clear that those were
the wrong error code, but a correct effor code was not suggested.
The best general error code I have found for hitting a resource limit
is ENOSPC. It is not perfect but as it is unambiguous it will serve
until someone comes up with a better error code.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
ucounts = inc_mnt_namespaces(user_ns);
if (!ucounts)
- return ERR_PTR(-ENFILE);
+ return ERR_PTR(-ENOSPC);
new_ns = kmalloc(sizeof(struct mnt_namespace), GFP_KERNEL);
if (!new_ns) {
struct ucounts *ucounts;
int err;
- err = -ENFILE;
+ err = -ENOSPC;
ucounts = inc_ipc_namespaces(user_ns);
if (!ucounts)
goto fail;
ucounts = inc_cgroup_namespaces(user_ns);
if (!ucounts)
- return ERR_PTR(-ENFILE);
+ return ERR_PTR(-ENOSPC);
/* It is not safe to take cgroup_mutex here */
spin_lock_irq(&css_set_lock);
int i;
int err;
- err = -EINVAL;
+ err = -ENOSPC;
if (level > MAX_PID_NS_LEVEL)
goto out;
ucounts = inc_pid_namespaces(user_ns);
struct ucounts *ucounts;
int ret, i;
- ret = -EUSERS;
+ ret = -ENOSPC;
if (parent_ns->level > 32)
goto fail;
struct ucounts *ucounts;
int err;
- err = -ENFILE;
+ err = -ENOSPC;
ucounts = inc_uts_namespaces(user_ns);
if (!ucounts)
goto fail;
ucounts = inc_net_namespaces(user_ns);
if (!ucounts)
- return ERR_PTR(-ENFILE);
+ return ERR_PTR(-ENOSPC);
net = net_alloc();
if (!net) {