Mihai Moldovan
01d09d4135
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-22 10:40:30 +02:00
..
basic
fixdep: faster CONFIG_ search
2016-08-24 22:34:19 +02:00
coccinelle
fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock
2019-06-11 12:22:49 +02:00
dtc
scripts/dtc: Remove redundant YYLOC global declaration
2020-04-02 17:20:33 +02:00
gcc-plugins
gcc-common.h: Update for GCC 10
2020-05-27 16:41:43 +02:00
gdb
scripts/gdb: fix lx-version string output
2021-01-12 19:49:03 +01:00
genksyms
kbuild: Regenerate genksyms lexer
2016-08-25 20:03:51 +02:00
kconfig
kconfig: nconf: stop endless search loops
2021-05-22 10:40:30 +02:00
ksymoops
mod
modpost: skip ELF local symbols during section mismatch check
2019-12-21 10:41:17 +01:00
package
builddeb: Fix header package regarding dtc source links
2018-05-30 07:50:39 +02:00
selinux
selinux: explicitly declare the role "base_r"
2015-07-13 13:32:00 -04:00
tracing
ftrace/scripts: Add helper script to bisect function tracing problem functions
2016-09-21 13:56:55 -04:00
.gitignore
KEYS: Reserve an extra certificate symbol for inserting without recompiling
2016-02-26 15:30:20 +00:00
adjust_autoksyms.sh
kbuild: make scripts/adjust_autoksyms.sh robust against timestamp races
2018-05-30 07:50:37 +02:00
analyze_suspend.py
PM / tools: scripts: AnalyzeSuspend v4.2
2016-07-15 23:34:14 +02:00
asn1_compiler.c
ASN.1: fix open failure check on headername
2016-04-06 14:06:48 +01:00
bloat-o-meter
scripts/bloat-o-meter: fix SIGPIPE
2016-11-11 08:12:37 -08:00
bootgraph.pl
check-lc_ctype.c
DocBook: Use a fixed encoding for output
2015-09-28 01:31:48 -06:00
check_extable.sh
checkincludes.pl
checkkconfigsymbols.py
checkkconfigsymbols: use arglist instead of cmd string
2016-08-28 11:08:34 +02:00
checkpatch.pl
checkpatch: fix unescaped left brace
2020-12-29 13:45:01 +01:00
checkstack.pl
scripts/checkstack.pl: Fix arm64 wrong or unknown architecture
2019-07-10 09:55:31 +02:00
checksyscalls.sh
x86/asm/entry: Move the arch/x86/syscalls/ definitions to arch/x86/entry/syscalls/
2015-06-04 07:37:37 +02:00
checkversion.pl
cleanfile
cleanpatch
coccicheck
coccinelle: fix parallel build with CHECK=scripts/coccicheck
2017-12-14 09:28:22 +01:00
config
scripts/config: allow colons in option strings for sed
2020-05-10 10:28:01 +02:00
conmakehash.c
const_structs.checkpatch
const_structs.checkpatch: add frequently used from Julia Lawall's list
2016-10-11 15:06:30 -07:00
decode_stacktrace.sh
scripts/decode_stacktrace: strip basepath from all paths
2020-07-31 16:44:03 +02:00
decodecode
scripts/decodecode: fix trapping instruction formatting
2020-05-20 08:15:29 +02:00
depmod.sh
depmod: handle the case of /sbin/depmod without /sbin in PATH
2021-01-12 19:49:01 +01:00
diffconfig
docproc.c
docproc: print a comment about autogeneration for rst output
2016-05-14 09:56:56 -06:00
export_report.pl
extract-cert.c
KEYS: Remove unnecessary header #inclusions from extract-cert.c
2015-09-25 16:31:45 +01:00
extract-ikconfig
extract-module-sig.pl
KEYS: Provide a script to extract a module signature
2015-10-21 15:18:36 +01:00
extract-sys-certs.pl
KEYS: Use the symbol value for list size, updated by scripts/insert-sys-cert
2016-02-26 15:32:05 +00:00
extract-vmlinux
extract_xc3028.pl
[media] extract_xc3028.pl: move it to scripts/dir
2016-07-17 14:08:12 -03:00
faddr2line
scripts/faddr2line: improve on base path filtering a bit
2016-09-19 14:49:08 -07:00
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-plugins: abort builds cleanly when not supported
2016-08-08 17:49:05 -07:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
scripts/has-stack-protector: add -fno-PIE
2016-11-09 22:28:05 +01:00
gen_initramfs_list.sh
initramfs: Escape colons in depfile
2016-09-23 10:35:32 +02:00
get_dvb_firmware
[media] doc-rst: move DVB avulse docs to Documentation/media
2016-07-17 14:02:45 -03:00
get_maintainer.pl
get_maintainer: quiet noisy implicit -f vcs_file_exists checking
2016-08-26 17:39:34 -07:00
gfp-translate
headerdep.pl
headers.sh
headers_check.pl
headers_check: don't warn about c++ guards
2016-05-24 14:12:48 +10:00
headers_install.sh
insert-sys-cert.c
KEYS: Reserve an extra certificate symbol for inserting without recompiling
2016-02-26 15:30:20 +00:00
kallsyms.c
scripts/kallsyms: fix definitely-lost memory leak
2020-01-04 13:41:02 +01:00
Kbuild.include
kbuild: improve cc-option to clean up all temporary files
2020-06-30 15:38:43 -04:00
kernel-doc
scripts/kernel-doc: Don't fail with status != 0 if error encountered with -none
2018-02-25 11:05:47 +01:00
kernel-doc-xml-ref
scripts/kernel-doc: Adding cross-reference links to html documentation.
2015-08-16 22:11:16 -06:00
ld-version.sh
ld-version: Drop the 4th and 5th version components
2016-05-13 14:02:05 +02:00
Lindent
scripts/Lindent: handle missing indent gracefully
2015-09-04 16:54:41 -07:00
link-vmlinux.sh
kbuild: allow architectures to use thin archives instead of ld -r
2016-09-09 10:31:19 +02:00
Makefile
scripts: set proper OpenSSL include dir also for sign-file
2021-03-07 11:25:55 +01:00
Makefile.asm-generic
kbuild: Remove stale asm-generic wrappers
2016-07-07 15:58:45 +02:00
Makefile.build
tracing: Avoid calling cc-option -mrecord-mcount for every Makefile
2021-02-23 13:59:17 +01:00
Makefile.clean
Shared library support
2016-06-07 22:57:10 +02:00
Makefile.dtbinst
dtbsinstall: don't move target directory out of the way
2016-01-28 11:40:32 +01:00
Makefile.extrawarn
kbuild: Disable -Wpointer-to-enum-cast
2020-04-02 17:20:27 +02:00
Makefile.fwinst
Makefile.gcc-plugins
gcc-plugins: Add latent_entropy plugin
2016-10-10 14:51:44 -07:00
Makefile.headersinst
Makefile.help
Makefile.host
kbuild: Add __cc-option macro
2018-11-23 08:20:35 +01:00
Makefile.kasan
kasan: don't emit builtin calls when sanitization is off
2018-08-17 20:59:29 +02:00
Makefile.lib
kbuild: fix asm-offset generation to work with clang
2018-11-23 08:20:35 +01:00
Makefile.modbuiltin
Makefile.modinst
modsign: Abort modules_install when signing fails
2015-08-07 16:26:13 +01:00
Makefile.modpost
kbuild: modpost: handle KBUILD_EXTRA_SYMBOLS only for external modules
2019-08-25 10:51:47 +02:00
Makefile.modsign
Makefile.ubsan
Kbuild: enable -Wmaybe-uninitialized warning for "make W=1"
2016-11-11 08:45:08 -08:00
makelst
markup_oops.pl
mkcompile_h
mkmakefile
mksysmap
mksysmap: Fix the mismatch of '.L' symbols in System.map
2020-06-30 15:38:23 -04:00
mkuboot.sh
mkversion
module-common.lds
objtool, modules: Discard objtool annotation sections for modules
2018-01-17 09:38:58 +01:00
namespace.pl
namespace: fix namespace.pl script to support relative paths
2019-10-29 09:15:06 +01:00
objdiff
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
scripts: add "prune-kernel" script to clean up old kernel images
2016-02-09 10:09:52 -08:00
recordmcount.c
scripts/recordmcount.{c,pl}: support -ffunction-sections .text.* section names
2021-03-17 16:10:15 +01:00
recordmcount.h
recordmcount: Fix spurious mcount entries on powerpc
2019-08-04 09:33:38 +02:00
recordmcount.pl
scripts/recordmcount.{c,pl}: support -ffunction-sections .text.* section names
2021-03-17 16:10:15 +01:00
setlocalversion
scripts/setlocalversion: make git describe output more reliable
2020-11-10 10:23:50 +01:00
show_delta
sign-file.c
modsign: Make sign-file determine the format of the X.509 cert
2016-06-14 13:18:33 +01:00
sortextable.c
parisc: Use generic extable search and sort routines
2016-03-23 16:00:46 +01:00
sortextable.h
spelling.txt
spelling.txt: "modeled" is spelt correctly
2016-10-07 18:46:30 -07:00
stackdelta
scripts: add stackdelta script
2015-08-28 17:04:40 +02:00
stackusage
scripts: add stackusage script
2015-08-28 17:04:40 +02:00
tags.sh
tags: honor COMPILED_SOURCE with apart output directory
2018-04-13 19:48:21 +02:00
unifdef.c
unifdef: use memcpy instead of strncpy
2018-12-08 13:05:05 +01:00
ver_linux
ver_linux: rename ver_linux.awk to ver_linux
2016-08-31 13:59:31 +02:00
xen-hypercalls.sh
xz_wrap.sh