NOMMU: Optimise away the {dac_,}mmap_min_addr tests
authorDavid Howells <dhowells@redhat.com>
Tue, 15 Dec 2009 19:27:45 +0000 (19:27 +0000)
committerJames Morris <jmorris@namei.org>
Wed, 16 Dec 2009 22:25:19 +0000 (09:25 +1100)
In NOMMU mode clamp dac_mmap_min_addr to zero to cause the tests on it to be
skipped by the compiler.  We do this as the minimum mmap address doesn't make
any sense in NOMMU mode.

mmap_min_addr and round_hint_to_min() can be discarded entirely in NOMMU mode.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Eric Paris <eparis@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
include/linux/security.h
kernel/sysctl.c
mm/Kconfig
security/Makefile

index 466cbadbd1efe1b5daa543d7bb99dd91d39aab08..2c627d361c023570a881b0b19adb509beadd2552 100644 (file)
@@ -95,8 +95,13 @@ struct seq_file;
 extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
 extern int cap_netlink_recv(struct sk_buff *skb, int cap);
 
+#ifdef CONFIG_MMU
 extern unsigned long mmap_min_addr;
 extern unsigned long dac_mmap_min_addr;
+#else
+#define dac_mmap_min_addr      0UL
+#endif
+
 /*
  * Values used in the task_security_ops calls
  */
@@ -121,6 +126,7 @@ struct request_sock;
 #define LSM_UNSAFE_PTRACE      2
 #define LSM_UNSAFE_PTRACE_CAP  4
 
+#ifdef CONFIG_MMU
 /*
  * If a hint addr is less than mmap_min_addr change hint to be as
  * low as possible but still greater than mmap_min_addr
@@ -135,6 +141,7 @@ static inline unsigned long round_hint_to_min(unsigned long hint)
 }
 extern int mmap_min_addr_handler(struct ctl_table *table, int write,
                                 void __user *buffer, size_t *lenp, loff_t *ppos);
+#endif
 
 #ifdef CONFIG_SECURITY
 
index 45e4bef0012a6747d6608cbb78ba0f700a29d7cb..856a24eadf7e50558613d24367eade273c402d89 100644 (file)
@@ -1214,6 +1214,7 @@ static struct ctl_table vm_table[] = {
                .proc_handler   = proc_dointvec_jiffies,
        },
 #endif
+#ifdef CONFIG_MMU
        {
                .procname       = "mmap_min_addr",
                .data           = &dac_mmap_min_addr,
@@ -1221,6 +1222,7 @@ static struct ctl_table vm_table[] = {
                .mode           = 0644,
                .proc_handler   = mmap_min_addr_handler,
        },
+#endif
 #ifdef CONFIG_NUMA
        {
                .procname       = "numa_zonelist_order",
index 43ea8c3a2bbf00a676ebb8bbe8c26fba38fe2a6c..ee9f3e0f2b69d22c01d42334ef1a4227f7c1b794 100644 (file)
@@ -221,6 +221,7 @@ config KSM
 
 config DEFAULT_MMAP_MIN_ADDR
         int "Low address space to protect from user allocation"
+       depends on MMU
         default 4096
         help
          This is the portion of low virtual memory which should be protected
index bb44e350c6181bac5e366ee2108d62f27754556d..da20a193c8dd6623d834ef9bb1396fcaacfd9bd0 100644 (file)
@@ -8,7 +8,8 @@ subdir-$(CONFIG_SECURITY_SMACK)         += smack
 subdir-$(CONFIG_SECURITY_TOMOYO)        += tomoyo
 
 # always enable default capabilities
-obj-y          += commoncap.o min_addr.o
+obj-y                                  += commoncap.o
+obj-$(CONFIG_MMU)                      += min_addr.o
 
 # Object file lists
 obj-$(CONFIG_SECURITY)                 += security.o capability.o