Re: [mmotm:master 83/178] include/linux/compiler.h:346:20: error: call to '__compiletime_assert_505' declared with attribute error: BUILD_BUG failed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 13, 2014 at 09:34:27AM +0800, kbuild test robot wrote:
> tree:   git://git.cmpxchg.org/linux-mmotm.git master
> head:   a621774e0e7bbd9e8a024230af4704cc489bd40e
> commit: d6dc10868bc1439159231b2353dbbfc635a0c104 [83/178] mm/pagewalk: move pmd_trans_huge_lock() from callbacks to common code
> config: x86_64-randconfig-c0-0613 (attached as .config)
> 
> All error/warnings:
> 
>    In file included from include/linux/linkage.h:4:0,
>                     from include/linux/preempt.h:9,
>                     from include/linux/spinlock.h:50,
>                     from include/linux/mmzone.h:7,
>                     from include/linux/gfp.h:5,
>                     from include/linux/mm.h:9,
>                     from fs/proc/task_mmu.c:1:
>    fs/proc/task_mmu.c: In function 'smaps_pmd':
> >> include/linux/compiler.h:346:20: error: call to '__compiletime_assert_505' declared with attribute error: BUILD_BUG failed
>        prefix ## suffix();    \
>                        ^
>    include/linux/compiler.h:351:2: note: in expansion of macro '__compiletime_assert'
>      __compiletime_assert(condition, msg, prefix, suffix)
>      ^
>    include/linux/compiler.h:363:2: note: in expansion of macro '_compiletime_assert'
>      _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
>      ^
>    include/linux/bug.h:50:37: note: in expansion of macro 'compiletime_assert'
>     #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>                                         ^
>    include/linux/bug.h:84:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
>     #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
>                         ^
>    include/linux/huge_mm.h:167:27: note: in expansion of macro 'BUILD_BUG'
>     #define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; })
>                               ^
>    fs/proc/task_mmu.c:505:39: note: in expansion of macro 'HPAGE_PMD_SIZE'
>      smaps_pte((pte_t *)pmd, addr, addr + HPAGE_PMD_SIZE, walk);
>                                           ^

We shouldn't use HPAGE_PMD_SIZE when !CONFIG_TRANSPARENT_HUGEPAGE.
I'll fix it in next post, while maybe I need to add some ugly #ifdefs.

Curiously, current upstream code uses HPAGE_PMD_SIZE without #ifdef
CONFIG_TRANSPARENT_HUGEPAGE too, but it seems to be safe because
if (pmd_trans_huge_lock) block is compiled away in such case.

Other warnings tagged [mmotm:master 83/178] seems to be triggered for
the same reason.

Thanks,
Naoya Horiguchi

> >> include/linux/compiler.h:346:20: error: call to '__compiletime_assert_506' declared with attribute error: BUILD_BUG failed
>        prefix ## suffix();    \
>                        ^
>    include/linux/compiler.h:351:2: note: in expansion of macro '__compiletime_assert'
>      __compiletime_assert(condition, msg, prefix, suffix)
>      ^
>    include/linux/compiler.h:363:2: note: in expansion of macro '_compiletime_assert'
>      _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
>      ^
>    include/linux/bug.h:50:37: note: in expansion of macro 'compiletime_assert'
>     #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>                                         ^
>    include/linux/bug.h:84:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
>     #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
>                         ^
>    include/linux/huge_mm.h:167:27: note: in expansion of macro 'BUILD_BUG'
>     #define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; })
>                               ^
>    fs/proc/task_mmu.c:506:24: note: in expansion of macro 'HPAGE_PMD_SIZE'
>      mss->anonymous_thp += HPAGE_PMD_SIZE;
>                            ^
>    fs/proc/task_mmu.c: In function 'gather_pmd_stats':
> >> include/linux/compiler.h:346:20: error: call to '__compiletime_assert_1330' declared with attribute error: BUILD_BUG failed
>        prefix ## suffix();    \
>                        ^
>    include/linux/compiler.h:351:2: note: in expansion of macro '__compiletime_assert'
>      __compiletime_assert(condition, msg, prefix, suffix)
>      ^
>    include/linux/compiler.h:363:2: note: in expansion of macro '_compiletime_assert'
>      _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
>      ^
>    include/linux/bug.h:50:37: note: in expansion of macro 'compiletime_assert'
>     #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>                                         ^
>    include/linux/bug.h:84:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
>     #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
>                         ^
>    include/linux/huge_mm.h:167:27: note: in expansion of macro 'BUILD_BUG'
>     #define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; })
>                               ^
>    fs/proc/task_mmu.c:1330:9: note: in expansion of macro 'HPAGE_PMD_SIZE'
>             HPAGE_PMD_SIZE/PAGE_SIZE);
>             ^
> 
> vim +/__compiletime_assert_505 +346 include/linux/compiler.h
> 
> 57e66715 mmotm auto import 2014-06-13  330   * versions of GCC (e.g. 4.2.4), so hide the array from sparse altogether.
> 57e66715 mmotm auto import 2014-06-13  331   */
> 57e66715 mmotm auto import 2014-06-13  332  # ifndef __CHECKER__
> 57e66715 mmotm auto import 2014-06-13  333  #  define __compiletime_error_fallback(condition) \
> 9a8ab1c3 Daniel Santos     2013-02-21  334  	do { ((void)sizeof(char[1 - 2 * condition])); } while (0)
> 57e66715 mmotm auto import 2014-06-13  335  # endif
> 57e66715 mmotm auto import 2014-06-13  336  #endif
> 57e66715 mmotm auto import 2014-06-13  337  #ifndef __compiletime_error_fallback
> c361d3e5 Daniel Santos     2013-02-21  338  # define __compiletime_error_fallback(condition) do { } while (0)
> 63312b6a Arjan van de Ven  2009-10-02  339  #endif
> c361d3e5 Daniel Santos     2013-02-21  340  
> 9a8ab1c3 Daniel Santos     2013-02-21  341  #define __compiletime_assert(condition, msg, prefix, suffix)		\
> 9a8ab1c3 Daniel Santos     2013-02-21  342  	do {								\
> 9a8ab1c3 Daniel Santos     2013-02-21  343  		bool __cond = !(condition);				\
> 9a8ab1c3 Daniel Santos     2013-02-21  344  		extern void prefix ## suffix(void) __compiletime_error(msg); \
> 9a8ab1c3 Daniel Santos     2013-02-21  345  		if (__cond)						\
> 9a8ab1c3 Daniel Santos     2013-02-21 @346  			prefix ## suffix();				\
> 9a8ab1c3 Daniel Santos     2013-02-21  347  		__compiletime_error_fallback(__cond);			\
> 9a8ab1c3 Daniel Santos     2013-02-21  348  	} while (0)
> 9a8ab1c3 Daniel Santos     2013-02-21  349  
> 9a8ab1c3 Daniel Santos     2013-02-21  350  #define _compiletime_assert(condition, msg, prefix, suffix) \
> 9a8ab1c3 Daniel Santos     2013-02-21  351  	__compiletime_assert(condition, msg, prefix, suffix)
> 9a8ab1c3 Daniel Santos     2013-02-21  352  
> 9a8ab1c3 Daniel Santos     2013-02-21  353  /**
> 9a8ab1c3 Daniel Santos     2013-02-21  354   * compiletime_assert - break build and emit msg if condition is false
> 
> :::::: The code at line 346 was first introduced by commit
> :::::: 9a8ab1c39970a4938a72d94e6fd13be88a797590 bug.h, compiler.h: introduce compiletime_assert & BUILD_BUG_ON_MSG
> 
> :::::: TO: Daniel Santos <daniel.santos@xxxxxxxxx>
> :::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> 
> ---
> 0-DAY kernel build testing backend              Open Source Technology Center
> http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]