android_kernel_motorola_sm6375/scripts/kconfig
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ulf Magnusson 7cf33f88e2 kconfig: Fix choice symbol expression leak
When propagating dependencies from parents after parsing, an expression
node is allocated if the parent symbol is a 'choice'. This node was
never freed.

Outline of leak:

	if (sym && sym_is_choice(sym)) {
		...
		*Allocate (in this case only)*
		parentdep = expr_alloc_symbol(sym);
	} else if (parent->prompt)
		parentdep = parent->prompt->visible.expr;
	else
		parentdep = parent->dep;

	for (menu = parent->list; menu; menu = menu->next) {
		...
		*Copy*
		basedep = expr_alloc_and(expr_copy(parentdep), basedep);
		...
	}
	*parentdep lost if the parent is a choice!*

Fix by freeing 'parentdep' after the loop if the parent symbol is a
choice. Note that this only frees the expression node and not the choice
symbol itself.

Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:

	LEAK SUMMARY:
	   definitely lost: 1,608 bytes in 67 blocks
	   ...

Summary after the fix:

	LEAK SUMMARY:
	   definitely lost: 0 bytes in 0 blocks
	   ...

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-01-22 00:49:27 +09:00
..
lxdialog License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
.gitignore Remove gperf usage from toolchain 2017-08-19 11:02:53 -07:00
check.sh License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
conf.c
confdata.c
expr.c kconfig: Fix expr_free() E_NOT leak 2018-01-22 00:49:27 +09:00
expr.h kconfig: Document the 'symbol' struct 2017-12-07 23:46:57 +09:00
gconf.c
gconf.glade
images.c
kconf_id.c Remove gperf usage from toolchain 2017-08-19 11:02:53 -07:00
kxgettext.c
list.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
lkc.h Remove gperf usage from toolchain 2017-08-19 11:02:53 -07:00
lkc_proto.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile kconfig: generate lexer and parser during build instead of shipping 2017-12-16 11:12:54 +09:00
mconf.c
menu.c kconfig: Fix choice symbol expression leak 2018-01-22 00:49:27 +09:00
merge_config.sh
nconf.c kconfig: fix sparse warnings in nconfig 2017-06-23 06:00:52 +09:00
nconf.gui.c kconfig: fix sparse warnings in nconfig 2017-06-23 06:00:52 +09:00
nconf.h
POTFILES.in
qconf.cc
qconf.h
streamline_config.pl
symbol.c kconfig: Don't leak 'source' filenames during parsing 2018-01-11 01:14:01 +09:00
util.c
zconf.l
zconf.y kconfig: Don't leak main menus during parsing 2018-01-22 00:49:23 +09:00