diff options
| author | Masahiro Yamada <masahiroy@kernel.org> | 2024-09-25 20:25:31 +0900 | 
|---|---|---|
| committer | Masahiro Yamada <masahiroy@kernel.org> | 2024-09-30 20:42:52 +0900 | 
| commit | 4d46b5b623e0adee1153b1d80689211e5094ae44 (patch) | |
| tree | 1651276ce9429f86257396c9384067488ec7f8af /tools/perf/util/scripting-engines/trace-event-python.c | |
| parent | 7fb1d1e0382c2841906fbc1bad7d902b21fe67de (diff) | |
kconfig: fix infinite loop in sym_calc_choice()
Since commit f79dc03fe68c ("kconfig: refactor choice value calculation"),
Kconfig for ARCH=powerpc may result in an infinite loop. This occurs
because there are two entries for POWERPC64_CPU in a choice block.
If the same symbol appears twice in a choice block, the ->choice_link
node is added twice to ->choice_members, resulting a corrupted linked
list.
A simple test case is:
    choice
            prompt "choice"
    config A
            bool "A"
    config B
            bool "B 1"
    config B
            bool "B 2"
    endchoice
Running 'make defconfig' results in an infinite loop.
One solution is to replace the current two entries:
    config POWERPC64_CPU
            bool "Generic (POWER5 and PowerPC 970 and above)"
            depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
            select PPC_64S_HASH_MMU
    config POWERPC64_CPU
            bool "Generic (POWER8 and above)"
            depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
            select ARCH_HAS_FAST_MULTIPLIER
            select PPC_64S_HASH_MMU
            select PPC_HAS_LBARX_LHARX
with the following single entry:
    config POWERPC64_CPU
            bool "Generic 64 bit powerpc"
            depends on PPC_BOOK3S_64
            select ARCH_HAS_FAST_MULTIPLIER if CPU_LITTLE_ENDIAN
            select PPC_64S_HASH_MMU
            select PPC_HAS_LBARX_LHARX if CPU_LITTLE_ENDIAN
In my opinion, the latter looks cleaner, but PowerPC maintainers may
prefer to display different prompts depending on CPU_LITTLE_ENDIAN.
For now, this commit fixes the issue in Kconfig, restoring the original
behavior. I will reconsider whether such a use case is worth supporting.
Fixes: f79dc03fe68c ("kconfig: refactor choice value calculation")
Reported-by: Marco Bonelli <marco@mebeim.net>
Closes: https://lore.kernel.org/all/1763151587.3581913.1727224126288@privateemail.com/
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
0 files changed, 0 insertions, 0 deletions
