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: <b4be7637-9446-47d0-9a8c-3fd0f55a27b9@app.fastmail.com>
Date: Fri, 05 Dec 2025 09:01:51 +0100
From: "Arnd Bergmann" <arnd@...db.de>
To: "Nathan Chancellor" <nathan@...nel.org>,
 "Graham Roff" <grahamr@....qualcomm.com>
Cc: "Nicolas Schier" <nsc@...nel.org>, "Jonathan Corbet" <corbet@....net>,
 linux-kbuild@...r.kernel.org, linux-doc@...r.kernel.org,
 linux-kernel@...r.kernel.org, "Nicolas Pitre" <nico@...xnic.net>
Subject: Re: [PATCH v2] Support conditional deps using "depends on X if Y"

On Fri, Dec 5, 2025, at 02:53, Nathan Chancellor wrote:
> On Tue, Nov 18, 2025 at 10:46:51AM -0800, Graham Roff wrote:
>>
>> arch/arm64/Kconfig:
>>   depends on ARM64_64K_PAGES || !ARM64_VA_BITS_52 -->
>>   depends on ARM64_64K_PAGES if ARM64_VA_BITS_52
>> arch/mips/Kconfig:
>>   depends on SYS_SUPPORTS_HOTPLUG_CPU || !SMP -->
>>   depends on SYS_SUPPORTS_HOTPLUG_CPU if SMP
>> arch/riscv/Kconfig:
>>   depends on CC_HAS_MIN_FUNCTION_ALIGNMENT || !RISCV_ISA_C -->
>>   depends on CC_HAS_MIN_FUNCTION_ALIGNMENT if RISCV_ISA_C
>> arch/x86/Kconfig:
>>   depends on X86_64 || !SPARSEMEM -->
>>   depends on X86_64 if SPARSEMEM
>> drivers/acpi/Kconfig:
>>   depends on ACPI_WMI || !X86 -->
>>   depends on ACPI_WMI if X86
>> drivers/bluetooth/Kconfig:
>>   depends on USB || !BT_HCIBTUSB_MTK
>>   depends on USB if BT_HCIBTUSB_MTK
>> mm/Kconfig:
>>   depends on !ARM || CPU_CACHE_VIPT -->
>>   depends on CPU_CACHE_VIPT if ARM
>> kernel/Kconfig.locks:
>>   depends on !PREEMPTION || ARCH_INLINE_READ_UNLOCK -->
>>   depends on ARCH_INLINE_READ_UNLOCK if PREEMPTION
>
> On the surface, the vast majority these become more readable using the
> 'if' syntax.

Agreed, the question is whether a small improvement in
readability is worth the complexity of having multiple
ways of expressing the same thing.

I don't see anything that the new syntax would allow
that we were currently missing.

>> @@ -602,8 +612,14 @@ Some drivers are able to optionally use a feature from another module
>>  or build cleanly with that module disabled, but cause a link failure
>>  when trying to use that loadable module from a built-in driver.
>>  
>> -The most common way to express this optional dependency in Kconfig logic
>> -uses the slightly counterintuitive::
>> +The recommended way to express this optional dependency in Kconfig logic
>> +uses the conditional form::
>> +
>> +  config FOO
>> +	tristate "Support for foo hardware"
>> +	depends on BAR if BAR
>> +
>> +This slightly counterintuitive style is also widely used::
>>  

This is the bit that frequently confuses developers with the
current syntax, and I agree it would be nice to have a better
way,  but I'm not sure the proposal actually helps enough to
warrant a mass-conversion of existing Kconfig files.

>> +config TEST_COMPLEX
>> +    bool "Test complex conditional dependency"
>> +    depends on (FOO && BAR) if (FOO || BAR)
>> +    default y

With the existing syntax, this could be expressed as

      depends on FOO = BAR

or

      depends on (FOO && BAR) || (!FOO && !BAR)

and I don't see how the new syntax is an improvement
over these.

Overall, I'm not convinced by this patch. I have no strong
objection to anything in here, but I'm worried that extending
the syntax adds more problems than this one solves.

    Arnd

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ