Hi "Aneesh, I love your patch! Yet something to improve:
[auto build test ERROR on powerpc/next] [also build test ERROR on next-20200610] [cannot apply to scottwood/next mpe/next v5.7] [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/Aneesh-Kumar-K-V/Kernel-userspace-access-execution-prevention-with-hash-translation/20200610-191943 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-randconfig-r036-20200607 (attached as .config) compiler: powerpc64-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): 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 COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> All errors (new ones prefixed by >>, old ones prefixed by <<): In file included from arch/powerpc/include/asm/processor.h:9, from arch/powerpc/include/asm/thread_info.h:40, from include/linux/thread_info.h:38, from include/asm-generic/preempt.h:5, from ./arch/powerpc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/compat.h:10, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h: In function 'kuap_restore_user_amr': arch/powerpc/include/asm/book3s/64/kup.h:181:22: error: 'struct pt_regs' has no member named 'kuap' 181 | mtspr(SPRN_AMR, regs->kuap); | ^~ arch/powerpc/include/asm/reg.h:1386:33: note: in definition of macro 'mtspr' 1386 | : "r" ((unsigned long)(v)) | ^ >> arch/powerpc/include/asm/book3s/64/kup.h:182:23: error: 'struct pt_regs' has >> no member named 'kuep' 182 | mtspr(SPRN_IAMR, regs->kuep); | ^~ arch/powerpc/include/asm/reg.h:1386:33: note: in definition of macro 'mtspr' 1386 | : "r" ((unsigned long)(v)) | ^ In file included from include/linux/kernel.h:11, from include/linux/list.h:9, from include/linux/preempt.h:11, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/compat.h:10, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h: In function 'kuap_restore_kernel_amr': arch/powerpc/include/asm/book3s/64/kup.h:194:20: error: 'struct pt_regs' has no member named 'kuap' 194 | if (unlikely(regs->kuap != amr)) { | ^~ include/linux/compiler.h:78:42: note: in definition of macro 'unlikely' 78 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ In file included from arch/powerpc/include/asm/processor.h:9, from arch/powerpc/include/asm/thread_info.h:40, from include/linux/thread_info.h:38, from include/asm-generic/preempt.h:5, from ./arch/powerpc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/compat.h:10, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h:196:24: error: 'struct pt_regs' has no member named 'kuap' 196 | mtspr(SPRN_AMR, regs->kuap); | ^~ arch/powerpc/include/asm/reg.h:1386:33: note: in definition of macro 'mtspr' 1386 | : "r" ((unsigned long)(v)) | ^ In file included from arch/powerpc/include/asm/bug.h:109, from include/linux/bug.h:5, from include/linux/thread_info.h:12, from include/asm-generic/preempt.h:5, from ./arch/powerpc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/compat.h:10, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h: In function 'bad_kuap_fault': arch/powerpc/include/asm/book3s/64/kup.h:293:12: error: 'struct pt_regs' has no member named 'kuap' 293 | (regs->kuap & (is_write ? AMR_KUAP_BLOCK_WRITE : AMR_KUAP_BLOCK_READ)), | ^~ include/asm-generic/bug.h:122:25: note: in definition of macro 'WARN' 122 | int __ret_warn_on = !!(condition); | ^~~~~~~~~ In file included from arch/powerpc/include/asm/uaccess.h:9, from include/linux/uaccess.h:11, from include/linux/crypto.h:21, from include/crypto/hash.h:11, from include/linux/uio.h:10, from include/linux/socket.h:8, from include/linux/compat.h:15, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/kup.h: At top level: arch/powerpc/include/asm/kup.h:56:20: error: redefinition of 'allow_user_access' 56 | static inline void allow_user_access(void __user *to, const void __user *from, | ^~~~~~~~~~~~~~~~~ In file included from arch/powerpc/include/asm/kup.h:18, from arch/powerpc/include/asm/uaccess.h:9, from include/linux/uaccess.h:11, from include/linux/crypto.h:21, from include/crypto/hash.h:11, from include/linux/uio.h:10, from include/linux/socket.h:8, from include/linux/compat.h:15, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h:254:29: note: previous definition of 'allow_user_access' was here 254 | static __always_inline void allow_user_access(void __user *to, const void __user *from, | ^~~~~~~~~~~~~~~~~ In file included from arch/powerpc/include/asm/uaccess.h:9, from include/linux/uaccess.h:11, from include/linux/crypto.h:21, from include/crypto/hash.h:11, from include/linux/uio.h:10, from include/linux/socket.h:8, from include/linux/compat.h:15, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/kup.h:58:20: error: redefinition of 'prevent_user_access' 58 | static inline void prevent_user_access(void __user *to, const void __user *from, | ^~~~~~~~~~~~~~~~~~~ In file included from arch/powerpc/include/asm/kup.h:18, from arch/powerpc/include/asm/uaccess.h:9, from include/linux/uaccess.h:11, from include/linux/crypto.h:21, from include/crypto/hash.h:11, from include/linux/uio.h:10, from include/linux/socket.h:8, from include/linux/compat.h:15, from arch/powerpc/kernel/asm-offsets.c:14: arch/powerpc/include/asm/book3s/64/kup.h:269:20: note: previous definition of 'prevent_user_access' was here vim +182 arch/powerpc/include/asm/book3s/64/kup.h 174 175 static inline void kuap_restore_user_amr(struct pt_regs *regs) 176 { 177 if (!mmu_has_feature(MMU_FTR_PKEY)) 178 return; 179 180 isync(); 181 mtspr(SPRN_AMR, regs->kuap); > 182 mtspr(SPRN_IAMR, regs->kuep); 183 /* 184 * No isync required here because we are about to rfi 185 * back to previous context before any user accesses 186 * would be made, which is a CSI. 187 */ 188 } 189 static inline void kuap_restore_kernel_amr(struct pt_regs *regs, 190 unsigned long amr) 191 { 192 if (mmu_has_feature(MMU_FTR_KUAP) || mmu_has_feature(MMU_FTR_PKEY)) { 193 194 if (unlikely(regs->kuap != amr)) { 195 isync(); 196 mtspr(SPRN_AMR, regs->kuap); 197 /* 198 * No isync required here because we are about to rfi 199 * back to previous context before any user accesses 200 * would be made, which is a CSI. 201 */ 202 } 203 } 204 /* 205 * No need to restore IAMR when returning to kernel space. 206 */ 207 } 208 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip