mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: <linux-kernel@vger.kernel.org>
Cc: <vserver@list.linux-vserver.org>,
	Herbert Poetzl <herbert@13thfloor.at>,
	"Serge E. Hallyn" <serue@us.ibm.com>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Dave Hansen <haveblue@us.ibm.com>,
	Arjan van de Ven <arjan@infradead.org>,
	Suleiman Souhlal <ssouhlal@FreeBSD.org>,
	Hubertus Franke <frankeh@watson.ibm.com>,
	Cedric Le Goater <clg@fr.ibm.com>,
	Kyle Moffett <mrmacman_g4@mac.com>, Kirill Korotaev <dev@sw.ru>,
	Greg <gkurz@fr.ibm.com>, Linus Torvalds <torvalds@osdl.org>,
	Andrew Morton <akpm@osdl.org>, Greg KH <greg@kroah.com>,
	Rik van Riel <riel@redhat.com>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Andrey Savochkin <saw@sawoct.com>,
	Kirill Korotaev <dev@openvz.org>, Andi Kleen <ak@suse.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Jeff Garzik <jgarzik@pobox.com>,
	Trond Myklebust <trond.myklebust@fys.uio.no>,
	Jes Sorensen <jes@sgi.com>
Subject: [RFC][PATCH 19/20] pspace: Upcate the pid_max sysctl to work in a per pspace fashion
Date: Mon, 06 Feb 2006 13:07:56 -0700	[thread overview]
Message-ID: <m1irrsjlnn.fsf_-_@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <m1mzh4jlrl.fsf_-_@ebiederm.dsl.xmission.com> (Eric W. Biederman's message of "Mon, 06 Feb 2006 13:05:34 -0700")


It is a pain to export anything in sysctl that is not a global
variable but it is possible.  So for backwards compatibility.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>


---

 kernel/sysctl.c |   79 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 75 insertions(+), 4 deletions(-)

dc9bb041416aeaa92add46c7fe7689099768d8fa
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 8e1bdc5..89476f6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -44,6 +44,7 @@
 #include <linux/limits.h>
 #include <linux/dcache.h>
 #include <linux/syscalls.h>
+#include <linux/pspace.h>
 
 #include <asm/uaccess.h>
 #include <asm/processor.h>
@@ -64,7 +65,6 @@ extern int core_uses_pid;
 extern int suid_dumpable;
 extern char core_pattern[];
 extern int cad_pid;
-extern int pid_max;
 extern int min_free_kbytes;
 extern int printk_ratelimit_jiffies;
 extern int printk_ratelimit_burst;
@@ -132,6 +132,11 @@ static int parse_table(int __user *, int
 		       ctl_table *, void **);
 static int proc_doutsstring(ctl_table *table, int write, struct file *filp,
 		  void __user *buffer, size_t *lenp, loff_t *ppos);
+static int proc_pidmax(ctl_table *table, int write, struct file *filp,
+			void __user *buffer, size_t *lenp, loff_t *ppos);
+static int sysctl_pidmax(ctl_table *table, int __user *name, int nlen,
+		void __user *oldval, size_t __user *oldlenp,
+		void __user *newval, size_t newlen, void **context);
 
 static ctl_table root_table[];
 static struct ctl_table_header root_table_header =
@@ -579,11 +584,11 @@ static ctl_table kern_table[] = {
 	{
 		.ctl_name	= KERN_PIDMAX,
 		.procname	= "pid_max",
-		.data		= &pid_max,
+		.data		= (void *)1,
 		.maxlen		= sizeof (int),
 		.mode		= 0644,
-		.proc_handler	= &proc_dointvec_minmax,
-		.strategy	= sysctl_intvec,
+		.proc_handler	= &proc_pidmax,
+		.strategy	= sysctl_pidmax,
 		.extra1		= &pid_max_min,
 		.extra2		= &pid_max_max,
 	},
@@ -2157,6 +2162,29 @@ int proc_dointvec_ms_jiffies(ctl_table *
 				do_proc_dointvec_ms_jiffies_conv, NULL);
 }
 
+static int do_pidmax_conv(int *negp, unsigned long *lvalp,
+				int *valp, int write, void *data)
+{
+	if (write) {
+		int val = *negp ? -*lvalp : *lvalp;
+		if ((pid_max_min > val) || (pid_max_max < val))
+			return -EINVAL;
+		current->pspace->max = val;
+	} else {
+		*negp = 0;
+		*lvalp = (unsigned long)(current->pspace->max);
+	}
+	return 0;
+}
+
+static int proc_pidmax(ctl_table *table, int write, struct file *filp,
+			void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+	return do_proc_dointvec(table, write, filp, buffer, lenp, ppos,
+				do_pidmax_conv, NULL);
+}
+
+
 #else /* CONFIG_PROC_FS */
 
 int proc_dostring(ctl_table *table, int write, struct file *filp,
@@ -2222,6 +2250,12 @@ int proc_doulongvec_ms_jiffies_minmax(ct
 }
 
 
+static int proc_pidmax(ctl_table *table, int write, struct file *filp,
+			void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+	return -ENOSYS;
+}
+
 #endif /* CONFIG_PROC_FS */
 
 
@@ -2367,6 +2401,43 @@ int sysctl_ms_jiffies(ctl_table *table, 
 	return 1;
 }
 
+static int sysctl_pidmax(ctl_table *table, int __user *name, int nlen,
+		void __user *oldval, size_t __user *oldlenp,
+		void __user *newval, size_t newlen, void **context)
+{
+	int result = 0;
+	if (oldval && oldlenp) {
+		size_t len;
+		if (get_user(len, oldlenp))
+			return -EFAULT;
+		if (len < sizeof(int))
+			return -EINVAL;
+		if (put_user(current->pspace->max, oldval))
+			return -EFAULT;
+		if (put_user(sizeof(int), oldlenp))
+			return -EFAULT;
+		result = 1;
+	}
+	if (newval && newlen) {
+		int __user *vec = (int __user *)newval;
+		int value;
+
+		if (newlen != sizeof(int))
+			return -EINVAL;
+
+		if (get_user(value, vec))
+			return -EFAULT;
+		if (value < pid_max_min)
+			return -EINVAL;
+		if (value > pid_max_max)
+			return -EINVAL;
+
+		current->pspace->max = value;
+		result = 1;
+	}
+	return result;
+}
+
 #else /* CONFIG_SYSCTL */
 
 
-- 
1.1.5.g3480


  reply	other threads:[~2006-02-06 20:10 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-06 19:19 [RFC][PATCH 0/20] Multiple instances of the process id namespace Eric W. Biederman
2006-02-06 19:22 ` [RFC][PATCH 01/20] pid: Intoduce the concept of a wid (wait id) Eric W. Biederman
2006-02-06 19:27   ` [RFC][PATCH 02/20] pspace: The parent process id of pid 1 is always 0 Eric W. Biederman
2006-02-06 19:29     ` [RFC][PATCH 03/20] pid: Introduce a generic helper to test for init Eric W. Biederman
2006-02-06 19:34       ` [RFC][PATCH 04/20] pspace: Allow multiple instaces of the process id namespace Eric W. Biederman
2006-02-06 19:36         ` [RFC][PATCH 05/20] sched: Fixup the scheduler syscalls to deal with pspaces Eric W. Biederman
2006-02-06 19:39           ` [RFC][PATCH 06/20] cad_pid: Fixup the cad_pid users to assume it is in the initial process id namespace Eric W. Biederman
2006-02-06 19:41             ` [RFC][PATCH 07/20] tty: Update the tty layer to work with pspaces Eric W. Biederman
2006-02-06 19:44               ` [RFC][PATCH 08/20] vt: Update the virtual console to handle pspaces Eric W. Biederman
2006-02-06 19:46                 ` [RFC][PATCH 09/20] ptrace: Update ptrace " Eric W. Biederman
2006-02-06 19:49                   ` [RFC][PATCH 10/20] capabilities: Update the capabilities code to " Eric W. Biederman
2006-02-06 19:51                     ` [RFC][PATCH 11/20] ioprio: Update ioprio " Eric W. Biederman
2006-02-06 19:54                       ` [RFC][PATCH 12/20] fcntl: Update fcntl to work with pspaces Eric W. Biederman
2006-02-06 19:57                         ` [RFC][PATCH 13/20] kthread: Update kthread " Eric W. Biederman
2006-02-06 19:59                           ` [RFC][PATCH 14/20] mm: Update vmscan " Eric W. Biederman
2006-02-06 20:00                             ` [RFC][PATCH 15/20] posix-timers: Update posix timers " Eric W. Biederman
2006-02-06 20:02                               ` [PATCH 16/20] nfs: Don't use pids to track the lockd server process Eric W. Biederman
2006-02-06 20:03                                 ` [RFC][PATCH 17/20] usb: Fixup usb so it works with pspaces Eric W. Biederman
2006-02-06 20:05                                   ` [RFC][PATCH 18/20] posix-mqueue: Make mqueues work with pspspaces Eric W. Biederman
2006-02-06 20:07                                     ` Eric W. Biederman [this message]
2006-02-06 20:12                                       ` [RFC][PATCH 20/20] proc: Update /proc to support multiple pid spaces Eric W. Biederman
2006-02-10 20:40                                         ` Kirill Korotaev
2006-02-11 10:10                                           ` Eric W. Biederman
2006-02-06 20:41                                   ` [RFC][PATCH 17/20] usb: Fixup usb so it works with pspaces Serge E. Hallyn
2006-02-06 20:53                                     ` Eric W. Biederman
2006-02-07 16:41         ` [RFC][PATCH 04/20] pspace: Allow multiple instaces of the process id namespace William Lee Irwin III
2006-02-07 17:05           ` Eric W. Biederman
2006-02-10 20:30         ` Kirill Korotaev
2006-02-11  9:42           ` Eric W. Biederman
2006-02-11 10:11           ` Eric W. Biederman
2006-02-11 10:43           ` Eric W. Biederman
2006-02-13  8:53             ` Kirill Korotaev
2006-02-13 16:40             ` Dave Hansen
2006-02-11 11:03           ` Eric W. Biederman
2006-02-13  9:02             ` Kirill Korotaev
2006-02-13 21:31               ` Serge E. Hallyn
2006-02-13 23:41               ` Eric W. Biederman
2006-02-11 11:57           ` Eric W. Biederman
2006-02-13  9:22             ` Kirill Korotaev
2006-02-13 17:02               ` Serge E. Hallyn
2006-02-14  5:59                 ` Eric W. Biederman
2006-02-14  5:54               ` Eric W. Biederman
2006-02-14 18:45                 ` Dave Hansen
2006-02-15 12:07                 ` Kirill Korotaev
2006-02-15 13:31                   ` Herbert Poetzl
2006-02-16 13:44                     ` Serge E. Hallyn
2006-02-20  9:27                       ` Kirill Korotaev
2006-02-20 17:04                         ` Herbert Poetzl
2006-02-21 16:29                           ` Kirill Korotaev
2006-02-21 23:23                             ` Herbert Poetzl
2006-02-20 11:29                     ` Kirill Korotaev
2006-02-20 12:34                       ` Herbert Poetzl
2006-02-20 14:11                         ` Kirill Korotaev
2006-02-20 15:08                           ` Herbert Poetzl
2006-03-01 22:06                             ` Cedric Le Goater
2006-02-15 18:40                   ` Eric W. Biederman
2006-02-06 19:56       ` [RFC][PATCH 03/20] pid: Introduce a generic helper to test for init Dave Hansen
2006-02-06 20:22         ` Eric W. Biederman
2006-02-07 15:08       ` Geert Uytterhoeven
2006-02-07 15:17         ` Eric W. Biederman
2006-02-06 19:54   ` [RFC][PATCH 01/20] pid: Intoduce the concept of a wid (wait id) Serge E. Hallyn
2006-02-06 20:23     ` Eric W. Biederman
2006-02-07 17:39   ` Jeff Dike
2006-02-07 18:32     ` Eric W. Biederman
2006-02-10 18:51   ` Kirill Korotaev
2006-02-11  9:25     ` Eric W. Biederman
2006-02-13  8:43       ` Kirill Korotaev
2006-02-14  0:04         ` Eric W. Biederman
2006-02-06 20:40 ` [RFC][PATCH 0/20] Multiple instances of the process id namespace Hubertus Franke
2006-02-06 20:51   ` Eric W. Biederman
2006-02-06 21:07     ` Hubertus Franke
2006-02-06 21:56       ` Eric W. Biederman
2006-02-07  0:48 ` Dave Hansen
2006-02-07  5:14   ` Eric W. Biederman
2006-02-07  9:33   ` Andi Kleen
2006-02-08  4:19     ` Randy.Dunlap
2006-02-08  4:28       ` Eric W. Biederman
2006-02-08  4:51         ` Randy.Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m1irrsjlnn.fsf_-_@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=arjan@infradead.org \
    --cc=benh@kernel.crashing.org \
    --cc=clg@fr.ibm.com \
    --cc=dev@openvz.org \
    --cc=dev@sw.ru \
    --cc=frankeh@watson.ibm.com \
    --cc=gkurz@fr.ibm.com \
    --cc=greg@kroah.com \
    --cc=haveblue@us.ibm.com \
    --cc=herbert@13thfloor.at \
    --cc=jes@sgi.com \
    --cc=jgarzik@pobox.com \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mrmacman_g4@mac.com \
    --cc=riel@redhat.com \
    --cc=saw@sawoct.com \
    --cc=serue@us.ibm.com \
    --cc=ssouhlal@FreeBSD.org \
    --cc=torvalds@osdl.org \
    --cc=trond.myklebust@fys.uio.no \
    --cc=vserver@list.linux-vserver.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®