lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240427104231.2728905-1-masahiroy@kernel.org>
Date: Sat, 27 Apr 2024 19:42:29 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: linux-kbuild@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
	Matt Porter <mporter@...nel.crashing.org>,
	Alexandre Bounine <alex.bou9@...il.com>,
	Masahiro Yamada <masahiroy@...nel.org>,
	Jonathan Corbet <corbet@....net>,
	Nathan Chancellor <nathan@...nel.org>,
	Nicolas Schier <nicolas@...sle.eu>,
	linux-doc@...r.kernel.org
Subject: [PATCH 0/2] kconfig: stop implification of choice type


There are two types supported for the choice statement,
"bool" and "tristate".

There is no ambiguity if you explicitly specifiy the type of the
choice.

For example

    choice
            bool "choose"

       ...

    endchoice

Or,

    choice
            tristate "choose"

       ...

    endchoice

Those are valid code, and clear about the behavior.

However, if you see the reality in the kernel code, most of people
omit the type definition.

Usually, the choice is written like this:

    choice
            prompt "choose"

       ...

    endchoice

The "prompt" does not specify the type at all.

You may wonder how Kconfig knows the choice type then.

When the choice type is not specified, Kconfig infers it from the first
entry within the choice block.

In the following, the choice type is bool because the first entry,
CONFIG_A, is bool.

    choice
            prompt "choose"

    config A
            bool "A"

    config B
            bool "B"

    endchoice

As described in 2/2, this has a bug when "if" ... "endif" exists
within a "choice" ... "endchoice".

Of course, I can fix this bug, but the value of this feature is
questionable.

This patch set stop the type implification. Instead, make the
default type of the choice "bool".

This is reasonable because 99% of choice blocks are bool.

The only user of tristate choice is drivers/rapidio/Kconfig.
(although that choice is unneeded because it cotains a single
entry, RAPIDIO_ENUM_BASIC)

It changed it to specify "tristate" explicitly.



Masahiro Yamada (2):
  rapidio: specify the type for tristate choice explicitly
  kconfig: do not imply the type of choice from the first entry

 Documentation/kbuild/kconfig-language.rst             |  4 +---
 drivers/rapidio/Kconfig                               |  2 +-
 scripts/kconfig/menu.c                                | 11 -----------
 scripts/kconfig/parser.y                              |  3 +++
 scripts/kconfig/tests/choice/Kconfig                  |  2 +-
 scripts/kconfig/tests/choice_value_with_m_dep/Kconfig |  2 +-
 6 files changed, 7 insertions(+), 17 deletions(-)

-- 
2.40.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ