Mihai Moldovan
f59db26081
kconfig: nconf: stop endless search loops
...
[ Upstream commit 8c94b430b9f6213dec84e309bb480a71778c4213 ]
If the user selects the very first entry in a page and performs a
search-up operation, or selects the very last entry in a page and
performs a search-down operation that will not succeed (e.g., via
[/]asdfzzz[Up Arrow]), nconf will never terminate searching the page.
The reason is that in this case, the starting point will be set to -1
or n, which is then translated into (n - 1) (i.e., the last entry of
the page) or 0 (i.e., the first entry of the page) and finally the
search begins. This continues to work fine until the index reaches 0 or
(n - 1), at which point it will be decremented to -1 or incremented to
n, but not checked against the starting point right away. Instead, it's
wrapped around to the bottom or top again, after which the starting
point check occurs... and naturally fails.
My original implementation added another check for -1 before wrapping
the running index variable around, but Masahiro Yamada pointed out that
the actual issue is that the comparison point (starting point) exceeds
bounds (i.e., the [0,n-1] interval) in the first place and that,
instead, the starting point should be fixed.
This has the welcome side-effect of also fixing the case where the
starting point was n while searching down, which also lead to an
infinite loop.
OTOH, this code is now essentially all his work.
Amazingly, nobody seems to have been hit by this for 11 years - or at
the very least nobody bothered to debug and fix this.
Signed-off-by: Mihai Moldovan <ionic@ionic.de>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-19 10:08:23 +02:00
..
atomic
locking/atomics: Use sed(1) instead of non-standard head(1) option
2019-06-25 10:17:07 +02:00
basic
kbuild: remove unneeded comments and code from scripts/basic/Makefile
2019-08-29 23:54:29 +09:00
coccinelle
scripts: add dummy report mode to add_namespace.cocci
2020-08-11 15:33:35 +02:00
dtc
scripts/dtc: only append to HOST_EXTRACFLAGS instead of overwriting
2020-10-07 08:01:29 +02:00
gcc-plugins
gcc-common.h: Update for GCC 10
2020-05-27 17:46:24 +02:00
gdb
scripts/gdb: fix lx-symbols 'gdb.error' while loading modules
2020-07-29 10:18:35 +02:00
genksyms
genksyms: convert to SPDX License Identifier for lex.l and parse.y
2019-09-14 11:40:13 +09:00
kconfig
kconfig: nconf: stop endless search loops
2021-05-19 10:08:23 +02:00
ksymoops
mod
vmlinux.lds.h: Create section for protection against instrumentation
2021-02-17 10:35:16 +01:00
package
kbuild: fix broken builds because of GZIP,BZIP2,LZOP variables
2020-09-03 11:27:10 +02:00
selinux
tracing
.gitignore
adjust_autoksyms.sh
kbuild: remove the first line of *.mod files
2019-07-18 02:19:31 +09:00
asn1_compiler.c
bin2c.c
bloat-o-meter
bootgraph.pl
bpf_helpers_doc.py
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
scripts/config: allow colons in option strings for sed
2020-05-10 10:31:27 +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
documentation-file-ref-check
scripts/documentation-file-ref-check: ignore output dir
2019-06-14 14:43:01 -06:00
export_report.pl
modpost: move the namespace field in Module.symvers last
2020-03-25 08:25:55 +01:00
extract-cert.c
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
faddr2line
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_compile_commands: lower the entry count threshold
2019-07-27 12:18:19 +09:00
gen_ksymdeps.sh
get_abi.pl
doc: ABI scripts: add a SPDX header file
2019-06-21 16:58:37 +02:00
get_dvb_firmware
get_maintainer.pl
get_maintainer: add ability to skip moderated mailing lists
2019-07-16 19:23:22 -07:00
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: improve cc-option to clean up all temporary files
2020-06-30 15:37:05 -04:00
Kconfig.include
kconfig: introduce m32-flag and m64-flag
2020-04-08 09:08:37 +02:00
kernel-doc
kernel-doc: Allow anonymous enum
2019-08-12 15:00:37 -06:00
ld-version.sh
leaking_addresses.pl
Lindent
link-vmlinux.sh
bpf: Support llvm-objcopy for vmlinux BTF
2020-06-17 16:40:20 +02: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: avoid split lines in .mod files
2020-12-30 11:50:57 +01:00
Makefile.clean
kbuild: clean up subdir-ymn calculation in Makefile.clean
2019-08-29 23:54:29 +09:00
Makefile.dtbinst
Makefile.extrawarn
kbuild: Disable -Wpointer-to-enum-cast
2020-03-25 08:25:54 +01:00
Makefile.gcc-plugins
Makefile.headersinst
kbuild: move headers_check rule to usr/include/Makefile
2020-03-05 16:43:47 +01:00
Makefile.host
kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj)
2019-09-04 23:12:50 +09:00
Makefile.kasan
kasan/arm64: fix CONFIG_KASAN_SW_TAGS && KASAN_INLINE
2019-08-15 13:24:04 +01:00
Makefile.kcov
Makefile.lib
kbuild: fix broken builds because of GZIP,BZIP2,LZOP variables
2020-09-03 11:27:10 +02:00
Makefile.modbuiltin
kbuild: get rid of kernel/ prefix from in-tree modules.{order,builtin}
2019-07-17 22:39:27 +09:00
Makefile.modfinal
kbuild: move modkern_{c,a}flags to Makefile.lib from Makefile.build
2019-08-22 01:14:11 +09:00
Makefile.modinst
kbuild: modinst: read modules.order instead of $(MODVERDIR)/*.mod
2019-07-17 22:39:27 +09:00
Makefile.modpost
Modules updates for v5.4
2019-09-22 10:34:46 -07:00
Makefile.modsign
kbuild: modsign: read modules.order instead of $(MODVERDIR)/*.mod
2019-07-17 22:39:27 +09:00
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: Handle PREEMPT_RT for version string and magic
2019-08-14 01:10:42 +09:00
mkmakefile
kbuild: get rid of $(realpath ...) from scripts/mkmakefile
2019-08-29 23:54:29 +09:00
mksysmap
mksysmap: Fix the mismatch of '.L' symbols in System.map
2020-06-24 17:50:19 +02:00
mkuboot.sh
module-common.lds
modules-check.sh
kbuild: get rid of kernel/ prefix from in-tree modules.{order,builtin}
2019-07-17 22:39:27 +09:00
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
ftrace: Have recordmcount use w8 to read relp->r_info in arm64_is_fake_mcount
2021-03-09 11:09:39 +01:00
recordmcount.h
recordmcount: support >64k sections
2020-06-30 15:37:05 -04:00
recordmcount.pl
scripts/recordmcount.pl: support big endian for ARCH sh
2021-02-26 10:10:28 +01:00
setlocalversion
scripts/setlocalversion: make git describe output more reliable
2020-11-01 12:01:01 +01:00
show_delta
sign-file.c
sortextable.c
sortextable.h
spdxcheck-test.sh
spdxcheck.py
spelling.txt
scripts/spelling.txt: add more spellings to spelling.txt
2019-07-12 11:05:41 -07:00
sphinx-pre-install
scripts/sphinx-pre-install: seek for Noto CJK fonts for pdf output
2019-07-17 06:57:52 -03:00
split-man.pl
stackdelta
stackusage
subarch.include
tags.sh
kbuild: add a flag to force absolute path for srctree
2019-07-11 00:05:09 +09:00
tools-support-relr.sh
scripts/tools-support-relr.sh: un-quote variables
2019-11-13 10:52:05 +00: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