tree:
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git x86/kentry
head: b0d7a5e5a9b11a6ddb50b90e31877e3cb1f93362
commit: e2bd5fab359ea464f6268bfaca18c3c0344edf33 [6/10] kentry: Remove
enter_from/exit_to_user_mode()
config: s390-randconfig-r011-20210321 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
14696baaf4c43fe53f738bc292bbe169eed93d5d)
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
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
#
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git/commit/?id...
git remote add luto
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git
git fetch --no-tags luto x86/kentry
git checkout e2bd5fab359ea464f6268bfaca18c3c0344edf33
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from arch/s390/kernel/traps.c:28:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro
'__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from arch/s390/kernel/traps.c:28:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro
'__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from arch/s390/kernel/traps.c:28:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
arch/s390/kernel/traps.c:300:2: error: unknown type name 'irqentry_state_t';
did you mean 'kentry_state_t'?
irqentry_state_t state;
^~~~~~~~~~~~~~~~
kentry_state_t
include/linux/entry-common.h:315:3: note: 'kentry_state_t' declared here
} kentry_state_t;
^
arch/s390/kernel/traps.c:305:10: error: implicit declaration of function
'irqentry_enter' [-Werror,-Wimplicit-function-declaration]
state = irqentry_enter(regs);
^
arch/s390/kernel/traps.c:305:10: note: did you mean 'kentry_enter'?
include/linux/entry-common.h:349:24: note: 'kentry_enter' declared here
kentry_state_t noinstr kentry_enter(struct pt_regs *regs);
^
arch/s390/kernel/traps.c:305:8: error: assigning to 'kentry_state_t' (aka
'struct kentry_state') from incompatible type 'int'
state = irqentry_enter(regs);
^ ~~~~~~~~~~~~~~~~~~~~
arch/s390/kernel/traps.c:346:2: error: implicit declaration of function
'irqentry_exit' [-Werror,-Wimplicit-function-declaration]
irqentry_exit(regs, state);
^
arch/s390/kernel/traps.c:346:2: note: did you mean 'kentry_exit'?
include/linux/entry-common.h:375:14: note: 'kentry_exit' declared here
void noinstr kentry_exit(struct pt_regs *regs, kentry_state_t state);
^
> arch/s390/kernel/traps.c:349:3: error: implicit declaration of
function 'enter_from_user_mode' [-Werror,-Wimplicit-function-declaration]
enter_from_user_mode(regs);
^
> arch/s390/kernel/traps.c:353:3: error: implicit declaration of
function 'exit_to_user_mode' [-Werror,-Wimplicit-function-declaration]
exit_to_user_mode();
^
arch/s390/kernel/traps.c:353:3: note: did you mean 'arch_exit_to_user_mode'?
include/linux/entry-common.h:211:29: note: 'arch_exit_to_user_mode' declared
here
static __always_inline void arch_exit_to_user_mode(void);
^
arch/s390/include/asm/entry-common.h:53:32: note: expanded from macro
'arch_exit_to_user_mode'
#define arch_exit_to_user_mode arch_exit_to_user_mode
^
12 warnings and 6 errors generated.
--
In file included from arch/s390/kernel/syscall.c:34:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro
'__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from arch/s390/kernel/syscall.c:34:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro
'__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from arch/s390/kernel/syscall.c:34:
In file included from include/linux/entry-common.h:6:
In file included from include/linux/tracehook.h:50:
In file included from include/linux/memcontrol.h:22:
In file included from include/linux/writeback.h:14:
In file included from include/linux/blk-cgroup.h:23:
In file included from include/linux/blkdev.h:26:
In file included from include/linux/scatterlist.h:9:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null
pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
arch/s390/kernel/syscall.c:124:7: error: implicit declaration of function
'syscall_enter_from_user_mode_work' [-Werror,-Wimplicit-function-declaration]
nr = syscall_enter_from_user_mode_work(regs, nr);
^
arch/s390/kernel/syscall.c:140:2: error: implicit declaration of function
'syscall_exit_to_user_mode_work' [-Werror,-Wimplicit-function-declaration]
syscall_exit_to_user_mode_work(regs);
^
arch/s390/kernel/syscall.c:140:2: note: did you mean
'arch_exit_to_user_mode_work'?
include/linux/entry-common.h:169:20: note: 'arch_exit_to_user_mode_work'
declared here
static inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
^
arch/s390/include/asm/entry-common.h:42:37: note: expanded from macro
'arch_exit_to_user_mode_work'
#define arch_exit_to_user_mode_work arch_exit_to_user_mode_work
^
> arch/s390/kernel/syscall.c:145:2: error: implicit declaration of
function 'enter_from_user_mode' [-Werror,-Wimplicit-function-declaration]
enter_from_user_mode(regs);
^
> arch/s390/kernel/syscall.c:167:2: error: implicit declaration of
function 'exit_to_user_mode' [-Werror,-Wimplicit-function-declaration]
exit_to_user_mode();
^
arch/s390/kernel/syscall.c:167:2: note: did you mean 'arch_exit_to_user_mode'?
include/linux/entry-common.h:211:29: note: 'arch_exit_to_user_mode' declared
here
static __always_inline void arch_exit_to_user_mode(void);
^
arch/s390/include/asm/entry-common.h:53:32: note: expanded from macro
'arch_exit_to_user_mode'
#define arch_exit_to_user_mode arch_exit_to_user_mode
^
12 warnings and 4 errors generated.
vim +/enter_from_user_mode +349 arch/s390/kernel/traps.c
56e62a73702836 Sven Schnelle 2020-11-21 295
56e62a73702836 Sven Schnelle 2020-11-21 296 void noinstr __do_pgm_check(struct pt_regs
*regs)
56e62a73702836 Sven Schnelle 2020-11-21 297 {
56e62a73702836 Sven Schnelle 2020-11-21 298 unsigned long last_break =
S390_lowcore.breaking_event_addr;
56e62a73702836 Sven Schnelle 2020-11-21 299 unsigned int trapnr, syscall_redirect = 0;
56e62a73702836 Sven Schnelle 2020-11-21 300 irqentry_state_t state;
56e62a73702836 Sven Schnelle 2020-11-21 301
56e62a73702836 Sven Schnelle 2020-11-21 302 regs->int_code = *(u32
*)&S390_lowcore.pgm_ilc;
56e62a73702836 Sven Schnelle 2020-11-21 303 regs->int_parm_long =
S390_lowcore.trans_exc_code;
56e62a73702836 Sven Schnelle 2020-11-21 304
56e62a73702836 Sven Schnelle 2020-11-21 305 state = irqentry_enter(regs);
56e62a73702836 Sven Schnelle 2020-11-21 306
56e62a73702836 Sven Schnelle 2020-11-21 307 if (user_mode(regs)) {
56e62a73702836 Sven Schnelle 2020-11-21 308 update_timer_sys();
56e62a73702836 Sven Schnelle 2020-11-21 309 if (last_break < 4096)
56e62a73702836 Sven Schnelle 2020-11-21 310 last_break = 1;
56e62a73702836 Sven Schnelle 2020-11-21 311 current->thread.last_break =
last_break;
56e62a73702836 Sven Schnelle 2020-11-21 312 regs->args[0] = last_break;
56e62a73702836 Sven Schnelle 2020-11-21 313 }
56e62a73702836 Sven Schnelle 2020-11-21 314
56e62a73702836 Sven Schnelle 2020-11-21 315 if (S390_lowcore.pgm_code & 0x0200) {
56e62a73702836 Sven Schnelle 2020-11-21 316 /* transaction abort */
56e62a73702836 Sven Schnelle 2020-11-21 317 memcpy(¤t->thread.trap_tdb,
&S390_lowcore.pgm_tdb, 256);
56e62a73702836 Sven Schnelle 2020-11-21 318 }
56e62a73702836 Sven Schnelle 2020-11-21 319
56e62a73702836 Sven Schnelle 2020-11-21 320 if (S390_lowcore.pgm_code &
PGM_INT_CODE_PER) {
56e62a73702836 Sven Schnelle 2020-11-21 321 if (user_mode(regs)) {
56e62a73702836 Sven Schnelle 2020-11-21 322 struct per_event *ev =
¤t->thread.per_event;
56e62a73702836 Sven Schnelle 2020-11-21 323
56e62a73702836 Sven Schnelle 2020-11-21 324 set_thread_flag(TIF_PER_TRAP);
56e62a73702836 Sven Schnelle 2020-11-21 325 ev->address =
S390_lowcore.per_address;
56e62a73702836 Sven Schnelle 2020-11-21 326 ev->cause = *(u16
*)&S390_lowcore.per_code;
56e62a73702836 Sven Schnelle 2020-11-21 327 ev->paid =
S390_lowcore.per_access_id;
56e62a73702836 Sven Schnelle 2020-11-21 328 } else {
56e62a73702836 Sven Schnelle 2020-11-21 329 /* PER event in kernel is kprobes */
56e62a73702836 Sven Schnelle 2020-11-21 330 __arch_local_irq_ssm(regs->psw.mask
& ~PSW_MASK_PER);
56e62a73702836 Sven Schnelle 2020-11-21 331 do_per_trap(regs);
56e62a73702836 Sven Schnelle 2020-11-21 332 goto out;
56e62a73702836 Sven Schnelle 2020-11-21 333 }
56e62a73702836 Sven Schnelle 2020-11-21 334 }
56e62a73702836 Sven Schnelle 2020-11-21 335
56e62a73702836 Sven Schnelle 2020-11-21 336 if
(!irqs_disabled_flags(regs->psw.mask))
56e62a73702836 Sven Schnelle 2020-11-21 337 trace_hardirqs_on();
56e62a73702836 Sven Schnelle 2020-11-21 338 __arch_local_irq_ssm(regs->psw.mask
& ~PSW_MASK_PER);
56e62a73702836 Sven Schnelle 2020-11-21 339
56e62a73702836 Sven Schnelle 2020-11-21 340 trapnr = regs->int_code &
PGM_INT_CODE_MASK;
56e62a73702836 Sven Schnelle 2020-11-21 341 if (trapnr)
56e62a73702836 Sven Schnelle 2020-11-21 342 pgm_check_table[trapnr](regs);
56e62a73702836 Sven Schnelle 2020-11-21 343 syscall_redirect = user_mode(regs)
&& test_pt_regs_flag(regs, PIF_SYSCALL);
56e62a73702836 Sven Schnelle 2020-11-21 344 out:
56e62a73702836 Sven Schnelle 2020-11-21 345 local_irq_disable();
56e62a73702836 Sven Schnelle 2020-11-21 346 irqentry_exit(regs, state);
56e62a73702836 Sven Schnelle 2020-11-21 347
56e62a73702836 Sven Schnelle 2020-11-21 348 if (syscall_redirect) {
56e62a73702836 Sven Schnelle 2020-11-21 @349 enter_from_user_mode(regs);
56e62a73702836 Sven Schnelle 2020-11-21 350 local_irq_enable();
56e62a73702836 Sven Schnelle 2020-11-21 351 regs->orig_gpr2 = regs->gprs[2];
56e62a73702836 Sven Schnelle 2020-11-21 352 do_syscall(regs);
56e62a73702836 Sven Schnelle 2020-11-21 @353 exit_to_user_mode();
:::::: The code at line 349 was first introduced by commit
:::::: 56e62a73702836017564eaacd5212e4d0fa1c01d s390: convert to generic entry
:::::: TO: Sven Schnelle <svens(a)linux.ibm.com>
:::::: CC: Vasily Gorbik <gor(a)linux.ibm.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org