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]
Date:	Mon, 24 Feb 2014 14:19:20 -0800
From:	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
To:	Josh Triplett <josh@...htriplett.org>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	Dwight Engen <dwight.engen@...cle.com>,
	Eric Paris <eparis@...hat.com>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Jiri Slaby <jslaby@...e.cz>,
	Kyungsik Lee <kyungsik.lee@....com>,
	Michal Hocko <mhocko@...e.cz>, Michal Marek <mmarek@...e.cz>,
	Mike Frysinger <vapier@...too.org>,
	Paul Gortmaker <paul.gortmaker@...driver.com>,
	Rob Landley <rob@...dley.net>,
	"Yann E. MORIN" <yann.morin.1998@...e.fr>,
	linux-doc@...r.kernel.org, linux-kbuild@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] kconfig: Make allnoconfig disable options behind
 EMBEDDED and EXPERT

On Sun, Feb 23, 2014 at 06:20:26PM -0800, Josh Triplett wrote:
> "make allnoconfig" exists to ease testing of minimal configurations.
> Documentation/SubmitChecklist includes a note to test with allnoconfig.
> This helps catch missing dependencies on common-but-not-required
> functionality, which might otherwise go unnoticed.
> 
> However, allnoconfig still leaves many symbols enabled, because they're
> hidden behind CONFIG_EMBEDDED or CONFIG_EXPERT.  For instance,
> allnoconfig still has CONFIG_PRINTK and CONFIG_BLOCK enabled, so drivers
> don't typically get build-tested with those disabled.
> 
> To address this, introduce a new Kconfig option "allnoconfig_y", used on
> symbols which only exist to hide other symbols.  Set it on
> CONFIG_EMBEDDED (which then selects CONFIG_EXPERT).  allnoconfig will
> then disable all the symbols hidden behind those.
> 
> Signed-off-by: Josh Triplett <josh@...htriplett.org>

Tested-by: Paul E. McKenney <paulmck@...ux.vnet.ibm.com>

> ---
>  Documentation/kbuild/kconfig-language.txt |  4 ++++
>  init/Kconfig                              |  1 +
>  scripts/kconfig/confdata.c                |  5 ++++-
>  scripts/kconfig/expr.h                    |  3 +++
>  scripts/kconfig/lkc.h                     |  1 +
>  scripts/kconfig/menu.c                    |  3 +++
>  scripts/kconfig/zconf.gperf               |  1 +
>  scripts/kconfig/zconf.hash.c_shipped      | 13 ++++++++-----
>  8 files changed, 25 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
> index c420676..350f733 100644
> --- a/Documentation/kbuild/kconfig-language.txt
> +++ b/Documentation/kbuild/kconfig-language.txt
> @@ -157,6 +157,10 @@ applicable everywhere (see syntax).
>      to the build environment (if this is desired, it can be done via
>      another symbol).
> 
> +  - "allnoconfig_y"
> +    This declares the symbol as one that should have the value y when
> +    using "allnoconfig". Used for symbols that hide other symbols.
> +
>  Menu dependencies
>  -----------------
> 
> diff --git a/init/Kconfig b/init/Kconfig
> index 009a797..238aafb 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1455,6 +1455,7 @@ config PCI_QUIRKS
> 
>  config EMBEDDED
>  	bool "Embedded system"
> +	option allnoconfig_y
>  	select EXPERT
>  	help
>  	  This option should be enabled if compiling the kernel for
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index 87f7238..f88d90f 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -1178,7 +1178,10 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode)
>  				sym->def[S_DEF_USER].tri = mod;
>  				break;
>  			case def_no:
> -				sym->def[S_DEF_USER].tri = no;
> +				if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
> +					sym->def[S_DEF_USER].tri = yes;
> +				else
> +					sym->def[S_DEF_USER].tri = no;
>  				break;
>  			case def_random:
>  				sym->def[S_DEF_USER].tri = no;
> diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
> index ba663e1..412ea8a 100644
> --- a/scripts/kconfig/expr.h
> +++ b/scripts/kconfig/expr.h
> @@ -109,6 +109,9 @@ struct symbol {
>  /* choice values need to be set before calculating this symbol value */
>  #define SYMBOL_NEED_SET_CHOICE_VALUES  0x100000
> 
> +/* Set symbol to y if allnoconfig; used for symbols that hide others */
> +#define SYMBOL_ALLNOCONFIG_Y 0x200000
> +
>  #define SYMBOL_MAXLENGTH	256
>  #define SYMBOL_HASHSIZE		9973
> 
> diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
> index 09f4edf..d5daa7a 100644
> --- a/scripts/kconfig/lkc.h
> +++ b/scripts/kconfig/lkc.h
> @@ -61,6 +61,7 @@ enum conf_def_mode {
>  #define T_OPT_MODULES		1
>  #define T_OPT_DEFCONFIG_LIST	2
>  #define T_OPT_ENV		3
> +#define T_OPT_ALLNOCONFIG_Y	4
> 
>  struct kconf_id {
>  	int name;
> diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
> index db1512a..3ac2c9c 100644
> --- a/scripts/kconfig/menu.c
> +++ b/scripts/kconfig/menu.c
> @@ -217,6 +217,9 @@ void menu_add_option(int token, char *arg)
>  	case T_OPT_ENV:
>  		prop_add_env(arg);
>  		break;
> +	case T_OPT_ALLNOCONFIG_Y:
> +		current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
> +		break;
>  	}
>  }
> 
> diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf
> index f14ab41..b6ac02d 100644
> --- a/scripts/kconfig/zconf.gperf
> +++ b/scripts/kconfig/zconf.gperf
> @@ -44,4 +44,5 @@ on,		T_ON,		TF_PARAM
>  modules,	T_OPT_MODULES,	TF_OPTION
>  defconfig_list,	T_OPT_DEFCONFIG_LIST,TF_OPTION
>  env,		T_OPT_ENV,	TF_OPTION
> +allnoconfig_y,	T_OPT_ALLNOCONFIG_Y,TF_OPTION
>  %%
> diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped
> index 40df000..c77a8ef 100644
> --- a/scripts/kconfig/zconf.hash.c_shipped
> +++ b/scripts/kconfig/zconf.hash.c_shipped
> @@ -55,10 +55,10 @@ kconf_id_hash (register const char *str, register unsigned int len)
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
> -      73, 73, 73, 73, 73, 73, 73, 73, 25, 25,
> +      73, 73, 73, 73, 73, 73, 73,  5, 25, 25,
>         0,  0,  0,  5,  0,  0, 73, 73,  5,  0,
>        10,  5, 45, 73, 20, 20,  0, 15, 15, 73,
> -      20, 73, 73, 73, 73, 73, 73, 73, 73, 73,
> +      20,  5, 73, 73, 73, 73, 73, 73, 73, 73,
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
>        73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
> @@ -106,6 +106,7 @@ struct kconf_id_strings_t
>      char kconf_id_strings_str23[sizeof("mainmenu")];
>      char kconf_id_strings_str25[sizeof("menuconfig")];
>      char kconf_id_strings_str27[sizeof("modules")];
> +    char kconf_id_strings_str28[sizeof("allnoconfig_y")];
>      char kconf_id_strings_str29[sizeof("menu")];
>      char kconf_id_strings_str31[sizeof("select")];
>      char kconf_id_strings_str32[sizeof("comment")];
> @@ -141,6 +142,7 @@ static const struct kconf_id_strings_t kconf_id_strings_contents =
>      "mainmenu",
>      "menuconfig",
>      "modules",
> +    "allnoconfig_y",
>      "menu",
>      "select",
>      "comment",
> @@ -170,7 +172,7 @@ kconf_id_lookup (register const char *str, register unsigned int len)
>  {
>    enum
>      {
> -      TOTAL_KEYWORDS = 32,
> +      TOTAL_KEYWORDS = 33,
>        MIN_WORD_LENGTH = 2,
>        MAX_WORD_LENGTH = 14,
>        MIN_HASH_VALUE = 2,
> @@ -219,7 +221,8 @@ kconf_id_lookup (register const char *str, register unsigned int len)
>        {-1},
>  #line 44 "scripts/kconfig/zconf.gperf"
>        {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_OPT_MODULES,	TF_OPTION},
> -      {-1},
> +#line 47 "scripts/kconfig/zconf.gperf"
> +      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,	T_OPT_ALLNOCONFIG_Y,TF_OPTION},
>  #line 16 "scripts/kconfig/zconf.gperf"
>        {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29,		T_MENU,		TF_COMMAND},
>        {-1},
> @@ -282,5 +285,5 @@ kconf_id_lookup (register const char *str, register unsigned int len)
>      }
>    return 0;
>  }
> -#line 47 "scripts/kconfig/zconf.gperf"
> +#line 48 "scripts/kconfig/zconf.gperf"
> 
> -- 
> 1.9.0
> 

--
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