Hi Catalin, [auto build test ERROR on mmotm/master] [also build test ERROR on v4.8-rc2 next-20160816] [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/Catalin-Marinas/mm-kmemleak-Avoid-using-__va-on-addresses-that-don-t-have-a-lowmem-mapping/20160816-232733 base: git://git.cmpxchg.org/linux-mmotm.git master config: frv-defconfig (attached as .config) compiler: frv-linux-gcc (GCC) 4.9.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=frv All error/warnings (new ones prefixed by >>): In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h: In function 'maybe_mkwrite': include/linux/mm.h:624:3: error: implicit declaration of function 'pte_mkwrite' [-Werror=implicit-function-declaration] pte = pte_mkwrite(pte); ^ include/linux/mm.h:624:7: error: incompatible types when assigning to type 'pte_t' from type 'int' pte = pte_mkwrite(pte); ^ In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h: In function 'mm_nr_pmds_init': >> include/linux/mm.h:1576:21: error: 'struct mm_struct' has no member named 'nr_pmds' atomic_long_set(&mm->nr_pmds, 0); ^ include/linux/mm.h: In function 'mm_nr_pmds': include/linux/mm.h:1581:29: error: 'struct mm_struct' has no member named 'nr_pmds' return atomic_long_read(&mm->nr_pmds); ^ include/linux/mm.h: In function 'mm_inc_nr_pmds': include/linux/mm.h:1586:21: error: 'struct mm_struct' has no member named 'nr_pmds' atomic_long_inc(&mm->nr_pmds); ^ include/linux/mm.h: In function 'mm_dec_nr_pmds': include/linux/mm.h:1591:21: error: 'struct mm_struct' has no member named 'nr_pmds' atomic_long_dec(&mm->nr_pmds); ^ include/linux/mm.h: In function 'pud_alloc': >> include/linux/mm.h:1605:2: error: implicit declaration of function 'pgd_none' [-Werror=implicit-function-declaration] return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))? ^ >> include/linux/mm.h:1606:3: error: implicit declaration of function 'pud_offset' [-Werror=implicit-function-declaration] NULL: pud_offset(pgd, address); ^ >> include/linux/mm.h:1606:7: warning: pointer/integer type mismatch in conditional expression NULL: pud_offset(pgd, address); ^ include/linux/mm.h: In function 'pmd_alloc': >> include/linux/mm.h:1611:2: error: implicit declaration of function 'pud_none' [-Werror=implicit-function-declaration] return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))? ^ >> include/linux/mm.h:1612:3: error: implicit declaration of function 'pmd_offset' [-Werror=implicit-function-declaration] NULL: pmd_offset(pud, address); ^ include/linux/mm.h:1612:7: warning: pointer/integer type mismatch in conditional expression NULL: pmd_offset(pud, address); ^ include/linux/mm.h: In function 'pgtable_init': include/linux/mm.h:1690:2: error: implicit declaration of function 'pgtable_cache_init' [-Werror=implicit-function-declaration] pgtable_cache_init(); ^ In file included from mm/init-mm.c:9:0: arch/frv/include/asm/pgtable.h: At top level: >> arch/frv/include/asm/pgtable.h:196:19: error: static declaration of 'pgd_none' follows non-static declaration static inline int pgd_none(pgd_t pgd) { return 0; } ^ In file included from include/uapi/linux/stddef.h:1:0, from include/linux/stddef.h:4, from include/uapi/linux/posix_types.h:4, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/mm_types.h:5, from mm/init-mm.c:1: include/linux/mm.h:1605:19: note: previous implicit declaration of 'pgd_none' was here return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))? ^ include/linux/compiler.h:168:42: note: in definition of macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ In file included from mm/init-mm.c:9:0: >> arch/frv/include/asm/pgtable.h:212:22: error: conflicting types for 'pud_offset' static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) ^ In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h:1606:9: note: previous implicit declaration of 'pud_offset' was here NULL: pud_offset(pgd, address); ^ In file included from mm/init-mm.c:9:0: >> arch/frv/include/asm/pgtable.h:233:19: error: static declaration of 'pud_none' follows non-static declaration static inline int pud_none(pud_t pud) { return 0; } ^ In file included from include/uapi/linux/stddef.h:1:0, from include/linux/stddef.h:4, from include/uapi/linux/posix_types.h:4, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/mm_types.h:5, from mm/init-mm.c:1: include/linux/mm.h:1611:19: note: previous implicit declaration of 'pud_none' was here return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))? ^ include/linux/compiler.h:168:42: note: in definition of macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ In file included from mm/init-mm.c:9:0: >> arch/frv/include/asm/pgtable.h:262:22: error: conflicting types for 'pmd_offset' static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address) ^ In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h:1612:9: note: previous implicit declaration of 'pmd_offset' was here NULL: pmd_offset(pud, address); ^ In file included from mm/init-mm.c:9:0: >> arch/frv/include/asm/pgtable.h:385:21: error: conflicting types for 'pte_mkwrite' static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte &= ~_PAGE_WP; return pte; } ^ In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h:624:9: note: previous implicit declaration of 'pte_mkwrite' was here pte = pte_mkwrite(pte); ^ In file included from mm/init-mm.c:9:0: >> arch/frv/include/asm/pgtable.h:517:20: warning: conflicting types for 'pgtable_cache_init' extern void __init pgtable_cache_init(void); ^ In file included from include/linux/kmemleak.h:24:0, from include/linux/slab.h:117, from arch/frv/include/asm/pgtable.h:25, from mm/init-mm.c:9: include/linux/mm.h:1690:2: note: previous implicit declaration of 'pgtable_cache_init' was here pgtable_cache_init(); ^ cc1: some warnings being treated as errors vim +1576 include/linux/mm.h dc6c9a35 Kirill A. Shutemov 2015-02-11 1570 5f22df00 Nick Piggin 2007-05-06 1571 #else 1bb3630e Hugh Dickins 2005-10-29 1572 int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); dc6c9a35 Kirill A. Shutemov 2015-02-11 1573 2d2f5119 Kirill A. Shutemov 2015-02-12 1574 static inline void mm_nr_pmds_init(struct mm_struct *mm) 2d2f5119 Kirill A. Shutemov 2015-02-12 1575 { 2d2f5119 Kirill A. Shutemov 2015-02-12 @1576 atomic_long_set(&mm->nr_pmds, 0); 2d2f5119 Kirill A. Shutemov 2015-02-12 1577 } 2d2f5119 Kirill A. Shutemov 2015-02-12 1578 dc6c9a35 Kirill A. Shutemov 2015-02-11 1579 static inline unsigned long mm_nr_pmds(struct mm_struct *mm) dc6c9a35 Kirill A. Shutemov 2015-02-11 1580 { dc6c9a35 Kirill A. Shutemov 2015-02-11 1581 return atomic_long_read(&mm->nr_pmds); dc6c9a35 Kirill A. Shutemov 2015-02-11 1582 } dc6c9a35 Kirill A. Shutemov 2015-02-11 1583 dc6c9a35 Kirill A. Shutemov 2015-02-11 1584 static inline void mm_inc_nr_pmds(struct mm_struct *mm) dc6c9a35 Kirill A. Shutemov 2015-02-11 1585 { dc6c9a35 Kirill A. Shutemov 2015-02-11 @1586 atomic_long_inc(&mm->nr_pmds); dc6c9a35 Kirill A. Shutemov 2015-02-11 1587 } dc6c9a35 Kirill A. Shutemov 2015-02-11 1588 dc6c9a35 Kirill A. Shutemov 2015-02-11 1589 static inline void mm_dec_nr_pmds(struct mm_struct *mm) dc6c9a35 Kirill A. Shutemov 2015-02-11 1590 { dc6c9a35 Kirill A. Shutemov 2015-02-11 @1591 atomic_long_dec(&mm->nr_pmds); dc6c9a35 Kirill A. Shutemov 2015-02-11 1592 } 5f22df00 Nick Piggin 2007-05-06 1593 #endif 5f22df00 Nick Piggin 2007-05-06 1594 3ed3a4f0 Kirill A. Shutemov 2016-03-17 1595 int __pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address); 1bb3630e Hugh Dickins 2005-10-29 1596 int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); 1bb3630e Hugh Dickins 2005-10-29 1597 ^1da177e Linus Torvalds 2005-04-16 1598 /* ^1da177e Linus Torvalds 2005-04-16 1599 * The following ifdef needed to get the 4level-fixup.h header to work. ^1da177e Linus Torvalds 2005-04-16 1600 * Remove it when 4level-fixup.h has been removed. ^1da177e Linus Torvalds 2005-04-16 1601 */ 1bb3630e Hugh Dickins 2005-10-29 1602 #if defined(CONFIG_MMU) && !defined(__ARCH_HAS_4LEVEL_HACK) ^1da177e Linus Torvalds 2005-04-16 1603 static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) ^1da177e Linus Torvalds 2005-04-16 1604 { 1bb3630e Hugh Dickins 2005-10-29 @1605 return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))? 1bb3630e Hugh Dickins 2005-10-29 @1606 NULL: pud_offset(pgd, address); ^1da177e Linus Torvalds 2005-04-16 1607 } ^1da177e Linus Torvalds 2005-04-16 1608 ^1da177e Linus Torvalds 2005-04-16 1609 static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) ^1da177e Linus Torvalds 2005-04-16 1610 { 1bb3630e Hugh Dickins 2005-10-29 @1611 return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))? 1bb3630e Hugh Dickins 2005-10-29 @1612 NULL: pmd_offset(pud, address); ^1da177e Linus Torvalds 2005-04-16 1613 } 1bb3630e Hugh Dickins 2005-10-29 1614 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ 1bb3630e Hugh Dickins 2005-10-29 1615 :::::: The code at line 1576 was first introduced by commit :::::: 2d2f5119b8bb057595e18f5b2f07aa097ea1b233 mm: do not use mm->nr_pmds on !MMU configurations :::::: TO: Kirill A. Shutemov :::::: CC: Linus Torvalds --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation