Masahiro Yamada
59fc8ffb54
kconfig: remove wrong expr_trans_bool()
...
[ Upstream commit 77a92660d8fe8d29503fae768d9f5eb529c88b36 ]
expr_trans_bool() performs an incorrect transformation.
[Test Code]
config MODULES
def_bool y
modules
config A
def_bool y
select C if B != n
config B
def_tristate m
config C
tristate
[Result]
CONFIG_MODULES=y
CONFIG_A=y
CONFIG_B=m
CONFIG_C=m
This output is incorrect because CONFIG_C=y is expected.
Documentation/kbuild/kconfig-language.rst clearly explains the function
of the '!=' operator:
If the values of both symbols are equal, it returns 'n',
otherwise 'y'.
Therefore, the statement:
select C if B != n
should be equivalent to:
select C if y
Or, more simply:
select C
Hence, the symbol C should be selected by the value of A, which is 'y'.
However, expr_trans_bool() wrongly transforms it to:
select C if B
Therefore, the symbol C is selected by (A && B), which is 'm'.
The comment block of expr_trans_bool() correctly explains its intention:
* bool FOO!=n => FOO
^^^^
If FOO is bool, FOO!=n can be simplified into FOO. This is correct.
However, the actual code performs this transformation when FOO is
tristate:
if (e->left.sym->type == S_TRISTATE) {
^^^^^^^^^^
While it can be fixed to S_BOOLEAN, there is no point in doing so
because expr_tranform() already transforms FOO!=n to FOO when FOO is
bool. (see the "case E_UNEQUAL" part)
expr_trans_bool() is wrong and unnecessary.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-07-27 10:38:29 +02:00
..
atomic
basic
coccinelle
scripts: add dummy report mode to add_namespace.cocci
2020-08-11 15:33:35 +02:00
dtc
scripts/dtc: dtx_diff: remove broken example from help text
2022-01-27 09:19:55 +01:00
gcc-plugins
gcc-plugins: Rename last_stmt() for GCC 14+
2024-07-27 10:38:28 +02:00
gdb
scripts/gdb: fix lx-timerlist for Python3
2023-05-17 11:35:55 +02:00
genksyms
kconfig
kconfig: remove wrong expr_trans_bool()
2024-07-27 10:38:29 +02:00
ksymoops
mod
modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
2023-11-20 10:30:14 +01:00
package
kbuild: fix broken builds because of GZIP,BZIP2,LZOP variables
2020-09-03 11:27:10 +02:00
selinux
selinux: use "grep -E" instead of "egrep"
2022-10-26 13:22:21 +02:00
tracing
ftrace/scripts: Update the instructions for ftrace-bisect.sh
2023-02-06 07:52:44 +01:00
.gitignore
adjust_autoksyms.sh
asn1_compiler.c
ASN.1: Fix check for strdup() success
2023-04-26 11:24:06 +02:00
bin2c.c
bloat-o-meter
scripts: switch explicitly to Python 3
2021-05-22 11:38:30 +02:00
bootgraph.pl
bpf_helpers_doc.py
scripts/bpf: Fix xdp_md forward declaration typo
2024-03-01 13:13:38 +01:00
cc-can-link.sh
check_extable.sh
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl
checkpatch: fix unescaped left brace
2020-12-30 11:51:27 +01:00
checkstack.pl
checksyscalls.sh
checkversion.pl
clang-version.sh
cleanfile
cleanpatch
coccicheck
config
tweewide: Fix most Shebang lines
2021-05-22 11:38:30 +02:00
conmakehash.c
const_structs.checkpatch
decode_stacktrace.sh
scripts/decode_stacktrace: strip basepath from all paths
2020-07-29 10:18:35 +02:00
decodecode
scripts/decodecode: fix trapping instruction formatting
2020-05-14 07:58:29 +02:00
depmod.sh
depmod: handle the case of /sbin/depmod without /sbin in PATH
2021-01-12 20:16:10 +01:00
diffconfig
scripts: switch explicitly to Python 3
2021-05-22 11:38:30 +02:00
documentation-file-ref-check
export_report.pl
modpost: move the namespace field in Module.symvers last
2020-03-25 08:25:55 +01:00
extract-cert.c
cert host tools: Stop complaining about deprecated OpenSSL functions
2022-11-25 17:42:10 +01:00
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
faddr2line
scripts/faddr2line: Fix regression in name resolution on ppc64le
2022-12-08 11:23:02 +01:00
file-size.sh
find-unused-docs.sh
scripts/find-unused-docs: Fix massive false positives
2020-02-11 04:35:23 -08:00
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_compile_commands.py
gen_ksymdeps.sh
kbuild: Fix 'no symbols' warning when CONFIG_TRIM_UNUSD_KSYMS=y
2021-09-22 12:26:26 +02:00
get_abi.pl
tweewide: Fix most Shebang lines
2021-05-22 11:38:30 +02:00
get_dvb_firmware
get_maintainer.pl
gfp-translate
headerdep.pl
headers_check.pl
headers_install.sh
scripts: headers_install: Exit with error on config leak
2020-06-24 17:50:33 +02:00
insert-sys-cert.c
kallsyms.c
scripts/kallsyms: fix definitely-lost memory leak
2020-01-04 19:18:23 +01:00
Kbuild.include
kbuild: remove the target in signal traps when interrupted
2022-10-26 13:22:46 +02:00
Kconfig.include
kconfig: introduce m32-flag and m64-flag
2020-04-08 09:08:37 +02:00
kernel-doc
ld-version.sh
leaking_addresses.pl
leaking_addresses: Always print a trailing newline
2021-11-17 09:48:31 +01:00
Lindent
link-vmlinux.sh
kbuild: Fix changing ELF file type for output of gen_btf for big endian
2024-02-23 08:25:10 +01:00
Makefile
scripts: set proper OpenSSL include dir also for sign-file
2021-02-26 10:10:27 +01:00
Makefile.asm-generic
Makefile.build
kbuild: Fix objtool dependency for 'OBJECT_FILES_NON_STANDARD_<obj> := n'
2021-07-14 16:53:20 +02:00
Makefile.clean
Makefile.dtbinst
Makefile.extrawarn
kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1
2024-04-13 12:51:26 +02:00
Makefile.gcc-plugins
gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
2022-08-25 11:18:31 +02:00
Makefile.headersinst
kbuild: move headers_check rule to usr/include/Makefile
2020-03-05 16:43:47 +01:00
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.lib
kbuild: fix broken builds because of GZIP,BZIP2,LZOP variables
2020-09-03 11:27:10 +02:00
Makefile.modbuiltin
Makefile.modfinal
Makefile.modinst
Makefile.modpost
kbuild: Fix include path in scripts/Makefile.modpost
2022-09-05 10:27:45 +02:00
Makefile.modsign
Makefile.package
kbuild: fix broken builds because of GZIP,BZIP2,LZOP variables
2020-09-03 11:27:10 +02:00
Makefile.ubsan
makelst
markup_oops.pl
mkcompile_h
kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set
2021-07-25 14:35:12 +02:00
mkmakefile
mksysmap
mksysmap: Fix the mismatch of 'L0' symbols in System.map
2022-09-28 11:03:59 +02:00
mkuboot.sh
module-common.lds
modules-check.sh
namespace.pl
namespace: fix namespace.pl script to support relative paths
2019-10-05 15:29:49 +09:00
nsdeps
scripts: add dummy report mode to add_namespace.cocci
2020-08-11 15:33:35 +02:00
objdiff
parse-maintainers.pl
parse-maintainers: Mark as executable
2020-03-25 08:25:49 +01:00
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount: Fix memory leaks in the uwrite function
2023-05-30 12:44:04 +01:00
recordmcount.h
recordmcount: Correct st_shndx handling
2021-06-30 08:47:49 -04:00
recordmcount.pl
recordmcount.pl: fix typo in s390 mcount regex
2022-01-05 12:37:44 +01:00
setlocalversion
scripts/setlocalversion: make git describe output more reliable
2020-11-01 12:01:01 +01:00
show_delta
tweewide: Fix most Shebang lines
2021-05-22 11:38:30 +02:00
sign-file.c
sign-file: Fix incorrect return values check
2023-12-20 15:41:17 +01:00
sortextable.c
sortextable.h
spdxcheck-test.sh
spdxcheck.py
spelling.txt
sphinx-pre-install
tweewide: Fix most Shebang lines
2021-05-22 11:38:30 +02:00
split-man.pl
tweewide: Fix most Shebang lines
2021-05-22 11:38:30 +02:00
stackdelta
stackusage
subarch.include
tags.sh
scripts/tags.sh: Resolve gtags empty index generation
2023-07-27 08:37:03 +02:00
tools-support-relr.sh
Makefile: fix GDB warning with CONFIG_RELR
2021-07-14 16:53:12 +02:00
unifdef.c
ver_linux
xen-hypercalls.sh
xz_wrap.sh
kbuild: add variables for compression tools
2020-09-03 11:27:10 +02:00