tree:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
locking/jump_label
head: bc3894f26c7917aca4f820baa8b3273696466b7d
commit: 1629d66e8cb113f387ed66623208033c82cdc4b5 [15/39] x86/kprobes: Convert to
text-patching.h
config: i386-defconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
git checkout 1629d66e8cb113f387ed66623208033c82cdc4b5
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
arch/x86/kernel/kprobes/core.c: In function 'can_probe':
> arch/x86/kernel/kprobes/core.c:304:31: error:
'INT3_INSN_OPCODED' undeclared (first use in this function); did you mean
'INT3_INSN_OPCODE'?
if (insn.opcode.bytes[0] == INT3_INSN_OPCODED)
^~~~~~~~~~~~~~~~~
INT3_INSN_OPCODE
arch/x86/kernel/kprobes/core.c:304:31: note: each undeclared identifier is reported
only once for each function it appears in
arch/x86/kernel/kprobes/core.c: In function 'setup_singlestep':
arch/x86/kernel/kprobes/core.c:612:19: error: 'INT3_INSN_OPCODED' undeclared
(first use in this function); did you mean 'INT3_INSN_OPCODE'?
if (p->opcode == INT3_INSN_OPCODED)
^~~~~~~~~~~~~~~~~
INT3_INSN_OPCODE
arch/x86/kernel/kprobes/core.c: In function 'kprobe_int3_handler':
arch/x86/kernel/kprobes/core.c:698:22: error: 'INT3_INSN_OPCODED' undeclared
(first use in this function); did you mean 'INT3_INSN_OPCODE'?
} else if (*addr != INT3_INSN_OPCODED) {
^~~~~~~~~~~~~~~~~
INT3_INSN_OPCODE
vim +304 arch/x86/kernel/kprobes/core.c
272
273 /* Check if paddr is at an instruction boundary */
274 static int can_probe(unsigned long paddr)
275 {
276 unsigned long addr, __addr, offset = 0;
277 struct insn insn;
278 kprobe_opcode_t buf[MAX_INSN_SIZE];
279
280 if (!kallsyms_lookup_size_offset(paddr, NULL, &offset))
281 return 0;
282
283 /* Decode instructions */
284 addr = paddr - offset;
285 while (addr < paddr) {
286 /*
287 * Check if the instruction has been modified by another
288 * kprobe, in which case we replace the breakpoint by the
289 * original instruction in our buffer.
290 * Also, jump optimization will change the breakpoint to
291 * relative-jump. Since the relative-jump itself is
292 * normally used, we just go through if there is no kprobe.
293 */
294 __addr = recover_probed_instruction(buf, addr);
295 if (!__addr)
296 return 0;
297 kernel_insn_init(&insn, (void *)__addr, MAX_INSN_SIZE);
298 insn_get_length(&insn);
299
300 /*
301 * Another debugging subsystem might insert this breakpoint.
302 * In that case, we can't recover it.
303 */
304 if (insn.opcode.bytes[0] == INT3_INSN_OPCODED)
305 return 0;
306 addr += insn.length;
307 }
308
309 return (addr == paddr);
310 }
311
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation