All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Mickaël Salaün" <mic@digikod.net>
To: Masahiro Yamada <masahiroy@kernel.org>,
	Casey Schaufler <casey@schaufler-ca.com>
Cc: "James Morris" <jmorris@namei.org>,
	"Serge E . Hallyn" <serge@hallyn.com>,
	"Nicolas Iooss" <nicolas.iooss@m4x.org>,
	"Linux Kbuild mailing list" <linux-kbuild@vger.kernel.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	linux-security-module <linux-security-module@vger.kernel.org>,
	"Mickaël Salaün" <mic@linux.microsoft.com>
Subject: Re: [PATCH v2 2/3] kconfig: Ask user if string needs to be changed when dependency changed
Date: Sun, 21 Feb 2021 12:10:14 +0100	[thread overview]
Message-ID: <b3ea85ca-5c49-61ab-4769-f2e4557df3c7@digikod.net> (raw)
In-Reply-To: <CAK7LNAS54Zw7d8Lp5BNs1JVktSLTFx0dNbLMA7W0U_sH2712_A@mail.gmail.com>


On 21/02/2021 09:47, Masahiro Yamada wrote:
> On Tue, Feb 16, 2021 at 3:14 AM Mickaël Salaün <mic@digikod.net> wrote:
>>
>> From: Mickaël Salaün <mic@linux.microsoft.com>
>>
>> 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.
> 
> If CONFIG_LSM already exists in the .config,
> oldconfig does not show a prompt.
> This is the expected behavior.

It is not the behavior wished for LSM stacking.

> 
> You are trying to fix your problem in a wrong way.
> NACK.

What do you suggest to ensure that users will be asked to update the
CONFIG_LSM string if they add or remove an LSM?



> 
> 
> 
>>
>> Cc: Casey Schaufler <casey@schaufler-ca.com>
>> Cc: James Morris <jmorris@namei.org>
>> Cc: Masahiro Yamada <masahiroy@kernel.org>
>> Cc: Serge E. Hallyn <serge@hallyn.com>
>> Signed-off-by: Mickaël Salaün <mic@linux.microsoft.com>
>> 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
>>
> 
> 

  reply	other threads:[~2021-02-21 11:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-15 18:15 [PATCH v2 0/3] Kconfig oldconfig string update Mickaël Salaün
2021-02-15 18:15 ` [PATCH v2 1/3] kconfig: Remove duplicate call to sym_get_string_value() Mickaël Salaün
2021-02-21  8:52   ` Masahiro Yamada
2021-02-15 18:15 ` [PATCH v2 2/3] kconfig: Ask user if string needs to be changed when dependency changed Mickaël Salaün
2021-02-21  8:47   ` Masahiro Yamada
2021-02-21 11:10     ` Mickaël Salaün [this message]
2021-02-21 14:45       ` Masahiro Yamada
2021-02-15 18:15 ` [PATCH v2 3/3] security: Add LSMs dependencies to CONFIG_LSM Mickaël Salaün
2021-02-15 19:03   ` Ondrej Mosnacek
2021-02-21  8:50     ` Masahiro Yamada
2021-02-21 11:12       ` Mickaël Salaün
2021-02-21 14:45         ` Masahiro Yamada
2021-02-22 10:47           ` Mickaël Salaün
2021-02-22 15:08             ` Mickaël Salaün

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b3ea85ca-5c49-61ab-4769-f2e4557df3c7@digikod.net \
    --to=mic@digikod.net \
    --cc=casey@schaufler-ca.com \
    --cc=jmorris@namei.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=mic@linux.microsoft.com \
    --cc=nicolas.iooss@m4x.org \
    --cc=serge@hallyn.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.