Re: [kernel-hardening] Re: [PATCH] lkdtm: Add tests for LIST_POISON and ZERO_SIZE_PTR

From: Kees Cook
Date: Thu Nov 17 2016 - 14:56:56 EST


On Thu, Nov 17, 2016 at 2:53 AM, Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote:
> kbuild test robot <lkp@xxxxxxxxx> writes:
>> [auto build test ERROR on char-misc/char-misc-testing]
>> [also build test ERROR on v4.9-rc5]
>> [cannot apply to next-20161115]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>
>> url: https://github.com/0day-ci/linux/commits/Michael-Ellerman/lkdtm-Add-tests-for-LIST_POISON-and-ZERO_SIZE_PTR/20161115-235441
>> config: i386-randconfig-i0-201646 (attached as .config)
>> compiler: gcc-4.8 (Debian 4.8.4-1) 4.8.4
>> reproduce:
>> # save the attached .config to linux build tree
>> make ARCH=i386
>>
>> All errors (new ones prefixed by >>):
>>
>>>> ERROR: "mmap_min_addr" [drivers/misc/lkdtm.ko] undefined!
>
> I couldn't see what was causing this, but of course it's just that
> mmap_min_addr is not exported, and in that config LKDTM is a module.
>
> I always build it in which is why I didn't notice.
>
> I'm not sure we want to EXPORT_SYMBOL mmap_min_addr just for this test
> do we? I could change the test to use mmap_min_addr if LKDTM is
> built-in, and otherwise just map at zero. Dunno.

Because of lkdtm's moduleness, I've had to put a lot of weird stuff
into EXPORT_SYMBOL_GPL(). mmap_min_addr is more sensitive than most,
though. How about just hard-coding it as 64k instead of using
mmap_min_addr? Anyone using >64k is likely going to understand why
lkdtm failed.

-Kees

--
Kees Cook
Nexus Security