mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
sysctl: move cad_pid into kernel/pid.c
Move cad_pid as well as supporting function proc_do_cad_pid into kernel/pic.c. Replaced call to __do_proc_dointvec with proc_dointvec inside proc_do_cad_pid which requires the copy of the ctl_table to handle the temp value. This is part of a greater effort to move ctl tables into their respective subsystems which will reduce the merge conflicts in kernel/sysctl.c. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Kees Cook <kees@kernel.org> Signed-off-by: Joel Granados <joel.granados@kernel.org>
This commit is contained in:
31
kernel/pid.c
31
kernel/pid.c
@@ -713,6 +713,29 @@ static struct ctl_table_root pid_table_root = {
|
||||
.set_ownership = pid_table_root_set_ownership,
|
||||
};
|
||||
|
||||
static int proc_do_cad_pid(const struct ctl_table *table, int write, void *buffer,
|
||||
size_t *lenp, loff_t *ppos)
|
||||
{
|
||||
struct pid *new_pid;
|
||||
pid_t tmp_pid;
|
||||
int r;
|
||||
struct ctl_table tmp_table = *table;
|
||||
|
||||
tmp_pid = pid_vnr(cad_pid);
|
||||
tmp_table.data = &tmp_pid;
|
||||
|
||||
r = proc_dointvec(&tmp_table, write, buffer, lenp, ppos);
|
||||
if (r || !write)
|
||||
return r;
|
||||
|
||||
new_pid = find_get_pid(tmp_pid);
|
||||
if (!new_pid)
|
||||
return -ESRCH;
|
||||
|
||||
put_pid(xchg(&cad_pid, new_pid));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct ctl_table pid_table[] = {
|
||||
{
|
||||
.procname = "pid_max",
|
||||
@@ -723,6 +746,14 @@ static const struct ctl_table pid_table[] = {
|
||||
.extra1 = &pid_max_min,
|
||||
.extra2 = &pid_max_max,
|
||||
},
|
||||
#ifdef CONFIG_PROC_SYSCTL
|
||||
{
|
||||
.procname = "cad_pid",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0600,
|
||||
.proc_handler = proc_do_cad_pid,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1224,28 +1224,6 @@ int proc_dointvec_ms_jiffies(const struct ctl_table *table, int write, void *buf
|
||||
do_proc_dointvec_ms_jiffies_conv, NULL);
|
||||
}
|
||||
|
||||
static int proc_do_cad_pid(const struct ctl_table *table, int write, void *buffer,
|
||||
size_t *lenp, loff_t *ppos)
|
||||
{
|
||||
struct pid *new_pid;
|
||||
pid_t tmp;
|
||||
int r;
|
||||
|
||||
tmp = pid_vnr(cad_pid);
|
||||
|
||||
r = __do_proc_dointvec(&tmp, table, write, buffer,
|
||||
lenp, ppos, NULL, NULL);
|
||||
if (r || !write)
|
||||
return r;
|
||||
|
||||
new_pid = find_get_pid(tmp);
|
||||
if (!new_pid)
|
||||
return -ESRCH;
|
||||
|
||||
put_pid(xchg(&cad_pid, new_pid));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* proc_do_large_bitmap - read/write from/to a large bitmap
|
||||
* @table: the sysctl table
|
||||
@@ -1541,15 +1519,6 @@ static const struct ctl_table kern_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dostring,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_PROC_SYSCTL
|
||||
{
|
||||
.procname = "cad_pid",
|
||||
.data = NULL,
|
||||
.maxlen = sizeof (int),
|
||||
.mode = 0600,
|
||||
.proc_handler = proc_do_cad_pid,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.procname = "overflowuid",
|
||||
|
||||
Reference in New Issue
Block a user