kconfig: do not allow more than one symbol to have 'option modules'
authorYann E. MORIN <yann.morin.1998@free.fr>
Tue, 3 Sep 2013 20:22:26 +0000 (22:22 +0200)
committerChristian Lamparter <chunkeey@googlemail.com>
Wed, 23 Oct 2013 20:24:23 +0000 (22:24 +0200)
Previously, it was possible to have more than one symbol with the
'option modules' attached to them, although only the last one would
in fact control tristates.

Since this does not make much sense, only allow at most one symbol to
control tristates.

Note: it is still possible to have more than one symbol that control
tristates, but indirectly:

    config MOD1
        bool "mod1"
        select MODULES
    config MOD2
        bool "mod2"
        select MODULES
    config MODULES
        bool
        option modules

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
config/menu.c

index 3a9c674932607ca9c1bdc4d62a15a98829e9b213..c1d53200c306dc6202cbcc13555a05333c34411a 100644 (file)
@@ -199,6 +199,12 @@ void menu_add_option(int token, char *arg)
 {
        switch (token) {
        case T_OPT_MODULES:
+               if (modules_sym)
+                       zconf_error("symbol '%s' redefines option 'modules'"
+                                   " already defined by symbol '%s'",
+                                   current_entry->sym->name,
+                                   modules_sym->name
+                                   );
                modules_sym = current_entry->sym;
                break;
        case T_OPT_DEFCONFIG_LIST: