From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [peterz-queue:perf/kprobes 1/2] arch/riscv/kernel/probes/kprobes.c:284:12: error: no member named 'fault_handler' in 'struct kprobe'
Date: Thu, 04 Mar 2021 05:17:19 +0800 [thread overview]
Message-ID: <202103040512.PymQE1YA-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 12685 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/kprobes
head: e5db8a71574bc353ac07dddc891078df265c0150
commit: b10e300d24126ab9a04bb17e6fed73f7eb55ea78 [1/2] kprobes: Remove kprobe::fault_handler
config: riscv-randconfig-r004-20210303 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project a7cad6680b4087eff8994f1f99ac40c661a6621f)
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 riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=b10e300d24126ab9a04bb17e6fed73f7eb55ea78
git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git fetch --no-tags peterz-queue perf/kprobes
git checkout b10e300d24126ab9a04bb17e6fed73f7eb55ea78
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
include/uapi/linux/byteorder/little_endian.h:36:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from arch/riscv/kernel/probes/kprobes.c:3:
In file included from include/linux/kprobes.h:29:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:149:
include/asm-generic/io.h:572:9: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
return inl(addr);
^~~~~~~~~
arch/riscv/include/asm/io.h:57:76: note: expanded from macro 'inl'
#define inl(c) ({ u32 __v; __io_pbr(); __v = readl_cpu((void*)(PCI_IOBASE + (c))); __io_par(__v); __v; })
~~~~~~~~~~ ^
arch/riscv/include/asm/mmio.h:89:76: note: expanded from macro 'readl_cpu'
#define readl_cpu(c) ({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; })
^
include/uapi/linux/byteorder/little_endian.h:34:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from arch/riscv/kernel/probes/kprobes.c:3:
In file included from include/linux/kprobes.h:29:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:149:
include/asm-generic/io.h:580:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
outb(value, addr);
^~~~~~~~~~~~~~~~~
arch/riscv/include/asm/io.h:59:68: note: expanded from macro 'outb'
#define outb(v,c) ({ __io_pbw(); writeb_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); })
~~~~~~~~~~ ^
arch/riscv/include/asm/mmio.h:91:52: note: expanded from macro 'writeb_cpu'
#define writeb_cpu(v, c) ((void)__raw_writeb((v), (c)))
^
In file included from arch/riscv/kernel/probes/kprobes.c:3:
In file included from include/linux/kprobes.h:29:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:149:
include/asm-generic/io.h:588:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
outw(value, addr);
^~~~~~~~~~~~~~~~~
arch/riscv/include/asm/io.h:60:68: note: expanded from macro 'outw'
#define outw(v,c) ({ __io_pbw(); writew_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); })
~~~~~~~~~~ ^
arch/riscv/include/asm/mmio.h:92:76: note: expanded from macro 'writew_cpu'
#define writew_cpu(v, c) ((void)__raw_writew((__force u16)cpu_to_le16(v), (c)))
^
In file included from arch/riscv/kernel/probes/kprobes.c:3:
In file included from include/linux/kprobes.h:29:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:149:
include/asm-generic/io.h:596:2: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
outl(value, addr);
^~~~~~~~~~~~~~~~~
arch/riscv/include/asm/io.h:61:68: note: expanded from macro 'outl'
#define outl(v,c) ({ __io_pbw(); writel_cpu((v),(void*)(PCI_IOBASE + (c))); __io_paw(); })
~~~~~~~~~~ ^
arch/riscv/include/asm/mmio.h:93:76: note: expanded from macro 'writel_cpu'
#define writel_cpu(v, c) ((void)__raw_writel((__force u32)cpu_to_le32(v), (c)))
^
In file included from arch/riscv/kernel/probes/kprobes.c:3:
In file included from include/linux/kprobes.h:29:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:149:
include/asm-generic/io.h:1005:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
~~~~~~~~~~ ^
>> arch/riscv/kernel/probes/kprobes.c:284:12: error: no member named 'fault_handler' in 'struct kprobe'
if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr))
~~~ ^
arch/riscv/kernel/probes/kprobes.c:284:34: error: no member named 'fault_handler' in 'struct kprobe'
if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr))
~~~ ^
7 warnings and 2 errors generated.
vim +284 arch/riscv/kernel/probes/kprobes.c
c22b0bcb1dd024 Guo Ren 2020-12-17 242
c22b0bcb1dd024 Guo Ren 2020-12-17 243 int __kprobes kprobe_fault_handler(struct pt_regs *regs, unsigned int trapnr)
c22b0bcb1dd024 Guo Ren 2020-12-17 244 {
c22b0bcb1dd024 Guo Ren 2020-12-17 245 struct kprobe *cur = kprobe_running();
c22b0bcb1dd024 Guo Ren 2020-12-17 246 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
c22b0bcb1dd024 Guo Ren 2020-12-17 247
c22b0bcb1dd024 Guo Ren 2020-12-17 248 switch (kcb->kprobe_status) {
c22b0bcb1dd024 Guo Ren 2020-12-17 249 case KPROBE_HIT_SS:
c22b0bcb1dd024 Guo Ren 2020-12-17 250 case KPROBE_REENTER:
c22b0bcb1dd024 Guo Ren 2020-12-17 251 /*
c22b0bcb1dd024 Guo Ren 2020-12-17 252 * We are here because the instruction being single
c22b0bcb1dd024 Guo Ren 2020-12-17 253 * stepped caused a page fault. We reset the current
c22b0bcb1dd024 Guo Ren 2020-12-17 254 * kprobe and the ip points back to the probe address
c22b0bcb1dd024 Guo Ren 2020-12-17 255 * and allow the page fault handler to continue as a
c22b0bcb1dd024 Guo Ren 2020-12-17 256 * normal page fault.
c22b0bcb1dd024 Guo Ren 2020-12-17 257 */
c22b0bcb1dd024 Guo Ren 2020-12-17 258 regs->epc = (unsigned long) cur->addr;
c22b0bcb1dd024 Guo Ren 2020-12-17 259 if (!instruction_pointer(regs))
c22b0bcb1dd024 Guo Ren 2020-12-17 260 BUG();
c22b0bcb1dd024 Guo Ren 2020-12-17 261
c22b0bcb1dd024 Guo Ren 2020-12-17 262 if (kcb->kprobe_status == KPROBE_REENTER)
c22b0bcb1dd024 Guo Ren 2020-12-17 263 restore_previous_kprobe(kcb);
c22b0bcb1dd024 Guo Ren 2020-12-17 264 else
c22b0bcb1dd024 Guo Ren 2020-12-17 265 reset_current_kprobe();
c22b0bcb1dd024 Guo Ren 2020-12-17 266
c22b0bcb1dd024 Guo Ren 2020-12-17 267 break;
c22b0bcb1dd024 Guo Ren 2020-12-17 268 case KPROBE_HIT_ACTIVE:
c22b0bcb1dd024 Guo Ren 2020-12-17 269 case KPROBE_HIT_SSDONE:
c22b0bcb1dd024 Guo Ren 2020-12-17 270 /*
c22b0bcb1dd024 Guo Ren 2020-12-17 271 * We increment the nmissed count for accounting,
c22b0bcb1dd024 Guo Ren 2020-12-17 272 * we can also use npre/npostfault count for accounting
c22b0bcb1dd024 Guo Ren 2020-12-17 273 * these specific fault cases.
c22b0bcb1dd024 Guo Ren 2020-12-17 274 */
c22b0bcb1dd024 Guo Ren 2020-12-17 275 kprobes_inc_nmissed_count(cur);
c22b0bcb1dd024 Guo Ren 2020-12-17 276
c22b0bcb1dd024 Guo Ren 2020-12-17 277 /*
c22b0bcb1dd024 Guo Ren 2020-12-17 278 * We come here because instructions in the pre/post
c22b0bcb1dd024 Guo Ren 2020-12-17 279 * handler caused the page_fault, this could happen
c22b0bcb1dd024 Guo Ren 2020-12-17 280 * if handler tries to access user space by
c22b0bcb1dd024 Guo Ren 2020-12-17 281 * copy_from_user(), get_user() etc. Let the
c22b0bcb1dd024 Guo Ren 2020-12-17 282 * user-specified handler try to fix it first.
c22b0bcb1dd024 Guo Ren 2020-12-17 283 */
c22b0bcb1dd024 Guo Ren 2020-12-17 @284 if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr))
c22b0bcb1dd024 Guo Ren 2020-12-17 285 return 1;
c22b0bcb1dd024 Guo Ren 2020-12-17 286
c22b0bcb1dd024 Guo Ren 2020-12-17 287 /*
c22b0bcb1dd024 Guo Ren 2020-12-17 288 * In case the user-specified fault handler returned
c22b0bcb1dd024 Guo Ren 2020-12-17 289 * zero, try to fix up.
c22b0bcb1dd024 Guo Ren 2020-12-17 290 */
c22b0bcb1dd024 Guo Ren 2020-12-17 291 if (fixup_exception(regs))
c22b0bcb1dd024 Guo Ren 2020-12-17 292 return 1;
c22b0bcb1dd024 Guo Ren 2020-12-17 293 }
c22b0bcb1dd024 Guo Ren 2020-12-17 294 return 0;
c22b0bcb1dd024 Guo Ren 2020-12-17 295 }
c22b0bcb1dd024 Guo Ren 2020-12-17 296
:::::: The code at line 284 was first introduced by commit
:::::: c22b0bcb1dd024cb9caad9230e3a387d8b061df5 riscv: Add kprobes supported
:::::: TO: Guo Ren <guoren@linux.alibaba.com>
:::::: CC: Palmer Dabbelt <palmerdabbelt@google.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 25903 bytes --]
next reply other threads:[~2021-03-03 21:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-03 21:17 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-03-08 21:05 [peterz-queue:perf/kprobes 1/2] arch/riscv/kernel/probes/kprobes.c:284:12: error: no member named 'fault_handler' in 'struct kprobe' kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202103040512.PymQE1YA-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.