Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp4902818pxb; Mon, 15 Feb 2021 04:31:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJy3ZZo6ozQWOxqbq5Q7YfyZtZe8foGPuzhvK97gbybozVtkLF/mOCVzvJNKlwu7iV9fyHKz X-Received: by 2002:a50:e14d:: with SMTP id i13mr15144679edl.106.1613392309525; Mon, 15 Feb 2021 04:31:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613392309; cv=none; d=google.com; s=arc-20160816; b=0/YV+IkD7/e8x7JCSIFPIA3OxSfmaDxDLZxjSnBDTdSXpDT2wZ30Hgj3arlLyDO3h2 wtY+OVVHKnnRU3C9GprXWfxj8MLqCswWJIjvR3s8rk4Agc0yRweGC1ae7Tr33yZhsKuP 0abHU5GjlDXaEKH0kssgjae6fF5maMjVdsGJQDy1eSuHDvDueDaer90W22upOhDkIm7/ hOHKcnghB07vi0/KljR0MCiaWXbXdO2qsgxa77M15Qgs8ZbAu604IZW/w3x0FCj8pe69 6XFE3X2/BpnW7vhYndN0uBCoUkLsR3GPvbo9GZ59WiOUBkqcPWT8Skhegnm2d71S2OgJ thAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9PGxtJInIMmz4ZGWWi7qP/63zVdV0mDC8QxrSof0M2A=; b=UR/hS2seucef+ODQsxzpaZk55f2xCs9zMnqMXSGd9jOHVbwaY3GCBwrEz9M2shQSEn 2z4YYuPMVGBLvVd9JS6wnwd9MMYLpwDMOdpGYTbqc2/O4ukCBdn7VkLXb8YhyNnlV6D1 9aCKZ5bJtK/6INx1DnOToWuFqnB6ExC/jyzmy6KGKBtDeR3DApvr4OXpuABqNNgfHtXB ztgAm4Y0P/ZjG87JL045MBpnI6WI/s/Zbda2hfyVROkbpQqXOhEdfjkMkEO52QVja1hh MShc2ErBrjFd8VehfU/m/a1v9U6FqQeOwMWC19fO+PLI/QAngNWhmyqyCtDbKrY49jz7 VtZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y10si322238eds.328.2021.02.15.04.31.26; Mon, 15 Feb 2021 04:31:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230295AbhBOMas (ORCPT + 99 others); Mon, 15 Feb 2021 07:30:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229890AbhBOM1U (ORCPT ); Mon, 15 Feb 2021 07:27:20 -0500 Received: from smtp-8fad.mail.infomaniak.ch (smtp-8fad.mail.infomaniak.ch [IPv6:2001:1600:3:17::8fad]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 757A3C0613D6 for ; Mon, 15 Feb 2021 04:26:28 -0800 (PST) Received: from smtp-3-0000.mail.infomaniak.ch (unknown [10.4.36.107]) by smtp-2-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4DfNcy5mW0zMpp3T; Mon, 15 Feb 2021 13:26:26 +0100 (CET) Received: from localhost (unknown [23.97.221.149]) by smtp-3-0000.mail.infomaniak.ch (Postfix) with ESMTPA id 4DfNcy0qXRzlh8TX; Mon, 15 Feb 2021 13:26:25 +0100 (CET) From: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= To: James Morris , Masahiro Yamada , "Serge E . Hallyn" Cc: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Casey Schaufler , Nicolas Iooss , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= Subject: [PATCH v1 2/3] kconfig: Ask user if string needs to be changed when dependency changed Date: Mon, 15 Feb 2021 13:25:12 +0100 Message-Id: <20210215122513.1773897-3-mic@digikod.net> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210215122513.1773897-1-mic@digikod.net> References: <20210215122513.1773897-1-mic@digikod.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mickaël Salaün Content of string configuration may depend on related kernel configurations. Modify oldconfig and syncconfig to inform users about possible required configuration update and give them the opportunity to update it: * if dependencies of this string has changed (e.g. enabled or disabled), * and if the current value of this string is different than the (new) default one. This is particularly relevant for CONFIG_LSM which contains a list of LSMs enabled at boot, but users will not have a chance to update this list with a make oldconfig. Cc: Casey Schaufler Cc: James Morris Cc: Masahiro Yamada Cc: Serge E. Hallyn Signed-off-by: Mickaël Salaün Link: https://lore.kernel.org/r/20210215122513.1773897-3-mic@digikod.net --- scripts/kconfig/conf.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 18a233d27a8d..8633dacd39a9 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -82,6 +82,26 @@ static void xfgets(char *str, int size, FILE *in) printf("%s", str); } +static bool may_need_string_update(struct symbol *sym, const char *def) +{ + const struct symbol *dep_sym; + const struct expr *e; + + if (sym->type != S_STRING) + return false; + if (strcmp(def, sym_get_string_default(sym)) == 0) + return false; + /* + * The user may want to synchronize the content of a string related to + * changed dependencies (e.g. CONFIG_LSM). + */ + expr_list_for_each_sym(sym->dir_dep.expr, e, dep_sym) { + if (dep_sym->flags & SYMBOL_CHANGED) + return true; + } + return false; +} + static int conf_askvalue(struct symbol *sym, const char *def) { enum symbol_type type = sym_get_type(sym); @@ -102,7 +122,7 @@ static int conf_askvalue(struct symbol *sym, const char *def) switch (input_mode) { case oldconfig: case syncconfig: - if (sym_has_value(sym)) { + if (sym_has_value(sym) && !may_need_string_update(sym, def)) { printf("%s\n", def); return 0; } @@ -137,8 +157,19 @@ static int conf_string(struct menu *menu) printf("%*s%s ", indent - 1, "", menu->prompt->text); printf("(%s) ", sym->name); def = sym_get_string_value(sym); - if (def) - printf("[%s] ", def); + if (def) { + if (may_need_string_update(sym, def)) { + indent += 2; + printf("\n%*sDefault value is [%s]\n", + indent - 1, "", + sym_get_string_default(sym)); + printf("%*sCurrent value is [%s] ", + indent - 1, "", def); + indent -= 2; + } else { + printf("[%s] ", def); + } + } if (!conf_askvalue(sym, def)) return 0; switch (line[0]) { -- 2.30.0