lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1431949832-13606-3-git-send-email-iulia.manda21@gmail.com>
Date:	Mon, 18 May 2015 14:50:32 +0300
From:	Iulia Manda <iulia.manda21@...il.com>
To:	tim.bird@...ymobile.com
Cc:	linux-kernel@...r.kernel.org, josh@...htriplett.org
Subject: [PATCH 3/3] init: Set initcall_debug to a default value

Test the previously implemented macros on initcall_debug parameter, after
setting CONFIG_CMDLINE_PARSE to 'n'.

This change is a first example for how knowing the values of kernel
parameters at build time can allow GCC constant folding and result in an
actually relevant decrease in size. Other types of parameters also need to
be handled. Also, at the moment this would only work with default values.
For being able to change those defaults and still know their values at
compile time, a pre-compiled stand-alone parser should be run on those
variables. This will be discussed in a following patch.

The variable corresponding to initcall_debug kernel parameter is set by
default to false. Even though DEFINE_CORE_PARAM resumes to nothing when
CONFIG_CMDLINE_PARSE is not set, we need to use it in main.c so that it is
still defined when this option is 'y'.

Bloat-o-meter output:

add/remove: 0/3 grow/shrink: 0/9 up/down: 0/-385 (-385)
function                                     old     new   delta
initcall_debug                                 1       -      -1
pm_init                                      105     100      -5
__param_str_initcall_debug                    15       -     -15
__param_initcall_debug                        16       -     -16
syscore_suspend                              247     224     -23
syscore_resume                               175     152     -23
syscore_shutdown                              80      55     -25
pci_fixup_device                             235     198     -37
async_synchronize_cookie_domain              162     116     -46
async_run_entry_fn                           178     127     -51
device_shutdown                              256     204     -52
do_one_initcall                              339     248     -91

Signed-off-by: Iulia Manda <iulia.manda21@...il.com>
Reviewed-by: Josh Triplett <josh@...htriplett.org>
---
 include/linux/init.h | 3 ++-
 init/main.c          | 3 +--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/init.h b/include/linux/init.h
index 21b6d76..7c7ee80 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -3,6 +3,7 @@
 
 #include <linux/compiler.h>
 #include <linux/types.h>
+#include <linux/params.h>
 
 /* These macros are used to mark some functions or 
  * initialized data (doesn't apply to uninitialized data)
@@ -155,7 +156,7 @@ int __init init_rootfs(void);
 
 extern void (*late_time_init)(void);
 
-extern bool initcall_debug;
+DECLARE_CORE_PARAM(initcall_debug, false, bool);
 
 #endif
   
diff --git a/init/main.c b/init/main.c
index 2115055..a7d0129 100644
--- a/init/main.c
+++ b/init/main.c
@@ -688,8 +688,7 @@ static void __init do_ctors(void)
 #endif
 }
 
-bool initcall_debug;
-core_param(initcall_debug, initcall_debug, bool, 0644);
+DEFINE_CORE_PARAM(initcall_debug, initcall_debug, false, bool, 0644);
 
 #ifdef CONFIG_KALLSYMS
 struct blacklist_entry {
-- 
1.8.3.2

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ