From: kernel test robot <lkp@intel.com>
To: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
linux-trace-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>,
mhiramat@kernel.org, Florent Revest <revest@chromium.org>,
Mark Rutland <mark.rutland@arm.com>,
Will Deacon <will@kernel.org>
Subject: Re: [PATCH v2 09/10] tracing/probes: Add fprobe events for tracing function entry and exit.
Date: Wed, 1 Feb 2023 15:27:49 +0800 [thread overview]
Message-ID: <202302011530.7vm4O8Ro-lkp@intel.com> (raw)
In-Reply-To: <167518178446.336834.4654027409699647726.stgit@mhiramat.roam.corp.google.com>
Hi Masami,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
[also build test WARNING on bpf/master shuah-kselftest/next shuah-kselftest/fixes linus/master v6.2-rc6]
[cannot apply to rostedt-trace/for-next rostedt-trace/for-next-urgent]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Masami-Hiramatsu-Google/fprobe-Pass-entry_data-to-handlers/20230201-001911
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/r/167518178446.336834.4654027409699647726.stgit%40mhiramat.roam.corp.google.com
patch subject: [PATCH v2 09/10] tracing/probes: Add fprobe events for tracing function entry and exit.
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20230201/202302011530.7vm4O8Ro-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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
# https://github.com/intel-lab-lkp/linux/commit/90de2b114484f12e2645d2beb964b7d230c9c705
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Masami-Hiramatsu-Google/fprobe-Pass-entry_data-to-handlers/20230201-001911
git checkout 90de2b114484f12e2645d2beb964b7d230c9c705
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash kernel/trace/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> kernel/trace/trace_probe.c:394:32: warning: use of logical '||' with constant operand [-Wconstant-logical-operand]
if (flags & (TPARG_FL_TPOINT || TPARG_FL_FPROBE)) {
^ ~~~~~~~~~~~~~~~
kernel/trace/trace_probe.c:394:32: note: use '|' for a bitwise operation
if (flags & (TPARG_FL_TPOINT || TPARG_FL_FPROBE)) {
^~
|
1 warning generated.
vim +394 kernel/trace/trace_probe.c
374
375 /* Recursive argument parser */
376 static int
377 parse_probe_arg(char *arg, const struct fetch_type *type,
378 struct fetch_insn **pcode, struct fetch_insn *end,
379 unsigned int flags, int offs)
380 {
381 struct fetch_insn *code = *pcode;
382 unsigned long param;
383 int deref = FETCH_OP_DEREF;
384 long offset = 0;
385 char *tmp;
386 int ret = 0;
387
388 switch (arg[0]) {
389 case '$':
390 ret = parse_probe_vars(arg + 1, type, code, flags, offs);
391 break;
392
393 case '%': /* named register */
> 394 if (flags & (TPARG_FL_TPOINT || TPARG_FL_FPROBE)) {
395 /* eprobe and fprobe do not handle registers */
396 trace_probe_log_err(offs, BAD_VAR);
397 break;
398 }
399 ret = regs_query_register_offset(arg + 1);
400 if (ret >= 0) {
401 code->op = FETCH_OP_REG;
402 code->param = (unsigned int)ret;
403 ret = 0;
404 } else
405 trace_probe_log_err(offs, BAD_REG_NAME);
406 break;
407
408 case '@': /* memory, file-offset or symbol */
409 if (isdigit(arg[1])) {
410 ret = kstrtoul(arg + 1, 0, ¶m);
411 if (ret) {
412 trace_probe_log_err(offs, BAD_MEM_ADDR);
413 break;
414 }
415 /* load address */
416 code->op = FETCH_OP_IMM;
417 code->immediate = param;
418 } else if (arg[1] == '+') {
419 /* kprobes don't support file offsets */
420 if (flags & TPARG_FL_KERNEL) {
421 trace_probe_log_err(offs, FILE_ON_KPROBE);
422 return -EINVAL;
423 }
424 ret = kstrtol(arg + 2, 0, &offset);
425 if (ret) {
426 trace_probe_log_err(offs, BAD_FILE_OFFS);
427 break;
428 }
429
430 code->op = FETCH_OP_FOFFS;
431 code->immediate = (unsigned long)offset; // imm64?
432 } else {
433 /* uprobes don't support symbols */
434 if (!(flags & TPARG_FL_KERNEL)) {
435 trace_probe_log_err(offs, SYM_ON_UPROBE);
436 return -EINVAL;
437 }
438 /* Preserve symbol for updating */
439 code->op = FETCH_NOP_SYMBOL;
440 code->data = kstrdup(arg + 1, GFP_KERNEL);
441 if (!code->data)
442 return -ENOMEM;
443 if (++code == end) {
444 trace_probe_log_err(offs, TOO_MANY_OPS);
445 return -EINVAL;
446 }
447 code->op = FETCH_OP_IMM;
448 code->immediate = 0;
449 }
450 /* These are fetching from memory */
451 if (++code == end) {
452 trace_probe_log_err(offs, TOO_MANY_OPS);
453 return -EINVAL;
454 }
455 *pcode = code;
456 code->op = FETCH_OP_DEREF;
457 code->offset = offset;
458 break;
459
460 case '+': /* deref memory */
461 case '-':
462 if (arg[1] == 'u') {
463 deref = FETCH_OP_UDEREF;
464 arg[1] = arg[0];
465 arg++;
466 }
467 if (arg[0] == '+')
468 arg++; /* Skip '+', because kstrtol() rejects it. */
469 tmp = strchr(arg, '(');
470 if (!tmp) {
471 trace_probe_log_err(offs, DEREF_NEED_BRACE);
472 return -EINVAL;
473 }
474 *tmp = '\0';
475 ret = kstrtol(arg, 0, &offset);
476 if (ret) {
477 trace_probe_log_err(offs, BAD_DEREF_OFFS);
478 break;
479 }
480 offs += (tmp + 1 - arg) + (arg[0] != '-' ? 1 : 0);
481 arg = tmp + 1;
482 tmp = strrchr(arg, ')');
483 if (!tmp) {
484 trace_probe_log_err(offs + strlen(arg),
485 DEREF_OPEN_BRACE);
486 return -EINVAL;
487 } else {
488 const struct fetch_type *t2 = find_fetch_type(NULL, flags);
489
490 *tmp = '\0';
491 ret = parse_probe_arg(arg, t2, &code, end, flags, offs);
492 if (ret)
493 break;
494 if (code->op == FETCH_OP_COMM ||
495 code->op == FETCH_OP_DATA) {
496 trace_probe_log_err(offs, COMM_CANT_DEREF);
497 return -EINVAL;
498 }
499 if (++code == end) {
500 trace_probe_log_err(offs, TOO_MANY_OPS);
501 return -EINVAL;
502 }
503 *pcode = code;
504
505 code->op = deref;
506 code->offset = offset;
507 }
508 break;
509 case '\\': /* Immediate value */
510 if (arg[1] == '"') { /* Immediate string */
511 ret = __parse_imm_string(arg + 2, &tmp, offs + 2);
512 if (ret)
513 break;
514 code->op = FETCH_OP_DATA;
515 code->data = tmp;
516 } else {
517 ret = str_to_immediate(arg + 1, &code->immediate);
518 if (ret)
519 trace_probe_log_err(offs + 1, BAD_IMM);
520 else
521 code->op = FETCH_OP_IMM;
522 }
523 break;
524 }
525 if (!ret && code->op == FETCH_OP_NOP) {
526 /* Parsed, but do not find fetch method */
527 trace_probe_log_err(offs, BAD_FETCH_ARG);
528 ret = -EINVAL;
529 }
530 return ret;
531 }
532
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
next prev parent reply other threads:[~2023-02-01 7:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-31 16:15 [PATCH v2 00/10] tracing: Add fprobe events Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 01/10] fprobe: Pass entry_data to handlers Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 02/10] lib/test_fprobe: Add private entry_data testcases Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 03/10] fprobe: Add nr_maxactive to specify rethook_node pool size Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 04/10] lib/test_fprobe: Add a test case for nr_maxactive Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 05/10] fprobe: Skip exit_handler if entry_handler returns !0 Masami Hiramatsu (Google)
2023-01-31 16:15 ` [PATCH v2 06/10] lib/test_fprobe: Add a testcase for skipping exit_handler Masami Hiramatsu (Google)
2023-01-31 16:16 ` [PATCH v2 07/10] docs: tracing: Update fprobe documentation Masami Hiramatsu (Google)
2023-01-31 16:16 ` [PATCH v2 08/10] fprobe: Pass return address to the handlers Masami Hiramatsu (Google)
2023-01-31 16:16 ` [PATCH v2 09/10] tracing/probes: Add fprobe events for tracing function entry and exit Masami Hiramatsu (Google)
2023-02-01 7:27 ` kernel test robot [this message]
2023-02-01 12:42 ` Masami Hiramatsu
2023-01-31 16:16 ` [PATCH v2 10/10] selftests/ftrace: Add fprobe related testcases Masami Hiramatsu (Google)
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=202302011530.7vm4O8Ro-lkp@intel.com \
--to=lkp@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=mark.rutland@arm.com \
--cc=mhiramat@kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=revest@chromium.org \
--cc=rostedt@goodmis.org \
--cc=will@kernel.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.