|
@@ -97,10 +97,12 @@
|
|
extern int sysctl_overcommit_memory;
|
|
extern int sysctl_overcommit_memory;
|
|
extern int sysctl_overcommit_ratio;
|
|
extern int sysctl_overcommit_ratio;
|
|
extern int max_threads;
|
|
extern int max_threads;
|
|
-extern int core_uses_pid;
|
|
|
|
extern int suid_dumpable;
|
|
extern int suid_dumpable;
|
|
|
|
+#ifdef CONFIG_COREDUMP
|
|
|
|
+extern int core_uses_pid;
|
|
extern char core_pattern[];
|
|
extern char core_pattern[];
|
|
extern unsigned int core_pipe_limit;
|
|
extern unsigned int core_pipe_limit;
|
|
|
|
+#endif
|
|
extern int pid_max;
|
|
extern int pid_max;
|
|
extern int min_free_kbytes;
|
|
extern int min_free_kbytes;
|
|
extern int pid_max_min, pid_max_max;
|
|
extern int pid_max_min, pid_max_max;
|
|
@@ -177,8 +179,10 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
|
|
|
|
|
|
static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
|
|
static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
|
|
void __user *buffer, size_t *lenp, loff_t *ppos);
|
|
void __user *buffer, size_t *lenp, loff_t *ppos);
|
|
|
|
+#ifdef CONFIG_COREDUMP
|
|
static int proc_dostring_coredump(struct ctl_table *table, int write,
|
|
static int proc_dostring_coredump(struct ctl_table *table, int write,
|
|
void __user *buffer, size_t *lenp, loff_t *ppos);
|
|
void __user *buffer, size_t *lenp, loff_t *ppos);
|
|
|
|
+#endif
|
|
|
|
|
|
#ifdef CONFIG_MAGIC_SYSRQ
|
|
#ifdef CONFIG_MAGIC_SYSRQ
|
|
/* Note: sysrq code uses it's own private copy */
|
|
/* Note: sysrq code uses it's own private copy */
|
|
@@ -404,6 +408,7 @@ static struct ctl_table kern_table[] = {
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
.proc_handler = proc_dointvec,
|
|
.proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
|
|
+#ifdef CONFIG_COREDUMP
|
|
{
|
|
{
|
|
.procname = "core_uses_pid",
|
|
.procname = "core_uses_pid",
|
|
.data = &core_uses_pid,
|
|
.data = &core_uses_pid,
|
|
@@ -425,6 +430,7 @@ static struct ctl_table kern_table[] = {
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
.proc_handler = proc_dointvec,
|
|
.proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
|
|
+#endif
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
{
|
|
{
|
|
.procname = "tainted",
|
|
.procname = "tainted",
|
|
@@ -2036,12 +2042,14 @@ int proc_dointvec_minmax(struct ctl_table *table, int write,
|
|
|
|
|
|
static void validate_coredump_safety(void)
|
|
static void validate_coredump_safety(void)
|
|
{
|
|
{
|
|
|
|
+#ifdef CONFIG_COREDUMP
|
|
if (suid_dumpable == SUID_DUMPABLE_SAFE &&
|
|
if (suid_dumpable == SUID_DUMPABLE_SAFE &&
|
|
core_pattern[0] != '/' && core_pattern[0] != '|') {
|
|
core_pattern[0] != '/' && core_pattern[0] != '|') {
|
|
printk(KERN_WARNING "Unsafe core_pattern used with "\
|
|
printk(KERN_WARNING "Unsafe core_pattern used with "\
|
|
"suid_dumpable=2. Pipe handler or fully qualified "\
|
|
"suid_dumpable=2. Pipe handler or fully qualified "\
|
|
"core dump path required.\n");
|
|
"core dump path required.\n");
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
|
|
static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
|
|
@@ -2053,6 +2061,7 @@ static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
|
|
return error;
|
|
return error;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef CONFIG_COREDUMP
|
|
static int proc_dostring_coredump(struct ctl_table *table, int write,
|
|
static int proc_dostring_coredump(struct ctl_table *table, int write,
|
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
|
{
|
|
{
|
|
@@ -2061,6 +2070,7 @@ static int proc_dostring_coredump(struct ctl_table *table, int write,
|
|
validate_coredump_safety();
|
|
validate_coredump_safety();
|
|
return error;
|
|
return error;
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write,
|
|
static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write,
|
|
void __user *buffer,
|
|
void __user *buffer,
|