lkml.org 
[lkml]   [2007]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.6.22-rc6-mm1
    Hi,

    On Thu, 28 Jun 2007, Andrew Morton wrote:

    > So save yourself some hassle and check your .config carefully before
    > building this kernel. Make sure that everything you need is still enabled.
    >
    > I found that manually adding "CONFIG_BLK_DEV=y" to the .config before
    > running oldconfig saved a large number of config items from getting lost.

    This patch should help for this, so that this isn't done when Kconfig or
    .config has been changed and they are not in sync.

    bye, Roman


    Reset generates values only if Kconfig and .config agree.

    Signed-off-by: Roman Zippel <zippel@linux-m68k.org>

    ---
    scripts/kconfig/confdata.c | 37 ++++++++++++++++++++++++++-----------
    1 file changed, 26 insertions(+), 11 deletions(-)

    Index: linux-2.6/scripts/kconfig/confdata.c
    ===================================================================
    --- linux-2.6.orig/scripts/kconfig/confdata.c
    +++ linux-2.6/scripts/kconfig/confdata.c
    @@ -341,27 +341,42 @@ int conf_read(const char *name)
    conf_unsaved++;
    /* maybe print value in verbose mode... */
    sym_ok:
    + if (!sym_is_choice(sym))
    + continue;
    + /* The choice symbol only has a set value (and thus is not new)
    + * if all its visible childs have values.
    + */
    + prop = sym_get_choice_prop(sym);
    + flags = sym->flags;
    + for (e = prop->expr; e; e = e->left.expr)
    + if (e->right.sym->visible != no)
    + flags &= e->right.sym->flags;
    + sym->flags &= flags | ~SYMBOL_DEF_USER;
    + }
    +
    + for_all_symbols(i, sym) {
    if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
    - if (sym->visible == no)
    + /* Reset values of generates values, so they'll appear
    + * as new, if they should become visible, but that
    + * doesn't quite work if the Kconfig and the saved
    + * configuration disagree.
    + */
    + if (sym->visible == no && !conf_unsaved)
    sym->flags &= ~SYMBOL_DEF_USER;
    switch (sym->type) {
    case S_STRING:
    case S_INT:
    case S_HEX:
    - if (!sym_string_within_range(sym, sym->def[S_DEF_USER].val))
    - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
    + /* Reset a string value if it's out of range */
    + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val))
    + break;
    + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
    + conf_unsaved++;
    + break;
    default:
    break;
    }
    }
    - if (!sym_is_choice(sym))
    - continue;
    - prop = sym_get_choice_prop(sym);
    - flags = sym->flags;
    - for (e = prop->expr; e; e = e->left.expr)
    - if (e->right.sym->visible != no)
    - flags &= e->right.sym->flags;
    - sym->flags &= flags | ~SYMBOL_DEF_USER;
    }

    sym_add_change_count(conf_warnings || conf_unsaved);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-06-29 16:19    [W:0.022 / U:19.164 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site