Skip to content

Commit b26ebfe

Browse files
cminyardChristian Brauner
authored andcommitted
pid: Fix error return value in some cases
Recent changes to alloc_pid() allow the pid number to be specified on the command line. If set_tid_size is set, then the code scanning the levels will hard-set retval to -EPERM, overriding it's previous -ENOMEM value. After the code scanning the levels, there are error returns that do not set retval, assuming it is still set to -ENOMEM. So set retval back to -ENOMEM after scanning the levels. Fixes: 49cb2fc ("fork: extend clone3() to support setting a PID") Signed-off-by: Corey Minyard <[email protected]> Acked-by: Christian Brauner <[email protected]> Cc: Andrei Vagin <[email protected]> Cc: Dmitry Safonov <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Adrian Reber <[email protected]> Cc: <[email protected]> # 5.5 Link: https://lore.kernel.org/r/[email protected] [[email protected]: fixup commit message] Signed-off-by: Christian Brauner <[email protected]>
1 parent 98d54f8 commit b26ebfe

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

kernel/pid.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid,
247247
tmp = tmp->parent;
248248
}
249249

250+
retval = -ENOMEM;
251+
250252
if (unlikely(is_child_reaper(pid))) {
251253
if (pid_ns_prepare_proc(ns))
252254
goto out_free;

0 commit comments

Comments
 (0)