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-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <eda7d555-d34d-4418-8fc4-a874dcca91fa@app.fastmail.com>
Date: Mon, 17 Feb 2025 08:51:39 +0100
From: "Arnd Bergmann" <arnd@...db.de>
To: "Krzysztof Kozlowski" <krzysztof.kozlowski@...aro.org>,
 "Masahiro Yamada" <masahiroy@...nel.org>,
 "Nathan Chancellor" <nathan@...nel.org>,
 "Nicolas Schier" <nicolas@...sle.eu>, "Jonathan Corbet" <corbet@....net>,
 linux-kbuild@...r.kernel.org, linux-doc@...r.kernel.org,
 linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] docs: kconfig: Mention IS_REACHABLE as way for optional
 dependency

On Sat, Feb 15, 2025, at 14:17, Krzysztof Kozlowski wrote:
> Several drivers express optional Kconfig dependency with FOO || !FOO,
> but for many choices this is neither suitable (lack of stubs for !FOO
> like in HWMON) nor really needed and driver can be built in even if FOO
> is the module.  This is achieved with IS_REACHABLE, so move earlier
> section from "imply" chapter to "Optional dependencies" and grow the
> description.
>
> Cc: Masahiro Yamada <masahiroy@...nel.org>
> Cc: Arnd Bergmann <arnd@...db.de>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>

I think this needs to be more strongly worded to heavy discourage
the use of IS_REACHABLE(). In most cases, anyone trying this has
just given up on writing correct dependencies and works around
it in a user-hostile way.

> +1. If pre-processor can discard entire optional code or module BAR does not
> +   provide !BAR stubs then call can be guarded with IS_REACHABLE()::
> +
> +	foo_init()
> +	{
> +		if (IS_REACHABLE(CONFIG_BAR))
> +			bar_register(&foo);
> +		...
> +	}
> +
> +   Drawback: this might lead to run-time debugging, when looking why
> +   bar_register() was not called.

>From this description, I wouldn't expect most readers to understand
what you mean with "run-time debugging". The behavior that users
are going to see is just a bug -- they turned on CONFIG_BAR=m because
they wanted to use BAR, but then it doesn't work.

      Arnd

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ