From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============8429985932097400255==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH 2/2] tracing: Add a verifier to check string pointers for trace events Date: Sat, 27 Feb 2021 05:22:01 +0800 Message-ID: <202102270525.Q7ZG35uT-lkp@intel.com> In-Reply-To: <20210226190705.871102407@goodmis.org> List-Id: --===============8429985932097400255== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Steven, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on next-20210226] [cannot apply to tip/perf/core linux/master hnaz-linux-mm/master v5.11] [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] url: https://github.com/0day-ci/linux/commits/Steven-Rostedt/tracing-Det= ect-unsafe-dereferencing-of-pointers-from-trace-events/20210227-030901 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = 8b83369ddcb3fb9cab5c1088987ce477565bb630 config: arc-randconfig-r022-20210226 (attached as .config) compiler: arceb-elf-gcc (GCC) 9.3.0 reproduce (this is a W=3D1 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/0day-ci/linux/commit/43930a0d94b958cf1fdd82d4a= e4cc97fc5d1143b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Steven-Rostedt/tracing-Detect-unsa= fe-dereferencing-of-pointers-from-trace-events/20210227-030901 git checkout 43930a0d94b958cf1fdd82d4ae4cc97fc5d1143b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = ARCH=3Darc = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): kernel/trace/trace.c: In function 'trace_check_vprintf': >> kernel/trace/trace.c:3662:3: warning: function 'trace_check_vprintf' mig= ht be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=3D= format] 3662 | trace_seq_vprintf(&iter->seq, iter->fmt, ap); | ^~~~~~~~~~~~~~~~~ kernel/trace/trace.c:3699:3: warning: function 'trace_check_vprintf' mig= ht be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=3D= format] 3699 | trace_seq_vprintf(&iter->seq, p, ap); | ^~~~~~~~~~~~~~~~~ At top level: kernel/trace/trace.c:1683:37: warning: 'tracing_max_lat_fops' defined bu= t not used [-Wunused-const-variable=3D] 1683 | static const struct file_operations tracing_max_lat_fops; | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/perf_event.h:25, from include/linux/hw_breakpoint.h:5, from kernel/trace/trace.h:15, from kernel/trace/trace.c:52: arch/arc/include/asm/perf_event.h:126:23: warning: 'arc_pmu_cache_map' d= efined but not used [-Wunused-const-variable=3D] 126 | static const unsigned arc_pmu_cache_map[C(MAX)][C(OP_MAX)][C(RES= ULT_MAX)] =3D { | ^~~~~~~~~~~~~~~~~ arch/arc/include/asm/perf_event.h:91:27: warning: 'arc_pmu_ev_hw_map' de= fined but not used [-Wunused-const-variable=3D] 91 | static const char * const arc_pmu_ev_hw_map[] =3D { | ^~~~~~~~~~~~~~~~~ vim +3662 kernel/trace/trace.c 3596 = 3597 /** 3598 * trace_check_vprintf - Check dereferenced strings while writing to= the seq buffer 3599 * @iter: The iterator that holds the seq buffer and the event being= printed 3600 * @fmt: The format used to print the event 3601 * @ap: The va_list holding the data to print from @fmt. 3602 * 3603 * This writes the data into the @iter->seq buffer using the data fr= om 3604 * @fmt and @ap. If the format has a %s, then the source of the stri= ng 3605 * is examined to make sure it is safe to print, otherwise it will 3606 * warn and print "[UNSAFE MEMORY]" in place of the dereferenced str= ing 3607 * pointer. 3608 */ 3609 void trace_check_vprintf(struct trace_iterator *iter, const char *fm= t, 3610 va_list ap) 3611 { 3612 const char *p =3D fmt; 3613 const char *str; 3614 int i, j; 3615 = 3616 if (WARN_ON_ONCE(!fmt)) 3617 return; 3618 = 3619 /* Don't bother checking when doing a ftrace_dump() */ 3620 if (iter->fmt =3D=3D static_fmt_buf) 3621 goto print; 3622 = 3623 while (*p) { 3624 j =3D 0; 3625 = 3626 /* We only care about %s and variants */ 3627 for (i =3D 0; p[i]; i++) { 3628 if (i + 1 >=3D iter->fmt_size) { 3629 /* 3630 * If we can't expand the copy buffer, 3631 * just print it. 3632 */ 3633 if (!trace_iter_expand_format(iter)) 3634 goto print; 3635 } 3636 = 3637 if (p[i] =3D=3D '\\' && p[i+1]) { 3638 i++; 3639 continue; 3640 } 3641 if (p[i] =3D=3D '%') { 3642 /* Need to test cases like %08.*s */ 3643 for (j =3D 1; p[i+j]; j++) { 3644 if (isdigit(p[i+j]) || 3645 p[i+j] =3D=3D '*' || 3646 p[i+j] =3D=3D '.') 3647 continue; 3648 break; 3649 } 3650 if (p[i+j] =3D=3D 's') 3651 break; 3652 } 3653 j =3D 0; 3654 } 3655 /* If no %s found then just print normally */ 3656 if (!p[i]) 3657 break; 3658 = 3659 /* Copy up to the %s, and print that */ 3660 strncpy(iter->fmt, p, i); 3661 iter->fmt[i] =3D '\0'; > 3662 trace_seq_vprintf(&iter->seq, iter->fmt, ap); 3663 = 3664 /* The ap now points to the string data of the %s */ 3665 str =3D va_arg(ap, const char *); 3666 = 3667 /* 3668 * If you hit this warning, it is likely that the 3669 * trace event in question used %s on a string that 3670 * was saved at the time of the event, but may not be 3671 * around when the trace is read. Use __string(), 3672 * __assign_str() and __get_str() helpers in the TRACE_EVENT() 3673 * instead. See samples/trace_events/trace-events-sample.h 3674 * for reference. 3675 */ 3676 if (WARN_ON_ONCE(!trace_safe_str(iter, str))) { 3677 int ret; 3678 = 3679 /* Try to safely read the string */ 3680 ret =3D strncpy_from_kernel_nofault(iter->fmt, str, 3681 iter->fmt_size); 3682 if (ret < 0) 3683 trace_seq_printf(&iter->seq, "(0x%px)", str); 3684 else 3685 trace_seq_printf(&iter->seq, "(0x%px:%s)", 3686 str, iter->fmt); 3687 str =3D "[UNSAFE-MEMORY]"; 3688 strcpy(iter->fmt, "%s"); 3689 } else { 3690 strncpy(iter->fmt, p + i, j + 1); 3691 iter->fmt[j+1] =3D '\0'; 3692 } 3693 trace_seq_printf(&iter->seq, iter->fmt, str); 3694 = 3695 p +=3D i + j + 1; 3696 } 3697 print: 3698 if (*p) 3699 trace_seq_vprintf(&iter->seq, p, ap); 3700 } 3701 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============8429985932097400255== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 l+2rImaRUMse3P8BNum9ja8rAQA= --===============8429985932097400255==--