lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Sun,  8 Oct 2017 19:11:17 +0200
From:   Ulf Magnusson <ulfalizer@...il.com>
To:     yann.morin.1998@...e.fr, linux-kbuild@...r.kernel.org
Cc:     sam@...nborg.org, zippel@...ux-m68k.org, nicolas.pitre@...aro.org,
        michal.lkml@...kovi.net, dirk@...ders.net,
        yamada.masahiro@...ionext.com, lacombar@...il.com,
        walch.martin@....de, JBeulich@...e.com,
        linux-kernel@...r.kernel.org, Ulf Magnusson <ulfalizer@...il.com>
Subject: [PATCH 0/6] kconfig: Fix memory leaks during parsing

Hello,

This patchset plugs all memory leaks that occur in the parser (zconf.y) while
parsing the x86 Kconfigs (and likely the other ARCHes too). I noticed that
Kconfig is pretty leaky while working on the fix for 'm' before MODULES
(http://www.spinics.net/lists/linux-kbuild/msg15606.html).

The biggest culprit is all symbol names being leaked outside of expressions:
316 KB leaked. 'source' filenames being leaked adds another 41 KB. The other
leaks are minor (< 1 KB each). The fixes can be applied independently.

This is mostly just to get a clean slate with Valgrind, but also cleans up the
code a bit as a side effect. Any performance difference (plus or minus) seems
to be in the noise.

Tested with the Kconfiglib test suite, which indirectly verifies that Kconfig
still generates the same .config for alldefconfig, allnoconfig, allyesconfig,
and all defconfigs, for all architectures. I also tested that menuconfig gets
the right main menu text with and without a 'mainmenu' statement.

As a reminder, the parsers can be rebuilt like this:

	$ make REGENERATE_PARSERS=1 conf

Here's an easy way to run Valgrind on menuconfig (nothing seems to look at
KERNELVERSION, so just set it to avoid a warning):

	$ ARCH=x86 SRCARCH=x86 KERNELVERSION=4.14.0-rc2 valgrind --leak-check=full scripts/kconfig/mconf Kconfig

Cheers,
Ulf

Ulf Magnusson (6):
  kconfig: Don't leak symbol names during parsing
  kconfig: Don't leak 'source' filenames during parsing
  kconfig: Don't leak 'option' arguments during parsing
  Kconfig: Don't leak main menus during parsing
  kconfig: Don't leak help strings during parsing
  kconfig: Regenerate parser

 scripts/kconfig/symbol.c            |   5 +
 scripts/kconfig/zconf.tab.c_shipped | 562 +++++++++++++++++++-----------------
 scripts/kconfig/zconf.y             |  77 +++--
 3 files changed, 349 insertions(+), 295 deletions(-)

-- 
2.7.4

Powered by blists - more mailing lists