[PATCH] OOM killer meets userspace headers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Despite mm.h is not being exported header, it does contain one thing
which is part of userspace ABI -- value disabling OOM killer. So,
a) export mm.h to userspace
b) got OOM_DISABLE disable define out of __KERNEL__ prison.
c) turn bound values suitable for /proc/$PID/oom_adj into defines and export
   them too.
d) put some headers into __KERNEL__ prison. It'd bizarre to include mm.h and
   get capability stuff.

Signed-off-by: Alexey Dobriyan <[email protected]>
---

 fs/proc/base.c       |    3 ++-
 include/linux/Kbuild |    2 ++
 include/linux/mm.h   |   13 +++++++------
 3 files changed, 11 insertions(+), 7 deletions(-)

--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -689,7 +689,8 @@ static ssize_t oom_adjust_write(struct f
 	if (copy_from_user(buffer, buf, count))
 		return -EFAULT;
 	oom_adjust = simple_strtol(buffer, &end, 0);
-	if ((oom_adjust < -16 || oom_adjust > 15) && oom_adjust != OOM_DISABLE)
+	if ((oom_adjust < OOM_ADJUST_MIN || oom_adjust > OOM_ADJUST_MAX) &&
+	     oom_adjust != OOM_DISABLE)
 		return -EINVAL;
 	if (*end == '\n')
 		end++;
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -110,6 +110,7 @@ header-y += major.h
 header-y += matroxfb.h
 header-y += meye.h
 header-y += minix_fs.h
+header-y += mm.h
 header-y += mmtimer.h
 header-y += mqueue.h
 header-y += mtio.h
@@ -257,6 +258,7 @@ unifdef-y += loop.h
 unifdef-y += lp.h
 unifdef-y += mempolicy.h
 unifdef-y += mii.h
+unifdef-y += mm.h
 unifdef-y += mman.h
 unifdef-y += mroute.h
 unifdef-y += msdos_fs.h
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1,12 +1,16 @@
 #ifndef _LINUX_MM_H
 #define _LINUX_MM_H
 
+/* /proc/<pid>/oom_adj set to -17 protects from the oom-killer */
+#define OOM_DISABLE (-17)
+/* inclusive */
+#define OOM_ADJUST_MIN (-16)
+#define OOM_ADJUST_MAX 15
+
+#ifdef __KERNEL__
 #include <linux/sched.h>
 #include <linux/errno.h>
 #include <linux/capability.h>
-
-#ifdef __KERNEL__
-
 #include <linux/gfp.h>
 #include <linux/list.h>
 #include <linux/mmzone.h>
@@ -1115,9 +1119,6 @@ int in_gate_area_no_task(unsigned long a
 #define in_gate_area(task, addr) ({(void)task; in_gate_area_no_task(addr);})
 #endif	/* __HAVE_ARCH_GATE_AREA */
 
-/* /proc/<pid>/oom_adj set to -17 protects from the oom-killer */
-#define OOM_DISABLE -17
-
 int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *,
 					void __user *, size_t *, loff_t *);
 unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux