lkml.org 
[lkml]   [2017]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 1/2] pid: delete RESERVED_PIDS
RESERVED_PIDS had a noble goal: to protect root from PID exhaustion
since at least ~2.5.40 except it never did that because there was no
capability or uid checks.

Allow small pids to be allocated after rollover, there is nothing sacred
about them.

Resource exhaustion should be handled by rlimits and/or kernel memory
accounting.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

kernel/pid.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -48,9 +48,7 @@ struct pid init_struct_pid = INIT_STRUCT_PID;

int pid_max = PID_MAX_DEFAULT;

-#define RESERVED_PIDS 300
-
-int pid_max_min = RESERVED_PIDS + 1;
+int pid_max_min = 301;
int pid_max_max = PID_MAX_LIMIT;

static inline int mk_pid(struct pid_namespace *pid_ns,
@@ -157,13 +155,13 @@ static int alloc_pidmap(struct pid_namespace *pid_ns)

pid = last + 1;
if (pid >= pid_max)
- pid = RESERVED_PIDS;
+ pid = 1;
offset = pid & BITS_PER_PAGE_MASK;
map = &pid_ns->pidmap[pid/BITS_PER_PAGE];
/*
* If last_pid points into the middle of the map->page we
* want to scan this bitmap block twice, the second time
- * we start with offset == 0 (or RESERVED_PIDS).
+ * we start with offset == 0.
*/
max_scan = DIV_ROUND_UP(pid_max, BITS_PER_PAGE) - !offset;
for (i = 0; i <= max_scan; ++i) {
@@ -203,7 +201,7 @@ static int alloc_pidmap(struct pid_namespace *pid_ns)
offset = 0;
} else {
map = &pid_ns->pidmap[0];
- offset = RESERVED_PIDS;
+ offset = 1;
if (unlikely(last == offset))
break;
}
\
 
 \ /
  Last update: 2017-09-09 22:27    [W:0.769 / U:0.292 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site