Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp5132115pxb; Mon, 15 Feb 2021 10:17:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJwbTwm5WsGCH0SzFNBW0J6xLqKmDIK785m5JctAuoLA87RM6MGwIs8mwGQ1hXdsak5MDG1T X-Received: by 2002:a05:6402:1d27:: with SMTP id dh7mr16644799edb.338.1613413024385; Mon, 15 Feb 2021 10:17:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613413024; cv=none; d=google.com; s=arc-20160816; b=pPGak1qJ0h0Ua6PkI9npOGIGMK7eAiQbzNUx2DvN+vUS+qZLekucPutTanFbZuMiMT z7NdwvwAXnN6BHxSjY2Svha9doL4ezXaxuFgMpq73PwxWLdQ0dOgAdWHWhcunFmYBfpw hQA5z0ATdddON+JLpTc0pH5DB7h1KJzGGOOhJCj9hFxTvWux6jWE/1WX2pPwAzxvTXrT FvZIU0D9YGBRw9wRFpNNTITk+4CJj1KJluIOHQIDC6XuVFeqMCZn8MveTc/+PneHHI/U 6YaLMt58ZyzSMGdK3QVXM9rmJDEAimprxNXs8/ML+ZqOzPHZ1McQKJuW9xUbuTn6pVjl Qalg== 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=mW7Vnisn2N/JIHF/GJi63Iui1IX6scmSQdyHYI0gtvQ=; b=SF8IurL39y4eMgGuitUV01SwBQsqD5nRVQxP2BSn0Uh3vksc6WONMJcmKttwPf27I/ Kw0Mc7XcNpxGQEPdHvq5ExvYW9BP7tjeHeyO4OgGTk1ycRcSMYgRnZyOZxPeLw08jHgA oXxOPawWWgB4DbNeiFOU4GLVcJqn9D/Oq0pj3TUnTYyaWQhaWXV/xR9CrgPuyqbgIH4F 5gBaNhOoyahQ8ArocSsEpXmYNtK0Q/uYw/uZCufsP5/EYycwPLsUkSKZYHUUMoY5du0O Q9w1XPayPqTp3UT3w/ql+Fb6Zdtar4Iza5aTDmp8vT1OpzM80QoGE1KuIzEQ4um7tLWo O9hw== 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 n22si7813695edo.188.2021.02.15.10.16.40; Mon, 15 Feb 2021 10:17:04 -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 S230333AbhBOSPh (ORCPT + 99 others); Mon, 15 Feb 2021 13:15:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230105AbhBOSPN (ORCPT ); Mon, 15 Feb 2021 13:15:13 -0500 Received: from smtp-42ae.mail.infomaniak.ch (smtp-42ae.mail.infomaniak.ch [IPv6:2001:1600:4:17::42ae]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57ED5C061788; Mon, 15 Feb 2021 10:14:28 -0800 (PST) Received: from smtp-2-0001.mail.infomaniak.ch (unknown [10.5.36.108]) by smtp-3-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4DfXLW0fs0zMpv3m; Mon, 15 Feb 2021 19:14:27 +0100 (CET) Received: from localhost (unknown [23.97.221.149]) by smtp-2-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4DfXLV340dzlh8TJ; Mon, 15 Feb 2021 19:14: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 v2 2/3] kconfig: Ask user if string needs to be changed when dependency changed Date: Mon, 15 Feb 2021 19:15:10 +0100 Message-Id: <20210215181511.2840674-3-mic@digikod.net> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210215181511.2840674-1-mic@digikod.net> References: <20210215181511.2840674-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/20210215181511.2840674-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