Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 3 Dec 2016 15:24:32 +0800
From: kbuild test robot <lkp@...el.com>
To: Michael Ellerman <mpe@...erman.id.au>
Cc: kbuild-all@...org, keescook@...omium.org,
	kernel-hardening@...ts.openwall.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] lkdtm: Add tests for LIST_POISON and ZERO_SIZE_PTR

Hi Michael,

[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR on v4.9-rc7]
[cannot apply to next-20161202]
[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/20161203-124958
config: blackfin-allyesconfig (attached as .config)
compiler: bfin-uclinux-gcc (GCC) 6.2.0
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=blackfin 

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/cache.h:4:0,
                    from include/linux/printk.h:8,
                    from include/linux/kernel.h:13,
                    from drivers/misc/lkdtm.h:6,
                    from drivers/misc/lkdtm_bugs.c:7:
   drivers/misc/lkdtm_bugs.c: In function 'test_poison_ptr':
>> drivers/misc/lkdtm_bugs.c:160:20: error: 'CONFIG_DEFAULT_MMAP_MIN_ADDR' undeclared (first use in this function)
     bias = PAGE_ALIGN(CONFIG_DEFAULT_MMAP_MIN_ADDR);
                       ^
   include/uapi/linux/kernel.h:10:41: note: in definition of macro '__ALIGN_KERNEL_MASK'
    #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
                                            ^
>> include/linux/kernel.h:48:22: note: in expansion of macro '__ALIGN_KERNEL'
    #define ALIGN(x, a)  __ALIGN_KERNEL((x), (a))
                         ^~~~~~~~~~~~~~
>> include/linux/mm.h:126:26: note: in expansion of macro 'ALIGN'
    #define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
                             ^~~~~
>> drivers/misc/lkdtm_bugs.c:160:9: note: in expansion of macro 'PAGE_ALIGN'
     bias = PAGE_ALIGN(CONFIG_DEFAULT_MMAP_MIN_ADDR);
            ^~~~~~~~~~
   drivers/misc/lkdtm_bugs.c:160:20: note: each undeclared identifier is reported only once for each function it appears in
     bias = PAGE_ALIGN(CONFIG_DEFAULT_MMAP_MIN_ADDR);
                       ^
   include/uapi/linux/kernel.h:10:41: note: in definition of macro '__ALIGN_KERNEL_MASK'
    #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
                                            ^
>> include/linux/kernel.h:48:22: note: in expansion of macro '__ALIGN_KERNEL'
    #define ALIGN(x, a)  __ALIGN_KERNEL((x), (a))
                         ^~~~~~~~~~~~~~
>> include/linux/mm.h:126:26: note: in expansion of macro 'ALIGN'
    #define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
                             ^~~~~
>> drivers/misc/lkdtm_bugs.c:160:9: note: in expansion of macro 'PAGE_ALIGN'
     bias = PAGE_ALIGN(CONFIG_DEFAULT_MMAP_MIN_ADDR);
            ^~~~~~~~~~

vim +/CONFIG_DEFAULT_MMAP_MIN_ADDR +160 drivers/misc/lkdtm_bugs.c

     1	/*
     2	 * This is for all the tests related to logic bugs (e.g. bad dereferences,
     3	 * bad alignment, bad loops, bad locking, bad scheduling, deep stacks, and
     4	 * lockups) along with other things that don't fit well into existing LKDTM
     5	 * test source files.
     6	 */
   > 7	#include "lkdtm.h"
     8	#include <linux/mman.h>
     9	#include <linux/sched.h>
    10	#include <linux/security.h>
    11	#include <linux/slab.h>
    12	
    13	/*
    14	 * Make sure our attempts to over run the kernel stack doesn't trigger
    15	 * a compiler warning when CONFIG_FRAME_WARN is set. Then make sure we
    16	 * recurse past the end of THREAD_SIZE by default.
    17	 */
    18	#if defined(CONFIG_FRAME_WARN) && (CONFIG_FRAME_WARN > 0)
    19	#define REC_STACK_SIZE (CONFIG_FRAME_WARN / 2)
    20	#else
    21	#define REC_STACK_SIZE (THREAD_SIZE / 8)
    22	#endif
    23	#define REC_NUM_DEFAULT ((THREAD_SIZE / REC_STACK_SIZE) * 2)
    24	
    25	static int recur_count = REC_NUM_DEFAULT;
    26	
    27	static DEFINE_SPINLOCK(lock_me_up);
    28	
    29	static int recursive_loop(int remaining)
    30	{
    31		char buf[REC_STACK_SIZE];
    32	
    33		/* Make sure compiler does not optimize this away. */
    34		memset(buf, (remaining & 0xff) | 0x1, REC_STACK_SIZE);
    35		if (!remaining)
    36			return 0;
    37		else
    38			return recursive_loop(remaining - 1);
    39	}
    40	
    41	/* If the depth is negative, use the default, otherwise keep parameter. */
    42	void __init lkdtm_bugs_init(int *recur_param)
    43	{
    44		if (*recur_param < 0)
    45			*recur_param = recur_count;
    46		else
    47			recur_count = *recur_param;
    48	}
    49	
    50	void lkdtm_PANIC(void)
    51	{
    52		panic("dumptest");
    53	}
    54	
    55	void lkdtm_BUG(void)
    56	{
    57		BUG();
    58	}
    59	
    60	void lkdtm_WARNING(void)
    61	{
    62		WARN_ON(1);
    63	}
    64	
    65	void lkdtm_EXCEPTION(void)
    66	{
    67		*((int *) 0) = 0;
    68	}
    69	
    70	void lkdtm_LOOP(void)
    71	{
    72		for (;;)
    73			;
    74	}
    75	
    76	void lkdtm_OVERFLOW(void)
    77	{
    78		(void) recursive_loop(recur_count);
    79	}
    80	
    81	noinline void lkdtm_CORRUPT_STACK(void)
    82	{
    83		/* Use default char array length that triggers stack protection. */
    84		char data[8];
    85	
    86		memset((void *)data, 'a', 64);
    87		pr_info("Corrupted stack with '%16s'...\n", data);
    88	}
    89	
    90	void lkdtm_UNALIGNED_LOAD_STORE_WRITE(void)
    91	{
    92		static u8 data[5] __attribute__((aligned(4))) = {1, 2, 3, 4, 5};
    93		u32 *p;
    94		u32 val = 0x12345678;
    95	
    96		p = (u32 *)(data + 1);
    97		if (*p == 0)
    98			val = 0x87654321;
    99		*p = val;
   100	}
   101	
   102	void lkdtm_SOFTLOCKUP(void)
   103	{
   104		preempt_disable();
   105		for (;;)
   106			cpu_relax();
   107	}
   108	
   109	void lkdtm_HARDLOCKUP(void)
   110	{
   111		local_irq_disable();
   112		for (;;)
   113			cpu_relax();
   114	}
   115	
   116	void lkdtm_SPINLOCKUP(void)
   117	{
   118		/* Must be called twice to trigger. */
   119		spin_lock(&lock_me_up);
   120		/* Let sparse know we intended to exit holding the lock. */
   121		__release(&lock_me_up);
   122	}
   123	
   124	void lkdtm_HUNG_TASK(void)
   125	{
   126		set_current_state(TASK_UNINTERRUPTIBLE);
   127		schedule();
   128	}
   129	
   130	void lkdtm_ATOMIC_UNDERFLOW(void)
   131	{
   132		atomic_t under = ATOMIC_INIT(INT_MIN);
   133	
   134		pr_info("attempting good atomic increment\n");
   135		atomic_inc(&under);
   136		atomic_dec(&under);
   137	
   138		pr_info("attempting bad atomic underflow\n");
   139		atomic_dec(&under);
   140	}
   141	
   142	void lkdtm_ATOMIC_OVERFLOW(void)
   143	{
   144		atomic_t over = ATOMIC_INIT(INT_MAX);
   145	
   146		pr_info("attempting good atomic decrement\n");
   147		atomic_dec(&over);
   148		atomic_inc(&over);
   149	
   150		pr_info("attempting bad atomic overflow\n");
   151		atomic_inc(&over);
   152	}
   153	
   154	static void test_poison_ptr(void *base, const char *desc)
   155	{
   156		unsigned int *ptr, bias, val;
   157		unsigned long uaddr;
   158	
   159		/* We'd rather not export mmap_min_addr, so use the default instead */
 > 160		bias = PAGE_ALIGN(CONFIG_DEFAULT_MMAP_MIN_ADDR);
   161	
   162		uaddr = vm_mmap(NULL, bias, PAGE_SIZE, PROT_READ | PROT_WRITE,
   163				MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, 0);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/gzip" (42322 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.