Message ID | 20240604212855.046127611@goodmis.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ftrace: Clean up and comment code | expand |
Hi Steven, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master v6.10-rc2 next-20240604] [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/Steven-Rostedt/ftrace-Rename-dup_hash-and-comment-it/20240605-053138 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20240604212855.046127611%40goodmis.org patch subject: [PATCH 4/5] ftrace: Convert "filter_hash" and "inc" to bool in ftrace_hash_rec_update_modify() config: s390-defconfig (https://download.01.org/0day-ci/archive/20240605/202406050838.7r32JzDI-lkp@intel.com/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project d7d2d4f53fc79b4b58e8d8d08151b577c3699d4a) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240605/202406050838.7r32JzDI-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202406050838.7r32JzDI-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from kernel/trace/ftrace.c:17: In file included from include/linux/stop_machine.h:5: In file included from include/linux/cpu.h:17: In file included from include/linux/node.h:18: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/s390/include/asm/elf.h:173: In file included from arch/s390/include/asm/mmu_context.h:11: In file included from arch/s390/include/asm/pgalloc.h:18: In file included from include/linux/mm.h:2245: include/linux/vmstat.h:484:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 484 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 485 | item]; | ~~~~ include/linux/vmstat.h:491:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 491 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 492 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:498:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 498 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:503:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 503 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 504 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:512:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 512 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 513 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ In file included from kernel/trace/ftrace.c:18: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:93: include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 548 | val = __raw_readb(PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) | ^ include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16' 102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x)) | ^ In file included from kernel/trace/ftrace.c:18: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:93: include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu' 35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x)) | ^ include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ In file included from kernel/trace/ftrace.c:18: In file included from include/linux/clocksource.h:22: In file included from arch/s390/include/asm/io.h:93: include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 585 | __raw_writeb(value, PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:693:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 693 | readsb(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ include/asm-generic/io.h:701:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 701 | readsw(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ include/asm-generic/io.h:709:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 709 | readsl(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ include/asm-generic/io.h:718:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 718 | writesb(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ include/asm-generic/io.h:727:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 727 | writesw(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ include/asm-generic/io.h:736:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 736 | writesl(PCI_IOBASE + addr, buffer, count); | ~~~~~~~~~~ ^ >> kernel/trace/ftrace.c:1961:13: error: conflicting types for 'ftrace_hash_rec_disable_modify' 1961 | static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, | ^ kernel/trace/ftrace.c:1384:1: note: previous declaration is here 1384 | ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, int filter_hash); | ^ >> kernel/trace/ftrace.c:1967:13: error: conflicting types for 'ftrace_hash_rec_enable_modify' 1967 | static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, | ^ kernel/trace/ftrace.c:1386:1: note: previous declaration is here 1386 | ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, int filter_hash); | ^ 17 warnings and 2 errors generated. vim +/ftrace_hash_rec_disable_modify +1961 kernel/trace/ftrace.c 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1960) 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 @1961) static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, 5177364f840058a Steven Rostedt (Google 2024-06-04 1962) bool filter_hash) 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1963) { 5177364f840058a Steven Rostedt (Google 2024-06-04 1964) ftrace_hash_rec_update_modify(ops, filter_hash, false); 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1965) } 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1966) 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 @1967) static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, 5177364f840058a Steven Rostedt (Google 2024-06-04 1968) bool filter_hash) 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1969) { 5177364f840058a Steven Rostedt (Google 2024-06-04 1970) ftrace_hash_rec_update_modify(ops, filter_hash, true); 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1971) } 84261912ebee412 Steven Rostedt (Red Hat 2014-08-18 1972)
On Wed, 5 Jun 2024 09:12:57 +0800 kernel test robot <lkp@intel.com> wrote: > >> kernel/trace/ftrace.c:1961:13: error: conflicting types for 'ftrace_hash_rec_disable_modify' > 1961 | static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, > | ^ > kernel/trace/ftrace.c:1384:1: note: previous declaration is here > 1384 | ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, int filter_hash); > | ^ > >> kernel/trace/ftrace.c:1967:13: error: conflicting types for 'ftrace_hash_rec_enable_modify' > 1967 | static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, Of course these static functions have prototypes to be used earlier. Bah! -- Steve
Hi Steven, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master v6.10-rc2 next-20240604] [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/Steven-Rostedt/ftrace-Rename-dup_hash-and-comment-it/20240605-053138 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20240604212855.046127611%40goodmis.org patch subject: [PATCH 4/5] ftrace: Convert "filter_hash" and "inc" to bool in ftrace_hash_rec_update_modify() config: i386-buildonly-randconfig-004-20240605 (https://download.01.org/0day-ci/archive/20240605/202406051211.TA5OOyjM-lkp@intel.com/config) compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240605/202406051211.TA5OOyjM-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202406051211.TA5OOyjM-lkp@intel.com/ All error/warnings (new ones prefixed by >>): >> kernel/trace/ftrace.c:1961:13: error: conflicting types for 'ftrace_hash_rec_disable_modify'; have 'void(struct ftrace_ops *, bool)' {aka 'void(struct ftrace_ops *, _Bool)'} 1961 | static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/trace/ftrace.c:1384:1: note: previous declaration of 'ftrace_hash_rec_disable_modify' with type 'void(struct ftrace_ops *, int)' 1384 | ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, int filter_hash); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> kernel/trace/ftrace.c:1967:13: error: conflicting types for 'ftrace_hash_rec_enable_modify'; have 'void(struct ftrace_ops *, bool)' {aka 'void(struct ftrace_ops *, _Bool)'} 1967 | static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/trace/ftrace.c:1386:1: note: previous declaration of 'ftrace_hash_rec_enable_modify' with type 'void(struct ftrace_ops *, int)' 1386 | ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, int filter_hash); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> kernel/trace/ftrace.c:1384:1: warning: 'ftrace_hash_rec_disable_modify' used but never defined 1384 | ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, int filter_hash); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> kernel/trace/ftrace.c:1386:1: warning: 'ftrace_hash_rec_enable_modify' used but never defined 1386 | ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, int filter_hash); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> kernel/trace/ftrace.c:1967:13: warning: 'ftrace_hash_rec_enable_modify' defined but not used [-Wunused-function] 1967 | static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> kernel/trace/ftrace.c:1961:13: warning: 'ftrace_hash_rec_disable_modify' defined but not used [-Wunused-function] 1961 | static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +1961 kernel/trace/ftrace.c 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1960) 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 @1961) static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, 5177364f840058 Steven Rostedt (Google 2024-06-04 1962) bool filter_hash) 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1963) { 5177364f840058 Steven Rostedt (Google 2024-06-04 1964) ftrace_hash_rec_update_modify(ops, filter_hash, false); 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1965) } 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1966) 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 @1967) static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, 5177364f840058 Steven Rostedt (Google 2024-06-04 1968) bool filter_hash) 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1969) { 5177364f840058 Steven Rostedt (Google 2024-06-04 1970) ftrace_hash_rec_update_modify(ops, filter_hash, true); 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1971) } 84261912ebee41 Steven Rostedt (Red Hat 2014-08-18 1972)
On Tue, Jun 04, 2024 at 05:28:21PM -0400, Steven Rostedt wrote: > From: "Steven Rostedt (Google)" <rostedt@goodmis.org> > > The parameters "filter_hash" and "inc" in the function > ftrace_hash_rec_update_modify() are boolean. Change them to be such. > > Also add documentation to what the function does. > > Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Aside from the issue with forward declarations that need to be updated, this looks good to me, so with that fixed: Acked-by: Mark Rutland <mark.rutland@arm.com> Mark. > --- > kernel/trace/ftrace.c | 33 ++++++++++++++++++++++++++++----- > 1 file changed, 28 insertions(+), 5 deletions(-) > > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c > index de652201c86c..021024164938 100644 > --- a/kernel/trace/ftrace.c > +++ b/kernel/trace/ftrace.c > @@ -1915,8 +1915,31 @@ static bool ftrace_hash_rec_enable(struct ftrace_ops *ops) > return __ftrace_hash_rec_update(ops, true, 1); > } > > +/* > + * This function will update what functions @ops traces when its filter > + * changes. @filter_hash is set to true when modifying the filter_hash > + * and set to false when modifying the notrace_hash. > + * > + * For example, if the user does: echo schedule > set_ftrace_filter > + * that would call: ftrace_hash_rec_update_modify(ops, true, true); > + * > + * For: echo schedule >> set_ftrace_notrace > + * That would call: ftrace_hash_rec_enable(ops, false, true); > + * > + * The @inc states if the @ops callbacks are going to be added or removed. > + * The dyn_ftrace records are update via: > + * > + * ftrace_hash_rec_disable_modify(ops, filter_hash); > + * ops->hash = new_hash > + * ftrace_hash_rec_enable_modify(ops, filter_hash); > + * > + * Where the @ops is removed from all the records it is tracing using > + * its old hash. The @ops hash is updated to the new hash, and then > + * the @ops is added back to the records so that it is tracing all > + * the new functions. > + */ > static void ftrace_hash_rec_update_modify(struct ftrace_ops *ops, > - int filter_hash, int inc) > + bool filter_hash, bool inc) > { > struct ftrace_ops *op; > > @@ -1939,15 +1962,15 @@ static void ftrace_hash_rec_update_modify(struct ftrace_ops *ops, > } > > static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, > - int filter_hash) > + bool filter_hash) > { > - ftrace_hash_rec_update_modify(ops, filter_hash, 0); > + ftrace_hash_rec_update_modify(ops, filter_hash, false); > } > > static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, > - int filter_hash) > + bool filter_hash) > { > - ftrace_hash_rec_update_modify(ops, filter_hash, 1); > + ftrace_hash_rec_update_modify(ops, filter_hash, true); > } > > /* > -- > 2.43.0 > >
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index de652201c86c..021024164938 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1915,8 +1915,31 @@ static bool ftrace_hash_rec_enable(struct ftrace_ops *ops) return __ftrace_hash_rec_update(ops, true, 1); } +/* + * This function will update what functions @ops traces when its filter + * changes. @filter_hash is set to true when modifying the filter_hash + * and set to false when modifying the notrace_hash. + * + * For example, if the user does: echo schedule > set_ftrace_filter + * that would call: ftrace_hash_rec_update_modify(ops, true, true); + * + * For: echo schedule >> set_ftrace_notrace + * That would call: ftrace_hash_rec_enable(ops, false, true); + * + * The @inc states if the @ops callbacks are going to be added or removed. + * The dyn_ftrace records are update via: + * + * ftrace_hash_rec_disable_modify(ops, filter_hash); + * ops->hash = new_hash + * ftrace_hash_rec_enable_modify(ops, filter_hash); + * + * Where the @ops is removed from all the records it is tracing using + * its old hash. The @ops hash is updated to the new hash, and then + * the @ops is added back to the records so that it is tracing all + * the new functions. + */ static void ftrace_hash_rec_update_modify(struct ftrace_ops *ops, - int filter_hash, int inc) + bool filter_hash, bool inc) { struct ftrace_ops *op; @@ -1939,15 +1962,15 @@ static void ftrace_hash_rec_update_modify(struct ftrace_ops *ops, } static void ftrace_hash_rec_disable_modify(struct ftrace_ops *ops, - int filter_hash) + bool filter_hash) { - ftrace_hash_rec_update_modify(ops, filter_hash, 0); + ftrace_hash_rec_update_modify(ops, filter_hash, false); } static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, - int filter_hash) + bool filter_hash) { - ftrace_hash_rec_update_modify(ops, filter_hash, 1); + ftrace_hash_rec_update_modify(ops, filter_hash, true); } /*