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

Re: [Xen-devel] [PATCH v1 1/4] kasan: introduce set_pmd_early_shadow()



Hi Sergey,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]
[also build test ERROR on net/master linus/master v5.5-rc5 next-20200109]
[cannot apply to xen-tip/linux-next]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    
https://github.com/0day-ci/linux/commits/Sergey-Dyasli/basic-KASAN-support-for-Xen-PV-domains/20200110-042623
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 
4a4a52d49d11f5c4a0df8b9806c8c5563801f753
config: arm64-randconfig-a001-20200109 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

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

   In file included from arch/arm64/include/asm/kasan.h:9:0,
                    from arch/arm64/include/asm/processor.h:34,
                    from include/asm-generic/qrwlock.h:14,
                    from ./arch/arm64/include/generated/asm/qrwlock.h:1,
                    from arch/arm64/include/asm/spinlock.h:8,
                    from include/linux/spinlock.h:89,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/mm.h:10,
                    from include/linux/memblock.h:13,
                    from mm/kasan/init.c:14:
   mm/kasan/init.c: In function 'set_pmd_early_shadow':
>> mm/kasan/init.c:90:43: error: '_PAGE_TABLE' undeclared (first use in this 
>> function); did you mean 'NR_PAGETABLE'?
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                                              ^
   arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro 
'__pgd'
    #define __pgd(x) ((pgd_t) { (x) } )
                                 ^
>> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro 
>> '__pud'
    #define __pmd(x)    ((pmd_t) { __pud(x) } )
                                   ^~~~~
>> mm/kasan/init.c:90:16: note: in expansion of macro '__pmd'
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                   ^~~~~
   mm/kasan/init.c:90:43: note: each undeclared identifier is reported only 
once for each function it appears in
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                                              ^
   arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro 
'__pgd'
    #define __pgd(x) ((pgd_t) { (x) } )
                                 ^
>> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro 
>> '__pud'
    #define __pmd(x)    ((pmd_t) { __pud(x) } )
                                   ^~~~~
>> mm/kasan/init.c:90:16: note: in expansion of macro '__pmd'
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                   ^~~~~
--
   In file included from arch/arm64/include/asm/kasan.h:9:0,
                    from arch/arm64/include/asm/processor.h:34,
                    from include/asm-generic/qrwlock.h:14,
                    from ./arch/arm64/include/generated/asm/qrwlock.h:1,
                    from arch/arm64/include/asm/spinlock.h:8,
                    from include/linux/spinlock.h:89,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/mm.h:10,
                    from include/linux/memblock.h:13,
                    from mm//kasan/init.c:14:
   mm//kasan/init.c: In function 'set_pmd_early_shadow':
   mm//kasan/init.c:90:43: error: '_PAGE_TABLE' undeclared (first use in this 
function); did you mean 'NR_PAGETABLE'?
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                                              ^
   arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro 
'__pgd'
    #define __pgd(x) ((pgd_t) { (x) } )
                                 ^
>> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro 
>> '__pud'
    #define __pmd(x)    ((pmd_t) { __pud(x) } )
                                   ^~~~~
   mm//kasan/init.c:90:16: note: in expansion of macro '__pmd'
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                   ^~~~~
   mm//kasan/init.c:90:43: note: each undeclared identifier is reported only 
once for each function it appears in
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                                              ^
   arch/arm64/include/asm/pgtable-types.h:40:30: note: in definition of macro 
'__pgd'
    #define __pgd(x) ((pgd_t) { (x) } )
                                 ^
>> include/asm-generic/pgtable-nopmd.h:50:32: note: in expansion of macro 
>> '__pud'
    #define __pmd(x)    ((pmd_t) { __pud(x) } )
                                   ^~~~~
   mm//kasan/init.c:90:16: note: in expansion of macro '__pmd'
      set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
                   ^~~~~

vim +90 mm/kasan/init.c

  > 14  #include <linux/memblock.h>
    15  #include <linux/init.h>
    16  #include <linux/kasan.h>
    17  #include <linux/kernel.h>
    18  #include <linux/mm.h>
    19  #include <linux/pfn.h>
    20  #include <linux/slab.h>
    21  
    22  #include <asm/page.h>
    23  #include <asm/pgalloc.h>
    24  
    25  #include "kasan.h"
    26  
    27  /*
    28   * This page serves two purposes:
    29   *   - It used as early shadow memory. The entire shadow region 
populated
    30   *     with this page, before we will be able to setup normal shadow 
memory.
    31   *   - Latter it reused it as zero shadow to cover large ranges of 
memory
    32   *     that allowed to access, but not handled by kasan 
(vmalloc/vmemmap ...).
    33   */
    34  unsigned char kasan_early_shadow_page[PAGE_SIZE] __page_aligned_bss;
    35  
    36  #if CONFIG_PGTABLE_LEVELS > 4
    37  p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D] __page_aligned_bss;
    38  static inline bool kasan_p4d_table(pgd_t pgd)
    39  {
    40          return pgd_page(pgd) == 
virt_to_page(lm_alias(kasan_early_shadow_p4d));
    41  }
    42  #else
    43  static inline bool kasan_p4d_table(pgd_t pgd)
    44  {
    45          return false;
    46  }
    47  #endif
    48  #if CONFIG_PGTABLE_LEVELS > 3
    49  pud_t kasan_early_shadow_pud[PTRS_PER_PUD] __page_aligned_bss;
    50  static inline bool kasan_pud_table(p4d_t p4d)
    51  {
    52          return p4d_page(p4d) == 
virt_to_page(lm_alias(kasan_early_shadow_pud));
    53  }
    54  #else
    55  static inline bool kasan_pud_table(p4d_t p4d)
    56  {
    57          return false;
    58  }
    59  #endif
    60  #if CONFIG_PGTABLE_LEVELS > 2
    61  pmd_t kasan_early_shadow_pmd[PTRS_PER_PMD] __page_aligned_bss;
    62  static inline bool kasan_pmd_table(pud_t pud)
    63  {
    64          return pud_page(pud) == 
virt_to_page(lm_alias(kasan_early_shadow_pmd));
    65  }
    66  #else
    67  static inline bool kasan_pmd_table(pud_t pud)
    68  {
    69          return false;
    70  }
    71  #endif
    72  pte_t kasan_early_shadow_pte[PTRS_PER_PTE] __page_aligned_bss;
    73  
    74  static inline bool kasan_pte_table(pmd_t pmd)
    75  {
    76          return pmd_page(pmd) == 
virt_to_page(lm_alias(kasan_early_shadow_pte));
    77  }
    78  
    79  static inline bool kasan_early_shadow_page_entry(pte_t pte)
    80  {
    81          return pte_page(pte) == 
virt_to_page(lm_alias(kasan_early_shadow_page));
    82  }
    83  
    84  static inline void set_pmd_early_shadow(pmd_t *pmd)
    85  {
    86          static bool pmd_populated = false;
    87          pte_t *early_shadow = lm_alias(kasan_early_shadow_pte);
    88  
    89          if (likely(pmd_populated)) {
  > 90                  set_pmd(pmd, __pmd(__pa(early_shadow) | _PAGE_TABLE));
    91          } else {
    92                  pmd_populate_kernel(&init_mm, pmd, early_shadow);
    93                  pmd_populated = true;
    94          }
    95  }
    96  

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.