Oleg Nesterov <oleg@xxxxxxxxxx> writes: > On 12/06, Eric W. Biederman wrote: >> >> +static struct pid *task_pid_type(struct task_struct *task, enum pid_type > type) >> +{ >> + struct pid *pid = NULL; >> + if (type == PIDTYPE_PID) >> + pid = task->pids[type].pid; >> + else if (type < PIDTYPE_MAX) >> + pid = task->group_leader->pids[type].pid; >> + return pid; >> +} > > Looks like a useful helper regardless. Sort of. We don't have any place else that could use it yet. >> +static int eligible_child(enum pid_type type, struct pid *pid, int options, >> + struct task_struct *p) >> { >> int err; >> - struct pid_namespace *ns; >> >> - ns = current->nsproxy->pid_ns; >> - if (pid > 0) { >> - if (task_pid_nr_ns(p, ns) != pid) >> - return 0; >> - } else if (!pid) { >> - if (task_pgrp_nr_ns(p, ns) != task_pgrp_vnr(current)) >> - return 0; >> - } else if (pid != -1) { >> - if (task_pgrp_nr_ns(p, ns) != -pid) >> + if (type < PIDTYPE_MAX) { >> + if (task_pid_type(p, type) != pid) >> return 0; >> } > > Minor, minor nit. > > If type == PIDTYPE_MAX, pid must be == NULL. but task_pid_type(PIDTYPE_PID) > also returns NULL. So we can just do > > if (task_pid_type(p, type) != pid) > return 0; > > Not that it really makes a difference though. No. Your comments are good but I figure this patch is now correct and thus good enough for me. Eric _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers